Bagikan melalui


Rekomendasi hosting Azure untuk aplikasi web ASP.NET Core

Petunjuk / Saran

Konten ini adalah kutipan dari eBook, Architect Modern Web Applications dengan ASP.NET Core dan Azure, tersedia di .NET Docs atau sebagai PDF gratis yang dapat diunduh yang dapat dibaca secara offline.

Arsitektur Aplikasi Web Modern dengan thumbnail sampul eBook ASP.NET Core dan Azure.

Pemimpin lini bisnis di mana-mana mengabaikan departemen TI untuk mendapatkan aplikasi dari cloud (juga dikenal sebagai SaaS) dan membayar mereka seperti berlangganan majalah. Dan ketika layanan tidak lagi diperlukan, mereka dapat membatalkan langganan tanpa ada peralatan yang terbuang sia-sia di sudut.
- Daryl Plummer, Analis Gartner

Apa pun kebutuhan dan arsitektur aplikasi Anda, Microsoft Azure dapat mendukungnya. Kebutuhan hosting Anda bisa sesingkat situs web statis atau aplikasi canggih yang terdiri dari puluhan layanan. Untuk aplikasi web monolitik inti ASP.NET dan layanan pendukung, ada beberapa konfigurasi terkenal yang direkomendasikan. Rekomendasi pada artikel ini dikelompokkan berdasarkan jenis sumber daya yang akan dihosting, baik aplikasi lengkap, proses individual, atau data.

Aplikasi web

Aplikasi web dapat dihosting dengan:

  • Aplikasi Web Layanan Aplikasi

  • Kontainer (beberapa opsi)

  • Virtual Machines (VM)

Dari jumlah tersebut, App Service Web Apps adalah pendekatan yang direkomendasikan untuk sebagian besar skenario, termasuk aplikasi berbasis kontainer sederhana. Untuk arsitektur layanan mikro, pertimbangkan pendekatan berbasis kontainer. Jika Anda memerlukan kontrol lebih besar atas komputer yang menjalankan aplikasi Anda, pertimbangkan Azure Virtual Machines.

Aplikasi Web Layanan Aplikasi

App Service Web Apps menawarkan platform terkelola penuh yang dioptimalkan untuk menghosting aplikasi web. Ini adalah penawaran platform as a service (PaaS) yang memungkinkan Anda fokus pada logika bisnis Anda, sementara Azure mengurus infrastruktur yang diperlukan untuk menjalankan dan menskalakan aplikasi. Beberapa fitur utama App Service Web Apps:

  • Pengoptimalan DevOps (integrasi dan pengiriman berkelanjutan, beberapa lingkungan, pengujian A/B, dukungan skrip).

  • Skala global dan ketersediaan tinggi.

  • Koneksi ke platform SaaS dan data lokal Anda.

  • Keamanan dan kepatuhan.

  • Integrasi Visual Studio.

Azure App Service adalah pilihan terbaik untuk sebagian besar aplikasi web. Penyebaran dan manajemen diintegrasikan ke dalam platform, situs dapat menskalakan dengan cepat untuk menangani beban lalu lintas yang tinggi, dan penyeimbangan beban bawaan dan manajer lalu lintas memberikan ketersediaan tinggi. Anda dapat memindahkan situs yang ada ke Azure App Service dengan mudah menggunakan alat migrasi online. Anda dapat menggunakan aplikasi sumber terbuka dari Galeri Aplikasi Web, atau membuat situs baru menggunakan kerangka kerja dan alat pilihan Anda. Fitur WebJobs memudahkan untuk menambahkan pemrosesan pekerjaan latar belakang ke aplikasi web App Service Anda. Jika Anda memiliki aplikasi ASP.NET yang sudah ada yang dihosting secara lokal menggunakan database lokal, ada jalur yang jelas untuk bermigrasi. Anda dapat menggunakan App Service Web App dengan Azure SQL Database (atau mengamankan akses ke server database lokal Anda, jika diinginkan).

Strategi migrasi yang direkomendasikan untuk aplikasi .NET lokal ke Azure App Service

Dalam kebanyakan kasus, berpindah dari aplikasi ASP.NET yang dihosting secara lokal ke Aplikasi Web App Service adalah proses yang mudah. Sedikit atau tidak ada modifikasi yang harus diperlukan dari aplikasi itu sendiri, dan dapat dengan cepat mulai memanfaatkan banyak fitur yang ditawarkan Azure App Service Web Apps.

Selain aplikasi yang tidak dioptimalkan untuk cloud, Azure App Service Web Apps adalah solusi yang sangat baik untuk banyak aplikasi monolitik sederhana (non-terdistribusi), seperti banyak aplikasi ASP.NET Core. Dalam pendekatan ini, arsitekturnya dasar dan sederhana untuk dipahami dan dikelola:

Arsitektur Azure dasar

Sejumlah kecil sumber daya dalam satu grup sumber daya biasanya cukup untuk mengelola aplikasi tersebut. Aplikasi yang biasanya disebarkan sebagai satu unit, daripada aplikasi yang terdiri dari banyak proses terpisah, adalah kandidat yang baik untuk pendekatan arsitektur dasar ini. Meskipun sederhana secara arsitektur, pendekatan ini masih memungkinkan aplikasi yang dihosting untuk meningkatkan skala (lebih banyak sumber daya per simpul) dan keluar (lebih banyak node yang dihosting) untuk memenuhi peningkatan permintaan. Dengan skala otomatis, aplikasi dapat dikonfigurasi untuk secara otomatis menyesuaikan jumlah simpul yang menghosting aplikasi berdasarkan permintaan dan beban rata-rata di seluruh simpul.

Layanan Aplikasi Web untuk Kontainer

Selain dukungan untuk menghosting aplikasi web secara langsung, App Service Web Apps for Containers dapat digunakan untuk menjalankan aplikasi kontainer di Windows dan Linux. Dengan menggunakan layanan ini, Anda dapat dengan mudah menyebarkan dan menjalankan aplikasi kontainer yang dapat diskalakan dengan bisnis Anda. Aplikasi ini memiliki semua fitur App Service Web Apps yang tercantum di atas. Selain itu, Web Apps for Containers mendukung CI/CD yang disederhanakan dengan Docker Hub, Azure Container Registry, dan GitHub. Anda dapat menggunakan Azure DevOps untuk menentukan alur build dan penyebaran yang menerbitkan perubahan pada registri. Perubahan ini kemudian dapat diuji di lingkungan penahapan dan secara otomatis disebarkan ke produksi menggunakan slot penyebaran, memungkinkan peningkatan tanpa waktu henti. Menggulung balik ke versi sebelumnya dapat dilakukan dengan mudah.

Ada beberapa skenario di mana Web Apps for Containers paling masuk akal. Jika Anda memiliki aplikasi yang sudah ada yang dapat Anda kontainerkan, baik di kontainer Windows atau Linux, Anda dapat menghosting aplikasi ini dengan mudah menggunakan toolset ini. Cukup terbitkan kontainer Anda lalu konfigurasikan Web Apps untuk Kontainer untuk menarik versi terbaru gambar tersebut dari registri pilihan Anda. Ini adalah pendekatan "angkat dan geser" untuk bermigrasi dari model hosting aplikasi klasik ke model yang dioptimalkan cloud.

Memigrasikan aplikasi .NET lokal dalam kontainer ke Azure Web Apps untuk Kontainer

Pendekatan ini juga berfungsi dengan baik jika tim pengembangan Anda dapat pindah ke proses pengembangan berbasis kontainer. Proses iteratif "inner loop" dalam pengembangan aplikasi dengan kontainer mencakup pembangunan aplikasi menggunakan kontainer. Perubahan yang dilakukan pada kode serta konfigurasi kontainer didorong ke kontrol sumber, dan build otomatis bertanggung jawab untuk menerbitkan gambar kontainer baru ke registri seperti Docker Hub atau Azure Container Registry. Gambar-gambar ini kemudian digunakan sebagai dasar untuk pengembangan tambahan, serta untuk penyebaran ke produksi, seperti yang ditunjukkan dalam diagram berikut:

Alur Kerja Siklus Hidup DevOps Docker End to End

Mengembangkan dengan kontainer menawarkan banyak keuntungan, terutama ketika kontainer digunakan dalam produksi. Konfigurasi kontainer yang sama digunakan untuk menghosting aplikasi di setiap lingkungan tempat aplikasi berjalan, dari komputer pengembangan lokal untuk membangun dan menguji sistem ke produksi. Pendekatan ini sangat mengurangi kemungkinan cacat yang dihasilkan dari perbedaan konfigurasi mesin atau versi perangkat lunak. Pengembang juga dapat menggunakan alat apa pun yang paling produktif dengan mereka, termasuk sistem operasi, karena kontainer dapat berjalan pada OS apa pun. Dalam beberapa kasus, aplikasi terdistribusi yang melibatkan banyak kontainer mungkin sangat intensif sumber daya untuk dijalankan pada satu komputer pengembangan. Dalam skenario ini, mungkin masuk akal untuk meningkatkan ke menggunakan Kubernetes dan Azure Dev Spaces, yang tercakup di bagian berikutnya.

Karena bagian dari aplikasi yang lebih besar dipecah menjadi layanan mikro mereka sendiri yang lebih kecil dan independen, pola desain tambahan dapat digunakan untuk meningkatkan perilaku aplikasi. Alih-alih bekerja langsung dengan layanan individual, gateway API dapat menyederhanakan akses dan memisahkan klien dari ujung belakangnya. Memiliki layanan back end terpisah untuk front end yang berbeda juga memungkinkan layanan berkembang sejalan dengan konsumen mereka. Layanan umum dapat diakses melalui kontainer sidecar terpisah, yang mungkin mencakup pustaka konektivitas klien umum menggunakan pola ambassador.

Arsitektur sampel layanan mikro dengan beberapa pola desain umum yang dicatat.

Pelajari selengkapnya tentang pola desain yang perlu dipertimbangkan saat membangun sistem berbasis layanan mikro.

Azure Kubernetes Service

Azure Kubernetes Service (AKS) mengelola lingkungan Kubernetes yang dihosting, sehingga cepat dan mudah untuk menyebarkan dan mengelola aplikasi kontainer tanpa keahlian orkestrasi kontainer. Ini juga menghilangkan beban operasi dan pemeliharaan yang sedang berlangsung dengan menyediakan, meningkatkan, dan menskalakan sumber daya sesuai permintaan, tanpa membuat aplikasi Anda offline.

AKS mengurangi kompleksitas dan overhead operasional dalam mengelola kluster Kubernetes dengan membongkar sebagian besar tanggung jawab tersebut ke Azure. Sebagai layanan Kubernetes yang dihosting, Azure menangani tugas penting seperti pemantauan dan pemeliharaan kesehatan untuk Anda. Selain itu, Anda hanya membayar untuk node agen dalam kluster Anda, bukan untuk master. Sebagai layanan Kubernetes terkelola, AKS menyediakan:

  • Peningkatan dan patching versi Kubernetes otomatis.
  • Penskalakan kluster yang mudah.
  • Pemulihan mandiri penyediaan sarana kontrol (pengendali utama).
  • Penghematan biaya - bayar hanya untuk menjalankan simpul kumpulan agen.

Dengan Azure menangani manajemen simpul di kluster AKS, Anda tidak perlu lagi melakukan banyak tugas secara manual, seperti peningkatan kluster. Karena Azure menangani tugas pemeliharaan penting ini untuk Anda, AKS tidak menyediakan akses langsung (seperti dengan SSH) ke kluster.

Tim yang memanfaatkan AKS juga dapat memanfaatkan Azure Dev Spaces. Azure Dev Spaces membantu tim untuk fokus pada pengembangan dan iterasi cepat aplikasi layanan mikro mereka dengan memungkinkan tim untuk bekerja langsung dengan seluruh arsitektur layanan mikro atau aplikasi mereka yang berjalan di AKS. Azure Dev Spaces juga menyediakan cara untuk memperbarui bagian arsitektur layanan mikro Anda secara independen dalam isolasi tanpa memengaruhi kluster AKS lainnya atau pengembang lainnya.

Contoh alur kerja Azure Dev Spaces

Azure Dev Spaces:

  • Meminimalkan waktu penyiapan komputer lokal dan persyaratan sumber daya
  • Mengizinkan tim untuk melakukan iterasi dengan lebih cepat
  • Mengurangi jumlah lingkungan integrasi yang diperlukan oleh tim
  • Menghilangkan kebutuhan untuk mensimulasikan layanan tertentu dalam sistem terdistribusi saat mengembangkan/menguji

Pelajari selengkapnya tentang Azure Dev Spaces

Azure Virtual Machines

Jika Anda memiliki aplikasi yang sudah ada yang akan memerlukan modifikasi substansial untuk dijalankan di App Service, Anda dapat memilih Virtual Machines untuk menyederhanakan migrasi ke cloud. Namun, mengonfigurasi, mengamankan, dan memelihara VM dengan benar membutuhkan lebih banyak waktu dan keahlian IT dibandingkan dengan Azure App Service. Jika Anda mempertimbangkan Azure Virtual Machines, pastikan Anda memperhitungkan upaya pemeliharaan berkelanjutan yang diperlukan untuk menambal, memperbarui, dan mengelola lingkungan VM Anda. Azure Virtual Machines adalah infrastruktur sebagai layanan (IaaS), sedangkan App Service adalah PaaS. Anda juga harus mempertimbangkan apakah menyebarkan aplikasi Anda sebagai Kontainer Windows ke Aplikasi Web untuk Kontainer mungkin merupakan opsi yang layak untuk skenario Anda.

Proses logika

Proses logis individual yang dapat dipisahkan dari aplikasi lainnya dapat disebarkan secara independen ke Azure Functions dengan cara "tanpa server". Azure Functions memungkinkan Anda hanya menulis kode yang Anda butuhkan untuk masalah tertentu, tanpa khawatir tentang aplikasi atau infrastruktur untuk menjalankannya. Anda dapat memilih dari berbagai bahasa pemrograman, termasuk C#, F#, Node.js, Python, dan PHP, memungkinkan Anda memilih bahasa yang paling produktif untuk tugas yang ditangani. Seperti kebanyakan solusi berbasis cloud, Anda hanya membayar untuk jumlah waktu penggunaan Anda, dan Anda dapat mempercayai Azure Functions untuk meningkatkan skala sesuai kebutuhan.

Data Informasi

Azure menawarkan berbagai opsi penyimpanan data, sehingga aplikasi Anda dapat menggunakan penyedia data yang sesuai untuk data yang dimaksud.

Untuk data transaksional dan relasional, Azure SQL Databases adalah opsi terbaik. Untuk data yang sebagian besar dibaca dan membutuhkan performa tinggi, cache Redis yang didukung oleh Azure SQL Database adalah solusi yang baik.

Data JSON yang tidak terstruktur dapat disimpan dengan berbagai cara, dari kolom SQL Database hingga Blob atau Tabel di Azure Storage, hingga Azure Cosmos DB. Dari jumlah tersebut, Azure Cosmos DB menawarkan fungsionalitas kueri terbaik, dan merupakan opsi yang direkomendasikan untuk sejumlah besar dokumen berbasis JSON yang harus mendukung kueri.

Data berbasis perintah atau peristiwa sementara yang digunakan untuk mengatur perilaku aplikasi dapat menggunakan Azure Service Bus atau Azure Storage Queues. Azure Service Bus menawarkan lebih banyak fleksibilitas dan merupakan layanan yang direkomendasikan untuk olahpesan non-sepele di dalam dan di antara aplikasi.

Rekomendasi arsitektur

Persyaratan aplikasi Anda harus menentukan arsitekturnya. Ada banyak layanan Azure yang berbeda yang tersedia. Memilih yang tepat adalah keputusan penting. Microsoft menawarkan galeri arsitektur referensi untuk membantu mengidentifikasi arsitektur khas yang dioptimalkan untuk skenario umum. Anda mungkin menemukan arsitektur referensi yang sesuai dengan kebutuhan aplikasi Anda, atau setidaknya menawarkan titik awal.

Gambar 11-1 menunjukkan contoh arsitektur referensi. Diagram ini menjelaskan pendekatan arsitektur yang direkomendasikan untuk situs web sistem manajemen konten Sitecore yang dioptimalkan untuk pemasaran.

Gambar 11-1

Gambar 11-1. Arsitektur referensi situs web pemasaran Sitecore.

Referensi - Rekomendasi hosting Azure