Azure App Service adalah platform hosting aplikasi web yang kuat. Azure Functions, yang dibangun di atas infrastruktur App Service, memungkinkan Anda untuk dengan mudah membangun beban kerja komputasi tanpa server dan berbasis peristiwa. Kedua layanan sering digunakan dalam solusi multipenyewa.
Fitur Azure App Service dan Azure Functions yang mendukung multipenyewa
Azure App Service dan Azure Functions mencakup banyak fitur yang mendukung multitenansi.
Nama domain kustom
Azure App Service memungkinkan Anda menggunakan DNS wildcard dan menambahkan sertifikat TLS wildcard Anda sendiri. Saat Anda menggunakan subdomain khusus penyewa, sertifikat DNS wildcard dan TLS memungkinkan Anda untuk dengan mudah menskalakan solusi Anda ke sejumlah besar penyewa, tanpa memerlukan konfigurasi ulang manual untuk setiap penyewa baru.
Saat menggunakan nama domain kustom khusus penyewa, Anda mungkin memiliki sejumlah besar nama domain kustom yang perlu ditambahkan ke aplikasi Anda. Ini bisa menjadi rumit untuk mengelola banyak nama domain kustom, terutama ketika mereka memerlukan sertifikat TLS individual. App Service menyediakan sertifikat TLS terkelola, yang mengurangi pekerjaan yang diperlukan saat Anda bekerja dengan domain kustom. Namun, ada batasan yang perlu dipertimbangkan, seperti berapa banyak domain kustom yang dapat diterapkan ke satu aplikasi.
Integrasi dengan Azure Front Door
App Service dan Azure Functions dapat berintegrasi dengan Azure Front Door, untuk bertindak sebagai komponen solusi Anda yang terhubung ke internet. Azure Front Door memungkinkan Anda menambahkan firewall aplikasi web (WAF) dan penembolokan tepi, dan menyediakan pengoptimalan performa lainnya. Anda dapat dengan mudah mengonfigurasi ulang arus lalu lintas Anda untuk mengarahkan lalu lintas ke backend yang berbeda, berdasarkan perubahan persyaratan bisnis atau teknis.
Saat Anda menggunakan Azure Front Door dengan aplikasi multipenyewa, Anda dapat menggunakannya untuk mengelola nama domain kustom Anda dan untuk mengakhiri koneksi TLS Anda. Aplikasi App Service Anda kemudian dikonfigurasi dengan satu nama host, dan semua arus lalu lintas melalui aplikasi tersebut, yang membantu Anda menghindari pengelolaan nama domain kustom di beberapa tempat.
Seperti dalam contoh di atas, Azure Front Door dapat dikonfigurasi untuk mengubah header permintaanHost
. Header asli Host
yang dikirim oleh klien disebarluaskan melalui X-Forwarded-Host
header, dan kode aplikasi Anda dapat menggunakan header ini untuk memetakan permintaan ke penyewa yang benar.
Peringatan
Jika aplikasi Anda mengirim cookie atau respons pengalihan, Anda perlu berhati-hati. Perubahan pada header permintaan Host
mungkin membatalkan respons ini. Untuk informasi selengkapnya, lihat praktik terbaik pelestarian nama host.
Anda dapat menggunakan titik akhir privat atau pembatasan akses App Service untuk memastikan bahwa lalu lintas telah mengalir melalui Front Door sebelum mencapai aplikasi Anda.
Untuk informasi selengkapnya tentang menggunakan Azure Front Door dalam solusi multipenyewa, lihat Menggunakan Azure Front Door dalam solusi multipenyewa
Autentikasi dan otorisasi
Azure App Service dapat memvalidasi token autentikasi atas nama aplikasi Anda. Saat App Service menerima permintaan, App Service memeriksa untuk melihat apakah setiap kondisi berikut terpenuhi:
- Permintaan berisi token.
- Token valid.
- Permintaan diotorisasi.
Jika salah satu kondisi tidak terpenuhi, App Service dapat memblokir permintaan, atau dapat mengalihkan pengguna ke penyedia identitas Anda sehingga mereka dapat masuk.
Jika penyewa Anda menggunakan ID Microsoft Entra sebagai sistem identitas mereka, Anda dapat mengonfigurasi Azure App Service untuk menggunakan titik akhir /common untuk memvalidasi token pengguna. Ini memastikan bahwa, terlepas dari penyewa Microsoft Entra pengguna, token mereka divalidasi dan diterima.
Anda juga dapat mengintegrasikan Azure App Service dengan Azure AD B2C untuk autentikasi konsumen.
Informasi selengkapnya:
- Otorisasi App Service
- Mengonfigurasi autentikasi dalam contoh aplikasi web dengan menggunakan Azure AD B2C
- Bekerja dengan identitas Microsoft Entra multipenyewa
Pembatasan akses
Anda dapat membatasi lalu lintas ke aplikasi anda dengan menggunakan pembatasan akses. Ini dapat digunakan untuk menentukan rentang alamat IP atau jaringan virtual yang diizinkan untuk terhubung ke aplikasi.
Saat Anda bekerja dengan solusi multipenyewa, ketahui jumlah maksimum aturan pembatasan akses. Misalnya, jika Anda perlu membuat aturan pembatasan akses untuk setiap penyewa, Anda mungkin melebihi jumlah maksimum aturan yang diizinkan. Jika Anda memerlukan sejumlah besar aturan, pertimbangkan untuk menyebarkan proksi terbalik seperti Azure Front Door.
Model isolasi
Saat bekerja dengan sistem multipenyewa menggunakan Azure App Service atau Azure Functions, Anda perlu membuat keputusan tentang tingkat isolasi yang ingin Anda gunakan. Lihat model penyewaan yang perlu dipertimbangkan untuk solusi multipenyewa dan panduan yang diberikan dalam pendekatan arsitektur untuk komputasi dalam solusi multipenyewa, untuk membantu Anda memilih model isolasi terbaik untuk skenario Anda.
Saat bekerja dengan Azure App Service dan Azure Functions, Anda harus mengetahui konsep utama berikut:
- Di Azure App Service, paket mewakili infrastruktur hosting Anda. Aplikasi mewakili satu aplikasi yang berjalan pada infrastruktur tersebut. Anda dapat menyebarkan beberapa aplikasi ke satu paket.
- Di Azure Functions, hosting dan aplikasi Anda juga dipisahkan, tetapi Anda memiliki opsi hosting tambahan yang tersedia untuk hosting elastis, di mana Azure Functions mengelola penskalaan untuk Anda. Untuk kesederhanaan, kami merujuk ke infrastruktur hosting sebagai rencana di seluruh artikel ini, karena prinsip-prinsip yang dijelaskan di sini berlaku untuk App Service dan Azure Functions, terlepas dari model hosting yang Anda gunakan.
Tabel berikut ini meringkas perbedaan antara model isolasi penyewaan utama untuk Azure App Service dan Azure Functions:
Pertimbangan | Aplikasi bersama | Aplikasi per penyewa dengan paket bersama | Paket per penyewa |
---|---|---|---|
Isolasi konfigurasi | Kurang Penting | Medium. Pengaturan tingkat aplikasi didedikasikan untuk penyewa, pengaturan tingkat paket dibagikan | Tinggi. Setiap penyewa dapat memiliki konfigurasi mereka sendiri |
Isolasi performa | Kurang Penting | Sedang rendah. Berpotensi tunduk pada masalah tetangga yang bising | Sangat Penting |
Kompleksitas penyebaran | Kurang Penting | Medium | Sangat Penting |
Kompleksitas operasional | Rendah | Tinggi | Sangat Penting |
Biaya sumber daya | Kurang Penting | Rendah-tinggi tergantung pada aplikasi | Sangat Penting |
Contoh skenario | Solusi multipenyewa besar dengan tingkat aplikasi bersama | Memigrasikan aplikasi yang tidak menyadari penyewaan ke Azure sambil mendapatkan beberapa efisiensi biaya | Tingkat aplikasi penyewa tunggal |
Aplikasi bersama
Anda dapat menyebarkan aplikasi bersama pada satu paket, dan menggunakan aplikasi bersama untuk semua penyewa Anda.
Ini cenderung menjadi opsi yang paling hemat biaya, dan membutuhkan overhead operasional paling sedikit karena ada lebih sedikit sumber daya untuk dikelola. Anda dapat menskalakan rencana keseluruhan berdasarkan beban atau permintaan, dan semua penyewa yang berbagi paket akan mendapat manfaat dari peningkatan kapasitas.
Penting untuk mengetahui kuota dan batas App Service, seperti jumlah maksimum domain kustom yang dapat ditambahkan ke satu aplikasi, dan jumlah maksimum instans paket yang dapat disediakan.
Agar dapat menggunakan model ini, kode aplikasi Anda harus sadar multipenyewa.
Aplikasi per penyewa dengan paket bersama
Anda juga dapat memilih untuk berbagi paket di antara beberapa penyewa, tetapi menyebarkan aplikasi terpisah untuk setiap penyewa. Ini memberi Anda isolasi logis antara setiap penyewa, dan pendekatan ini memberi Anda keuntungan berikut:
- Efisiensi biaya: Dengan berbagi infrastruktur hosting Anda, Anda umumnya dapat mengurangi biaya keseluruhan per penyewa.
- Pemisahan konfigurasi: Setiap aplikasi penyewa dapat memiliki nama domain, sertifikat TLS, pembatasan akses, dan kebijakan otorisasi token sendiri yang diterapkan.
- Pemisahan peningkatan: Biner aplikasi setiap penyewa dapat ditingkatkan secara independen dari aplikasi lain pada paket yang sama.
Namun, karena sumber daya komputasi paket dibagikan, aplikasi mungkin tunduk pada masalah Noisy Neighbor. Selain itu, ada batasan jumlah aplikasi yang dapat disebarkan ke satu paket.
Catatan
Jangan gunakan slot penyebaran untuk penyewa yang berbeda. Slot tidak menyediakan isolasi sumber daya. Mereka dirancang untuk skenario penyebaran saat Anda perlu memiliki beberapa versi aplikasi yang berjalan untuk waktu yang singkat, seperti penyebaran biru-hijau dan strategi peluncuran kenari.
Paket per penyewa
Tingkat isolasi terkuat adalah menyebarkan rencana khusus untuk penyewa. Paket khusus ini memastikan bahwa penyewa memiliki penggunaan penuh dari semua sumber daya server yang dialokasikan untuk paket tersebut.
Pendekatan ini memungkinkan Anda untuk menskalakan solusi Anda untuk memberikan isolasi performa untuk setiap penyewa, dan untuk menghindari masalah Noisy Neighbor. Namun, ini juga memiliki biaya yang lebih tinggi karena sumber daya tidak dibagikan dengan beberapa penyewa. Selain itu , Anda perlu mempertimbangkan jumlah maksimum paket yang dapat disebarkan ke dalam satu grup sumber daya Azure.
API Host
Anda dapat menghosting API di Azure App Service dan Azure Functions. Pilihan platform Anda akan bergantung pada set fitur tertentu dan opsi penskalaan yang Anda butuhkan.
Platform mana pun yang Anda gunakan untuk menghosting API Anda, pertimbangkan untuk menggunakan Azure API Management di depan aplikasi API Anda. API Management menyediakan banyak fitur yang dapat membantu solusi multipenyewa, termasuk yang berikut ini:
- Titik terpusat untuk semua autentikasi. Ini mungkin termasuk menentukan pengidentifikasi penyewa dari klaim token atau metadata permintaan lainnya.
- Permintaan perutean ke backend API yang berbeda, yang mungkin didasarkan pada pengidentifikasi penyewa permintaan. Ini dapat membantu ketika Anda menghosting beberapa stempel penyebaran, dengan aplikasi API independen mereka sendiri, tetapi Anda harus memiliki satu URL API untuk semua permintaan.
Jaringan dan multitenansi
Alamat IP
Banyak aplikasi multipenyewa perlu terhubung ke jaringan lokal penyewa untuk mengirim data.
Jika Anda perlu mengirim lalu lintas keluar dari alamat IP statis yang diketahui atau dari sekumpulan alamat IP statis yang diketahui, pertimbangkan untuk menggunakan NAT Gateway. Untuk informasi selengkapnya tentang cara menggunakan NAT Gateway dalam solusi multipenyewa, lihat Pertimbangan Azure NAT Gateway untuk multipenyewa. App Service menyediakan panduan tentang cara berintegrasi dengan NAT Gateway.
Jika Anda tidak memerlukan alamat IP keluar statis, tetapi sebaliknya Anda perlu memeriksa alamat IP yang digunakan aplikasi Anda untuk lalu lintas keluar, Anda dapat mengkueri alamat IP penyebaran App Service saat ini.
Kuota
Karena App Service adalah layanan multipenyewa, Anda perlu memperhatikan cara Anda menggunakan sumber daya bersama. Jaringan adalah area yang perlu Anda perhatikan secara khusus, karena ada batasan yang memengaruhi bagaimana aplikasi Anda dapat bekerja dengan koneksi jaringan masuk dan keluar, termasuk batas port terjemahan alamat jaringan sumber (SNAT) dan TCP.
Jika aplikasi Anda terhubung ke sejumlah besar database atau layanan eksternal, aplikasi Anda mungkin berisiko kelelahan port SNAT. Secara umum, kelelahan port SNAT menunjukkan bahwa kode Anda tidak menggunakan kembali koneksi TCP dengan benar, dan bahkan dalam solusi multipenyewa, Anda harus memastikan Anda mengikuti praktik yang direkomendasikan untuk menggunakan kembali koneksi.
Namun, dalam beberapa solusi multipenyewa, jumlah koneksi keluar ke alamat IP yang berbeda dapat mengakibatkan kelelahan port SNAT, bahkan ketika Anda mengikuti praktik pengkodan yang baik. Dalam skenario ini, pertimbangkan salah satu opsi berikut:
- Sebarkan NAT Gateway untuk meningkatkan jumlah port SNAT yang tersedia untuk digunakan aplikasi Anda. Untuk informasi selengkapnya tentang cara menggunakan NAT Gateway dalam solusi multipenyewa, lihat Pertimbangan Azure NAT Gateway untuk multipenyewa.
- Gunakan titik akhir layanan saat Anda tersambung ke layanan Azure, untuk melewati batas load balancer.
Bahkan dengan kontrol ini, Anda mungkin mendekati batas dengan sejumlah besar penyewa, jadi Anda harus berencana untuk menskalakan ke paket App Service tambahan atau stempel penyebaran.
Kontributor
Artikel ini dikelola oleh Microsoft. Ini awalnya ditulis oleh kontributor berikut.
Penulis utama:
- John Downs | Insinyur Perangkat Lunak Utama
Kontributor lain:
- Thiago Almeida | Manajer Program Utama, Azure Functions
- Arsen Vladimirskiy | Teknisi Pelanggan Utama, FastTrack untuk Azure
Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.
Langkah berikutnya
Tinjau Sumber Daya untuk arsitek dan pengembang solusi multipenyewa.