Arsitektur referensi ini menggambarkan beberapa cabang lokal dari sebuah organisasi yang tersebar secara geografis. Setiap lokasi menggunakan aplikasi fungsi Microsoft Azure yang dikonfigurasi dengan paket Premium di wilayah cloud terdekat. Para pengembang dalam arsitektur ini memantau semua Azure Function Apps dengan menggunakan Azure Monitor sebagai satu panel kaca.
Sistem
Unduh file Visio arsitektur ini.
Komponen
Arsitektur terdiri dari komponen-komponen berikut:
- Fungsi-fungsi Azure. Azure Functions adalah platform tanpa server sebagai layanan (PaaS) di Azure yang menjalankan kode tugas tunggal kecil tanpa memerlukan infrastruktur baru untuk dipisah. Paket Premium Azure Functions menambahkan kemampuan untuk berkomunikasi dengan Azure Functions secara pribadi melalui jaringan virtual.
- Azure Jaringan Virtual. Jaringan virtual Azure adalah jaringan pribadi yang dibangun di atas platform cloud Azure sehingga sumber daya Azure dapat berkomunikasi satu sama lain dengan cara yang aman. Titik akhir layanan jaringan virtual Azure memastikan bahwa sumber daya Azure hanya dapat berkomunikasi melalui backbone jaringan virtual yang aman.
- Jaringan lokal. Dalam arsitektur ini, organisasi telah menciptakan jaringan pribadi yang aman yang menghubungkan berbagai cabang. Jaringan pribadi ini terhubung ke jaringan virtual Azure mereka dengan menggunakan koneksi situs-ke-situs.
- Workstation pengembang. Dalam arsitektur ini, pengembang individual mungkin mengerjakan kode untuk Azure Functions sepenuhnya pada jaringan pribadi yang aman atau dari lokasi jarak jauh mana pun. Dalam kedua skenario, pengembang memiliki akses ke Azure Monitor untuk mengkueri atau mengamati metrik dan log untuk aplikasi fungsi.
Detail skenario
Penggunaan umum untuk arsitektur ini meliputi:
- Organisasi dengan banyak lokasi fisik yang terhubung ke jaringan virtual di Azure untuk berkomunikasi dengan Azure Functions.
- Beban kerja pertumbuhan tinggi yang menggunakan Azure Functions secara lokal dan mempertahankan opsi untuk menggunakan Azure untuk setiap semburan tak terduga dalam pekerjaan.
Rekomendasi
Rekomendasi berikut berlaku untuk sebagian besar skenario. Ikuti rekomendasi ini kecuali Anda memiliki persyaratan khusus yang menimpanya.
Merancang untuk arsitektur tanpa server
Aplikasi perusahaan tradisional cenderung menuju arsitektur aplikasi monolitik di mana satu kode "solusi" menjalankan logika bisnis seluruh organisasi. Dengan Azure Functions, praktik terbaik adalah merancang arsitektur tanpa server di mana fungsi individual melakukan tugas tunggal. Tugas tunggal ini dirancang untuk berjalan cepat dan berintegrasi ke dalam alur kerja yang lebih besar.
Arsitektur tanpa server di Azure Functions memiliki banyak manfaat, termasuk:
- Aplikasi dapat secara otomatis menskalakan berdasarkan fungsi bisnis individual alih-alih menskalakan seluruh solusi. Ini dapat membantu menekan biaya dengan menskalakan hanya apa yang diperlukan untuk setiap tugas untuk melayani beban kerja yang ada.
- Azure Functions menyediakan pengikatan deklaratif untuk banyak layanan Azure, mengurangi jumlah kode yang perlu ditulis, diuji, dan dipelihara oleh tim Anda.
- Fungsi individual dapat digunakan kembali, mengurangi jumlah kode berulang yang diperlukan untuk solusi perusahaan besar.
Menjalankan Fungsi Azure di tempat
Anda dapat memilih agar Azure Functions berjalan di tempat dan bukan di Azure; misalnya:
- Tim Anda mungkin ingin menjalankan Azure Functions dalam instalasi Kubernetes lokal yang sudah ada.
- Dalam pengembangan, tim Anda mungkin merasa lebih mudah untuk mengembangkan secara lokal menggunakan antarmuka baris perintah daripada editor dalam portal.
- Fungsi Anda akan berjalan secara lokal dengan toolset yang diinstal pada VM lokal.
Anda dapat menjalankan Azure Functions lokal dengan tiga cara:
- Alat Inti Fungsi Azure. Azure Functions Core Tools adalah suite pengembang yang biasanya diinstal dari node package manager (npm). Hal ini memungkinkan pengembang untuk mengembangkan, debug, dan menguji aplikasi fungsi pada command prompt pada komputer lokal.
- Gambar kontainer Docker Fungsi Azure. Anda dapat menggunakan gambar kontainer ini sebagai gambar dasar untuk kontainer yang menjalankan Azure Functions pada host Docker atau di Kubernetes.
- Kubernetes. Azure Functions mendukung skala berbasis peristiwa yang mulus dalam kluster Kubernetes menggunakan Penskalan Otomatis Berbasis Peristiwa (KEDA) berbasis Kubernetes. Tinjau praktik terbaik untuk mengelola kluster Azure Kubernetes Service dan kluster Kubernetes dengan dukungan Azure Arc.
Konektivitas jaringan
Membuat aplikasi fungsi dengan menggunakan paket Premium membuka kemungkinan konektivitas lintas jaringan yang sangat aman antara jaringan virtual Azure, Azure dan jaringan lokal, dan jaringan untuk setiap cabang lokal.
Anda harus menggunakan koneksi site-to-site atau Azure ExpressRoute antara Azure Virtual Network dan jaringan lokal. Hal ini memungkinkan cabang lokal untuk berkomunikasi dengan aplikasi fungsi di Azure dengan menggunakan titik akhir layanan mereka.
Selain itu, setiap jaringan masuk virtual di Azure juga harus menggunakan peering jaringan virtual untuk memungkinkan komunikasi antara aplikasi fungsi individual di seluruh wilayah.
Pertimbangan
Pertimbangan ini mengimplementasikan pilar Azure Well-Architected Framework, yang merupakan serangkaian tenet panduan yang dapat digunakan untuk meningkatkan kualitas beban kerja. Untuk informasi selengkapnya, lihat Microsoft Azure Well-Architected Framework.
Skalabilitas
- Kode Azure Functions harus dirancang sehingga dapat ditingkatkan tanpa henti. Pertimbangkan kondisi balapan, file sewaan, dan beban kerja lainnya yang mungkin menyebabkan satu fungsi berjalan untuk memblokir yang lain. Juga pertimbangkan untuk menulis semua kode Azure Functions sebagai stateless dan defensif dalam desainnya.
- Untuk aplikasi fungsi yang menggunakan akun Azure Storage dalam pemicu atau pengikatan, jangan menggunakan kembali akun yang sama yang digunakan untuk menyimpan metadata tentang aplikasi fungsi dan menjalankannya.
Ketersediaan
- Biasanya, Azure Functions pada paket konsumsi dapat menskalakan ke nol instans. Saat peristiwa baru memicu aplikasi fungsi, instans baru harus dibuat dengan kode Anda berjalan di atasnya. Latensi yang terkait dengan proses ini disebut sebagai awal yang dingin. Paket Premium Azure Functions menawarkan opsi untuk mengonfigurasi instans pra-pemanasan yang siap untuk permintaan baru apa pun. Anda dapat mengonfigurasi jumlah instans pra-pemanasan hingga jumlah minimum instans dalam konfigurasi scale-out Anda.
- Pertimbangkan untuk memiliki beberapa rencana Premium di beberapa wilayah dan menggunakan Azure Traffic Manager untuk merutekan permintaan dengan tepat.
Keterkelolaan
- Azure Functions harus berada di subnet kosong yang merupakan subnet yang berbeda dari sumber daya Azure Anda yang lain. Ini mungkin memerlukan lebih banyak perencanaan saat merancang subnet untuk jaringan virtual Anda.
- Pertimbangkan untuk membuat proxy untuk setiap sumber daya lokal yang mungkin perlu diakses oleh Azure Functions. Ini dapat melindungi integritas aplikasi Anda terhadap perubahan jaringan lokal yang tidak terduga.
- Gunakan Azure Monitor untuk mengamati analitik dan log untuk Azure Functions di seluruh solusi Anda.
DevOps
- Idealnya, operasi penyebaran harus berasal dari satu tim (Dev atau DevOps), bukan dari masing-masing cabang individu. Pertimbangkan untuk menggunakan sistem alur kerja modern seperti Azure Pipelines atau GitHub Tindakan untuk menerapkan aplikasi fungsi secara berulang di semua wilayah Azure dan berpotensi lokal.
- Gunakan sistem alur kerja Anda untuk mengotomatiskan pemindahan kode ke Azure Functions saat kode diperbarui dan ditandai untuk dirilis.
- Gunakan slot penyebaran untuk menguji Azure Functions sebelum dorongan terakhir mereka ke produksi.
Pengoptimalan biaya
Optimalisasi biaya adalah tentang mencari cara untuk mengurangi pengeluaran yang tidak perlu dan meningkatkan efisiensi operasional. Untuk informasi selengkapnya, lihat Gambaran umum pilar pengoptimalan biaya.
- Gunakan kalkulator harga Azure untuk memperkirakan biaya.
- Paket Premium Azure Functions diperlukan untuk konektivitas Azure Virtual Network, akses situs pribadi, titik akhir layanan, dan instans pra-pemanasan.
- Fungsi Azure Premium merencanakan tagihan pada instans, bukan konsumsi. Minimal satu contoh memastikan akan ada setidaknya beberapa tagihan bulanan bahkan tanpa berjalan. Anda dapat mengatur jumlah instans maksimum untuk mengontrol biaya untuk beban kerja yang mungkin meledak ukurannya.
Kontributor
Artikel ini dikelola oleh Microsoft. Ini awalnya ditulis oleh kontributor berikut.
Penulis utama:
- Raunak Jhawar | Arsitek Cloud Senior
Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.
Langkah berikutnya
- Dokumentasi Azure Functions
- Koneksi Hibrid Azure App Service
- Mengelola lingkungan hibrid dengan PowerShell
- Azure Functions untuk menyambungkan ke sumber daya di jaringan virtual Azure
- Dokumentasi Azure Virtual Network
Sumber daya terkait
Lihat panduan arsitektur berikut untuk Azure Functions:
- Pemrosesan peristiwa serverless
- Azure Functions di lingkungan hibrid
- Penskalakan lintas cloud dengan Azure Functions
- Panduan kode: Aplikasi tanpa server dengan Functions
Lihat panduan arsitektur berikut untuk Azure Virtual Networks: