Azure Functions di lingkungan hibrida

Azure Functions
Azure Monitor
Azure Pipelines
Azure Storage
Azure Virtual Network

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

Diagram ini menggambarkan beberapa mesin virtual lokal (VM) yang terhubung ke Azure Functions di berbagai wilayah. Pengembang memantau aplikasi fungsi mereka dengan menggunakan Azure Monitor.

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:

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:

Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.

Langkah berikutnya

Lihat panduan arsitektur berikut untuk Azure Functions:

Lihat panduan arsitektur berikut untuk Azure Virtual Networks: