Aplikasi web dasar

Azure App Service
Azure Key Vault
Azure Monitor
Azure SQL Database

Arsitektur ini menunjukkan komponen mendasar dari aplikasi web dasar. Anda dapat menggunakan arsitektur untuk membangun aplikasi web lalu menyesuaikan aplikasi dengan kebutuhan Anda.

Sistem

Diagram memperlihatkan arsitektur referensi untuk aplikasi web dasar di Azure.

Unduh file Visio arsitektur ini.

Komponen

  • Azure App Service adalah platform yang dikelola sepenuhnya untuk membuat dan menyebarkan aplikasi cloud. Ini memungkinkan Anda menentukan sekumpulan sumber daya komputasi untuk aplikasi web yang akan dijalankan, menyebarkan aplikasi web, dan mengonfigurasi slot penyebaran.
  • Slot penyebaran memungkinkan Anda menggelar penyebaran lalu menukarnya dengan penyebaran produksi. Dengan begitu, Anda menghindari penyebaran langsung ke produksi. Lihat bagian rekayasa dan penyebaran rilis di bawah ini untuk rekomendasi tertentu.
  • Alamat IP: Aplikasi App Service memiliki alamat IP publik dan nama domain. Nama domain adalah subdomain dari azurewebsites.net, seperti contoso.azurewebsites.net.
  • Azure DNS adalah layanan hosting untuk domain DNS, yang menyediakan resolusi nama menggunakan infrastruktur Microsoft Azure. Dengan menghosting domain Anda di Azure, Anda bisa mengelola catatan DNS Anda menggunakan kredensial, API, alat, dan tagihan yang sama dengan layanan Azure lainnya. Untuk menggunakan nama domain kustom (seperti contoso.com), buat rekaman DNS yang memetakan nama domain kustom ke alamat IP. Untuk informasi selengkapnya, lihat Mengonfigurasi nama domain kustom di Azure App Service.
  • Azure SQL Database adalah database relasional sebagai layanan di cloud. SQL Database berbagi basis kodenya dengan mesin database Microsoft SQL Server. Bergantung pada persyaratan aplikasi Anda, Anda juga dapat menggunakan Azure Database for MySQL atau Azure Database for PostgreSQL. Alternatif ini adalah layanan database yang dikelola sepenuhnya berdasarkan mesin database MySQL Server dan Postgres sumber terbuka.
  • MICROSOFT Entra ID adalah layanan manajemen identitas dan akses berbasis cloud yang memungkinkan karyawan mengakses aplikasi cloud yang dikembangkan untuk organisasi Anda.
  • Azure Monitor adalah solusi untuk mengumpulkan, menganalisis, dan bertindak pada log dan metrik di seluruh lingkungan Anda.
  • Azure Key Vault mendukung manajemen rahasia, manajemen kunci, dan manajemen sertifikat. Ini dapat menyimpan rahasia aplikasi seperti database string koneksi.

Rekomendasi

Kebutuhan Anda mungkin berbeda dari arsitektur yang dijelaskan dan diberikan dalam kode. Kode disebarkan dengan konfigurasi produksi. Gunakan rekomendasi untuk menyesuaikan penyebaran Anda untuk memenuhi kebutuhan Anda.

Paket App Service

Paket App Service memiliki tingkat harga yang berbeda. Setiap tingkat harga mendukung beberapa ukuran instans yang berbeda dengan jumlah inti dan memori. Anda dapat mengubah tingkat harga setelah penyebaran dengan memilih "Tingkatkan (Paket App Service)" di navigasi kiri. Berikut adalah beberapa rekomendasi App Service:

  • Jalankan beban kerja produksi Anda pada tingkat harga Dasar, Standar, dan Premium . Dalam ketiga tingkatan ini, aplikasi berjalan pada instans komputer virtual khusus dan memiliki sumber daya yang dialokasikan yang dapat diskalakan.
  • Gunakan tingkat Standar dan Premier jika Anda memerlukan skala otomatis dan TLS/SSL.
  • Buat paket App Service yang berbeda untuk pengujian dan pengembangan. Gunakan tingkat Gratis dan Bersama (pratinjau) untuk pengujian dan pengembangan untuk efisiensi biaya. Tetapi jangan gunakan tingkat Gratis dan Bersama untuk beban kerja produksi. Sumber daya bersama tidak dapat memperluas skala.
  • Pastikan untuk menghapus paket yang tidak Anda gunakan, seperti menguji penyebaran. Paket App Service ditagih berdasarkan penggunaan per detik. Anda dikenakan biaya untuk instans dalam paket App Service meskipun aplikasi dihentikan. Untuk informasi selengkapnya tentang paket dan tagihan App Service, lihat:

Templat ARM di bawah ini disebarkan ke tingkat harga Standar.

SQL Database

  • Gunakan Azure SQL Database untuk mengurangi overhead manajemen. Azure SQL Database membuat konstruksi logis yang bertindak sebagai titik administratif pusat untuk kumpulan database. Konstruksi logis ini mengurangi overhead manajemen. Setiap database dalam grup disebarkan dengan tingkat layanan tertentu. Dalam setiap grup, database tidak dapat berbagi sumber daya. Tidak ada biaya komputasi untuk server, tetapi Anda perlu menentukan tingkat untuk setiap database. Oleh karena itu, performa mungkin lebih baik karena sumber daya khusus, tetapi biayanya bisa lebih tinggi.
  • Lakukan perencanaan kapasitas dan pilih tingkat serta tingkat performa yang memenuhi kebutuhan Anda. SQL Database mendukung tingkat layanan Dasar, Standar, dan Premium, dengan beberapa tingkat performa dalam setiap tingkat yang diukur di Unit Transaksi Database (DTU).

Wilayah

  • Buat paket App Service dan SQL Database di wilayah yang sama untuk meminimalkan latensi jaringan. Umumnya, pilih wilayah yang paling dekat dengan pengguna Anda.
  • Kelompok sumber daya juga memiliki wilayah. Ini menentukan tempat metadata penyebaran disimpan. Letakkan grup sumber daya dan sumber dayanya di wilayah yang sama untuk meningkatkan ketersediaan selama penyebaran.
  • Menggunakan kalkulator harga untuk memperkirakan biaya.
  • Untuk informasi selengkapnya, lihat bagian biaya di Microsoft Azure Well-Architected Framework.

Pertimbangan

Pertimbangan ini mengimplementasikan pilar Azure Well-Architected Framework. Pilar adalah seperangkat tenet panduan yang meningkatkan kualitas beban kerja. Untuk informasi selengkapnya, lihat Microsoft Azure Well-Architected Framework.

Efisiensi kinerja

Manfaat utama Azure App Service adalah kemampuan untuk menskalakan aplikasi Anda berdasarkan beban. Berikut adalah beberapa pertimbangan yang perlu diingat ketika berencana untuk menskalakan aplikasi Anda.

Menskalakan aplikasi App Service

Ada dua cara untuk menskalakan aplikasi App Service:

  • Peningkatan skala berarti mengubah ukuran instans. Ukuran instans menentukan memori, jumlah inti, dan penyimpanan pada setiap instans VM. Anda dapat meningkatkan skala secara manual dengan mengubah ukuran instans atau tingkat paket.
  • Peluasan skala berarti menambahkan instans untuk menangani peningkatan beban. Setiap tingkat harga memiliki jumlah instans maksimum. Anda dapat meluaskan skala dengan mengubah jumlah instans secara manual atau dengan mengonfigurasi penskalaan otomatis agar Azure secara otomatis menambahkan atau menghapus instans berdasarkan metrik jadwal dan/atau performa. Setiap operasi skala terjadi dengan cepat, biasanya dalam hitungan detik.

Untuk mengaktifkan penskalaan otomatis, buat profil skala otomatis yang menentukan jumlah instans minimum dan maksimum. Anda dapat menyiapkan profil berbasis jadwal untuk memicu peristiwa skala. Misalnya, Anda dapat membuat profil terpisah untuk hari kerja dan akhir pekan. Profil dapat berisi aturan kapan harus menambahkan atau menghapus instans. Misalnya, menambahkan dua instans jika penggunaan CPU di atas 70% selama 5 menit.

Rekomendasi untuk menskalakan aplikasi web:

  • Batasi peningkatan dan penurunan skala sebanyak mungkin. Ini dapat memicu menghidupkan ulang aplikasi. Sebagai gantinya, peluasan skala. Pilih tingkat dan ukuran yang memenuhi persyaratan performa Anda di bawah beban umum lalu skalakan instans untuk menangani perubahan volume lalu lintas.
  • Aktifkan penskalaan otomatis. Jika aplikasi Anda memiliki beban kerja reguler yang dapat diprediksi, buat profil untuk menjadwalkan jumlah instans di awal. Jika beban kerja tidak dapat diprediksi, gunakan autoscaling berbasis aturan untuk bereaksi terhadap perubahan beban saat terjadi. Anda dapat menggabungkan kedua pendekatan tersebut.
  • Gunakan penggunaan CPU untuk aturan penskalaan otomatis. Penggunaan CPU umumnya merupakan metrik yang baik untuk aturan skala otomatis. Namun, Anda harus memuat pengujian aplikasi Anda, mengidentifikasi potensi penyempitan, dan mendasarkan aturan skala otomatis Anda pada data tersebut.
  • Atur periode pendinginan yang lebih pendek untuk menambahkan instans dan periode pendinginan yang lebih lama untuk menghapus instans. Aturan skala otomatis mencakup periode pendinginan . Periode cool-down adalah interval untuk menunggu setelah tindakan skala selesai sebelum memulai tindakan skala baru. Periode pendinginan menstabilkan sistem sebelum penskalaan lagi. Misalnya, atur 5 menit untuk menambahkan instans, tetapi 60 menit untuk menghapus instans. Lebih baik menambahkan instans baru dengan cepat di bawah beban berat untuk menangani lalu lintas tambahan dan kemudian secara bertahap menskalakan kembali.

Menskalakan database SQL

Tingkatkan database individual tanpa waktu henti aplikasi jika Anda memerlukan tingkat layanan atau tingkat performa yang lebih tinggi untuk SQL Database.

Untuk informasi selengkapnya, lihat Menskalakan satu sumber daya database di Azure SQL Database.

Keandalan

Pada saat penulisan, perjanjian tingkat layanan (SLA) untuk App Service adalah 99,95%. SLA App Service berlaku untuk satu dan beberapa instans. SLA untuk SQL Database adalah 99,99% untuk tingkat Dasar, Standar, dan Premium.

Pencadangan

SQL Database menyediakan pemulihan titik waktu dan pemulihan geografis untuk memulihkan kehilangan data. Fitur-fitur ini tersedia di semua tingkat dan diaktifkan secara otomatis. Anda tidak perlu menjadwalkan atau mengelola cadangan.

  • Gunakan pemulihan point-in-time. Anda dapat memulihkan dari kesalahan manusia dengan mengembalikan database ke titik waktu sebelumnya.
  • Gunakan pemulihan geografis. Anda dapat memulihkan dari pemadaman layanan dengan memulihkan database dari cadangan geo-redundan.
  • Pertimbangkan untuk menggunakan pencadangan dan pemulihan App Service. Pencadangan dan pemulihan adalah fitur untuk file aplikasi Anda. Namun, file yang dicadangkan menyertakan pengaturan aplikasi dalam teks biasa, seperti string koneksi.
  • Hindari menggunakan fitur cadangan App Service untuk mencadangkan database SQL Anda. Ini mengekspor database ke file BACPAC SQL, menggunakan DTU. Sebagai gantinya, gunakan pemulihan titik waktu SQL Database yang dijelaskan di atas. Untuk informasi selengkapnya, lihat kelangsungan bisnis cloud dan pemulihan bencana database dengan SQL Database.

Keunggulan operasional

Buat grup sumber daya terpisah untuk lingkungan produksi, pengembangan, dan pengujian. Memisahkan lingkungan memudahkan pengelolaan penyebaran, menghapus penyebaran pengujian, dan menetapkan hak akses.

Saat menetapkan sumber daya ke grup sumber daya, pertimbangkan fitur berikut:

  • Lifecycle. Secara umum, masukkan sumber daya dengan siklus hidup yang sama ke dalam grup sumber daya yang sama.
  • Akses. Anda dapat menggunakan kontrol akses berbasis peran Azure (RBAC) untuk menerapkan kebijakan akses ke sumber daya dalam grup.
  • Tagihan. Anda dapat melihat biaya yang disatukan untuk grup sumber daya.

Untuk informasi selengkapnya, lihat Ringkasan Azure Resource Manager.

Konfigurasi aplikasi

  • Simpan pengaturan konfigurasi sebagai pengaturan aplikasi. Tentukan pengaturan aplikasi di templat Resource Manager atau menggunakan PowerShell. Saat runtime, pengaturan aplikasi tersedia untuk aplikasi sebagai variabel lingkungan.
  • Jangan pernah memeriksa kata sandi, kunci akses, atau rangkaian koneksi ke kontrol sumber. Sebagai gantinya, teruskan rahasia sebagai parameter ke skrip penyebaran yang menyimpan nilai-nilai ini sebagai pengaturan aplikasi.
  • Saat Anda menukar slot penyebaran, pengaturan aplikasi ditukar secara default. Jika Anda memerlukan pengaturan produksi dan penahapan yang berbeda, Anda dapat membuat pengaturan aplikasi yang menempel pada slot dan tidak ditukar.

Diagnostik dan pemantauan

DevOps

  • Gunakan templat ARM untuk menyebarkan sumber daya Azure dan dependensinya. Templat ARM yang menyertainya menyebarkan satu aplikasi web. Semua sumber daya diisolasi dalam beban kerja dasar yang sama. Isolasi ini memudahkan untuk mengaitkan sumber daya khusus beban kerja ke tim. Tim kemudian dapat mengelola semua aspek sumber daya tersebut secara independen. Isolasi ini memungkinkan tim DevOps melakukan integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD).
  • Gunakan Templat ARM yang berbeda dan integrasikan dengan layanan Azure DevOps. Penyiapan ini memungkinkan Anda membuat lingkungan yang berbeda dalam hitungan menit. Misalnya, Anda dapat mereplikasi skenario seperti produksi atau lingkungan pengujian beban hanya saat diperlukan dan menghemat biaya.
  • Provisikan beberapa instans aplikasi web. Anda tidak ingin aplikasi web bergantung pada satu instans dan berpotensi membuat satu titik kegagalan. Beberapa instans meningkatkan ketahanan dan skalabilitas.

Untuk informasi selengkapnya, lihat bagian DevOps di Azure Well-Architected Framework.

Rekayasa dan penyebaran rilis

Aplikasi App Service selalu memiliki satu slot penyebaran bernama production. Slot produksi mewakili situs produksi langsung. Sebaiknya buat slot penahapan untuk menyebarkan pembaruan. Manfaat menggunakan slot penahapan meliputi:

  • Anda dapat memverifikasi keberhasilan penyebaran sebelum menukarnya ke dalam produksi.
  • Menyebarkan ke slot penahapan memastikan bahwa semua instans dihangatkan sebelum ditukar ke produksi. Banyak aplikasi memiliki pemanasan yang signifikan dan waktu awal yang dingin.
  • Buat slot ketiga untuk menahan penyebaran terakhir yang diketahui baik. Setelah Anda menukar penahapan dan produksi, pindahkan penyebaran produksi sebelumnya (yang sekarang dalam penahapan) ke slot terakhir yang diketahui. Dengan begitu, jika nantinya Anda menemukan masalah, Anda dapat dengan cepat kembali ke versi terakhir yang diketahui.

Menukar slot untuk penyebaran produksi dan penahapan

  • Jika Anda kembali ke versi sebelumnya, pastikan perubahan skema database kompatibel dengan versi sebelumnya.
  • Jangan gunakan slot pada penyebaran produksi Anda untuk pengujian karena semua aplikasi dalam paket App Service yang sama berbagi instans VM yang sama. Misalnya, pengujian beban dapat menurunkan situs produksi langsung. Sebagai gantinya, buat paket App Service terpisah untuk produksi dan pengujian. Dengan menempatkan penyebaran pengujian ke dalam paket terpisah, Anda memisahkannya dari versi produksi.

Keamanan

Bagian ini mencantumkan pertimbangan keamanan yang khusus untuk layanan Azure yang dijelaskan dalam artikel ini. Ini bukan daftar lengkap praktik terbaik keamanan. Untuk beberapa pertimbangan keamanan lainnya, lihat Mengamankan aplikasi di Azure App Service.

Pengauditan SQL Database

Audit dapat membantu menjaga kepatuhan terhadap peraturan dan memperoleh wawasan tentang adanya perbedaan dan ketidakteraturan yang dapat menunjukkan masalah bisnis atau dugaan ancaman keamanan. Lihat Memulai audit database SQL.

Slot penyebaran

Setiap slot penyebaran memiliki alamat IP publik. Amankan slot nonproduksi menggunakan login Microsoft Entra sehingga hanya anggota tim pengembangan dan DevOps yang dapat menjangkau titik akhir tersebut.

Pencatatan

Log tidak boleh merekam kata sandi pengguna atau informasi lain yang mungkin digunakan untuk melakukan penipuan identitas. Hilangkan detail tersebut dari data sebelum menyimpannya.

SSL

Aplikasi App Service menyertakan titik akhir SSL pada subdomain azurewebsites.net tanpa biaya tambahan. Titik akhir SSL menyertakan sertifikat wildcard untuk domain *.azurewebsites.net. Jika Anda menggunakan nama domain kustom, Anda harus memberikan sertifikat yang cocok dengan domain kustom. Pendekatan paling sederhana adalah membeli sertifikat langsung melalui portal Azure. Anda juga dapat mengimpor sertifikat dari otoritas sertifikat lainnya. Untuk informasi selengkapnya, lihat membeli dan mengonfigurasi sertifikat SSL untuk Azure App Service Anda.

HTTPS tidak diaktifkan secara default dalam penyebaran templat ARM. Sebagai praktik terbaik keamanan, aplikasi Anda harus memberlakukan HTTPS dengan mengalihkan permintaan HTTP. Anda dapat menerapkan HTTPS di dalam aplikasi Anda atau menggunakan aturan penulisan ulang URL seperti yang dijelaskan dalam mengaktifkan HTTPS untuk aplikasi di Azure App Service.

Autentikasi

Sebaiknya autentikasi melalui Penyedia Identitas (IDP), seperti ID Microsoft Entra, Facebook, Google, atau Twitter. Gunakan OAuth 2 atau OpenID Connect (OIDC) untuk alur autentikasi. MICROSOFT Entra ID menyediakan fungsionalitas untuk mengelola pengguna dan grup, membuat peran aplikasi, mengintegrasikan identitas lokal Anda, dan menggunakan layanan backend seperti Microsoft 365 dan Skype for Business.

Hindari aplikasi mengelola login dan kredensial pengguna secara langsung. Ini menciptakan permukaan serangan potensial. Minimal, Anda harus memiliki konfirmasi email, pemulihan kata sandi, dan autentikasi multifaktor, memvalidasi kekuatan kata sandi, serta menyimpan hash kata sandi dengan aman. Penyedia identitas besar menangani semua hal tersebut untuk Anda dan terus memantau serta meningkatkan praktik keamanan mereka.

Pertimbangkan untuk menggunakan autentikasi App Service untuk mengimplementasikan alur autentikasi OAuth atau OIDC. Manfaat autentikasi App Service meliputi:

  • Mudah dikonfigurasi.
  • Tidak ada kode yang diperlukan untuk skenario autentikasi sederhana.
  • Mendukung otorisasi yang didelegasikan menggunakan token akses OAuth untuk menggunakan sumber daya atas nama pengguna.
  • Menyediakan cache token bawaan.

Beberapa batasan autentikasi App Service:

  • Opsi kustomisasi terbatas.
  • Otorisasi yang didelegasikan dibatasi pada satu sumber daya backend per sesi login.
  • Jika Anda menggunakan lebih dari satu IDP, tidak ada mekanisme bawaan untuk penemuan realm rumah.
  • Untuk skenario multi-penyewa, aplikasi harus menerapkan logika untuk memvalidasi penerbit token.

Menyebarkan skenario ini

Arsitektur ini mencakup paket Azure App Service dan aplikasi kosong. Ini menggunakan Azure SQL Database, Azure Key Vault untuk menyimpan database string koneksi, dan Azure Monitor untuk pengelogan, pemantauan, dan pemberitahuan.

Gunakan perintah berikut untuk membuat grup sumber daya untuk penyebaran. Pilih tombol Coba untuk menggunakan shell yang disematkan.

az group create --name basic-web-app --location eastus

Jalankan perintah berikut untuk menyebarkan aplikasi web dan infrastruktur pendukung. Saat diminta, masukkan nama pengguna dan kata sandi. Nilai-nilai ini digunakan untuk mengakses instans Azure SQL Database.

az deployment group create --resource-group basic-web-app  \
    --template-uri https://raw.githubusercontent.com/mspnp/samples/master/solutions/basic-web-app/azuredeploy.json

Untuk informasi terperinci dan opsi penyebaran lainnya, lihat Templat ARM yang digunakan untuk menyebarkan solusi ini.

Langkah berikutnya

Tips untuk memecahkan masalah aplikasi Anda:

Dokumentasi produk:

Modul Microsoft Learn: