Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mendukung penskalaan dinamis untuk statis. NETAplikasi kerangka
Gambaran Umum
Salah satu manfaat utama menggunakan cloud untuk aplikasi adalah elastisitas, atau kemampuan untuk menskalakan komputasi masuk atau keluar berdasarkan permintaan. Ini memungkinkan Anda untuk hanya membayar kapasitas komputasi yang Anda butuhkan, daripada menyediakan untuk penggunaan puncak. Cyber Monday, di mana pengecer online dapat dengan cepat mendapatkan lalu lintas berkali-kali lebih banyak dari biasanya (misalnya, ribuan persen dalam beberapa menit
Jika Anda membawa warisan. NETaplikasi web ke cloud (misalnya,ASP. NETAplikasi kerangka kerja berjalanIIS), kemampuan untuk dengan cepat menskalakan beban peternakan server yang seimbang mungkin sulit atau tidak mungkin karena sifat aplikasi yang stateful. Data sesi pengguna disimpan dalam memori aplikasi, biasanya dengan ASP. NETstatus sesi
Ini terbukti menantang secara operasional. Ketika peningkatan kapasitas diperlukan, Anda harus dengan sengaja menyediakan dan menambahkan server. Ini bisa menjadi proses yang lambat. Mengambil node keluar dari layanan jika terjadi penambalan atau kegagalan yang tidak terduga dapat menjadi masalah bagi pengalaman pengguna akhir, kehilangan status untuk semua pengguna yang terkait dengan node yang terpengaruh. Paling-paling, ini akan mengharuskan pengguna untuk masuk lagi.
Dengan memusatkan status sesi untukASP. NETaplikasi dan menerapkan aturan penskalaan otomatis ke warisan. ASP NETaplikasi, Anda dapat memanfaatkan elastisitas cloud dan berpotensi memanfaatkan penghematan biaya saat menjalankan aplikasi. Misalnya, Anda mendapatkan pengurangan biaya melalui skalabilitas komputasi, tetapi Anda juga dapat memilih dari berbagai model harga yang tersedia, seperti mengurangi penggunaan instans cadangan
Dua teknik umum termasuk menggunakan Amazon DynamoDB sebagai penyedia status sesi
Diagram berikut menunjukkan arsitektur yang menggunakan DynamoDB sebagai penyedia status sesi.
Diagram berikut menunjukkan arsitektur yang menggunakan ElastiCache (RedisOSS) sebagai penyedia status sesi.
Dampak biaya
Untuk menentukan manfaat penskalaan untuk aplikasi produksi, kami menyarankan Anda memodelkan permintaan Anda yang sebenarnya. Bagian ini membuat asumsi berikut untuk memodelkan aplikasi sampel:
-
Contoh yang ditambahkan dan dihapus dari rotasi identik dan tidak ada variasi ukuran instance yang diperkenalkan.
-
Pemanfaatan server tidak pernah turun di bawah dua server aktif untuk menjaga ketersediaan aplikasi yang tinggi.
-
Jumlah server berskala linier dengan lalu lintas (yaitu, lalu lintas dua kali lebih banyak akan membutuhkan komputasi dua kali lebih banyak).
-
Lalu lintas dimodelkan selama sebulan dalam peningkatan enam jam, dengan variasi intra-hari dan satu puncak lalu lintas abnormal (misalnya, penjualan promosi) untuk satu hari lalu lintas 10x. Lalu lintas akhir pekan dimodelkan pada pemanfaatan dasar.
-
Lalu lintas malam hari dimodelkan pada pemanfaatan dasar, sementara lalu lintas hari kerja dimodelkan pada pemanfaatan 4x.
-
Harga Instans Cadangan menggunakan harga satu tahun tanpa dimuka. Harga siang hari normal menggunakan harga sesuai permintaan sementara permintaan burst menggunakan harga Instans Spot.
Diagram berikut menggambarkan bagaimana model ini memanfaatkan elastisitas dalam a. NETaplikasi daripada penyediaan untuk penggunaan puncak. Ini menghasilkan penghematan sekitar 68 persen.
Jika Anda menggunakan DynamoDB sebagai mekanisme penyimpanan status sesi, maka gunakan parameter berikut:
Storage: 20GB Session Reads: 40 million Session Writes: 20 million Pricing Model: On demand
Perkiraan biaya bulanan untuk layanan ini adalah sekitar $35,00 per bulan.
Jika Anda menggunakan ElastiCache (RedisOSS) sebagai mekanisme penyimpanan status sesi, maka gunakan parameter berikut:
Number of Nodes: 3 Node size: cache.t4g.medium Pricing Model: 1y reserved
Perkiraan biaya bulanan untuk layanan ini adalah sekitar $91,00 per bulan.
Rekomendasi pengoptimalan biaya
Langkah pertama adalah mengimplementasikan status sesi dalam warisan. NETaplikasi. Jika Anda menggunakan ElastiCache mekanisme penyimpanan status Anda, ikuti panduan dari Apa yang ada AWS SDK for .NET di AWS SDK for .NET dokumentasi. Jika Anda menggunakan DynamoDB, ikuti panduan ElastiCache dari sebagai file. ASP NETToko Sesi
Jika aplikasi menggunakan InProcsesi untuk memulai, pastikan bahwa semua objek yang Anda rencanakan untuk disimpan dalam sesi dapat diserialkan. Untuk melakukan ini, gunakan SerializableAttribute
atribut untuk menghias kelas yang instance akan disimpan dalam sesi. Sebagai contoh:
[Serializable()] public class TestSimpleObject { public string SessionProperty {get;set;} }
Selain itu,. NETMachineKey
harus sama antara semua server yang digunakan. Ini biasanya terjadi ketika instance dibuat dari Amazon Machine Image (AMI) yang umum. Sebagai contoh:
<machineKey validationKey="some long hashed value" decryptionKey="another long hashed value" validation="SHA1"/>
Namun, penting untuk memastikan bahwa jika gambar dasar diubah, itu dikonfigurasi dengan yang sama. NETimage mesin (dapat dikonfigurasi pada tingkat IIS atau server). Untuk informasi lebih lanjut, lihat SystemWebSectionGroup. MachineKey
Terakhir, Anda harus menentukan mekanisme untuk menambahkan server ke grup Auto Scaling sebagai respons terhadap peristiwa penskalaan. Ada beberapa cara untuk mencapai ini. Kami merekomendasikan metode berikut untuk menerapkan dengan mulus. NETAplikasi kerangka kerja untuk EC2 instance dalam grup Auto Scaling:
-
Gunakan EC2Image Builder
untuk mengonfigurasi AMI yang berisi server dan aplikasi yang sepenuhnya dikonfigurasi. Anda kemudian dapat menggunakan ini AMI untuk mengonfigurasi template peluncuran grup Auto Scaling Anda. -
Gunakan AWS CodeDeploy
untuk menyebarkan aplikasi Anda. CodeDeploy memungkinkan integrasi langsung dengan Amazon EC2 Auto Scaling. Ini memberikan alternatif untuk membuat yang baru AMI untuk setiap rilis aplikasi.
Sumber daya tambahan
-
Membuat gambar dengan EC2 Image Builder (dokumentasi EC2 Image Builder)
-
Menyebarkan. NETAplikasi Web Menggunakan AWS CodeDeploy Layanan Tim Visual Studio
(Blog Alat AWS Pengembang)