Praktik terbaik Azure App Configuration

Artikel ini membahas pola umum dan praktik terbaik saat Anda menggunakan Azure App Configuration.

Pengelompokan kunci

Azure App Configuration menyediakan dua opsi untuk mengatur kunci:

  • Awalan kunci
  • Label

Anda dapat menggunakan salah satu atau kedua opsi untuk mengelompokkan kunci Anda.

Awalan kunci adalah bagian awal dari kunci. Anda dapat secara logis mengelompokkan sekumpulan kunci dengan menggunakan awalan sama dalam namanya. Awalan dapat terdiri atas beberapa komponen yang disambungkan oleh pemisah, seperti /, mirip dengan jalur URL, untuk membentuk namespace layanan. Hierarki semacam itu berguna saat Anda menyimpan kunci untuk banyak aplikasi, layanan komponen, dan lingkungan di satu penyimpanan Azure App Configuration.

Hal penting yang perlu diingat adalah bahwa kunci adalah referensi kode aplikasi Anda untuk mengambil nilai dari pengaturan yang sesuai. Kunci tidak boleh berubah, atau Anda harus mengubah kode setiap kali itu terjadi.

Label adalah atribut pada kunci. Digunakan untuk membuat varian kunci. Contohnya, Anda dapat menetapkan label ke beberapa versi kunci. Versi dapat berupa perulangan, lingkungan, atau beberapa informasi kontekstual lainnya. Aplikasi Anda dapat meminta serangkaian nilai kunci yang sama sekali berbeda dengan menentukan label lain. Akibatnya, semua referensi utama tetap tidak berubah dalam kode Anda.

Komposisi nilai kunci

Azure App Configuration memperlakukan semua kunci yang disimpan sebagai entitas independen. App Configuration tidak mencoba menyimpulkan hubungan apa pun antara kunci atau untuk mewarisi nilai kunci berdasarkan hierarkinya. Namun, Anda dapat mengagregasi beberapa rangkaian kunci dengan menggunakan label yang digabungkan dengan penumpukan konfigurasi yang tepat dalam kode aplikasi Anda.

Mari lihat contohnya. Misalnya, Anda memiliki pengaturan bernama Asset1, yang nilainya dapat bervariasi didasarkan pada lingkungan pengembangan. Anda membuat kunci bernama “Asset1” dengan label kosong dan label bernama “Pengembangan”. Di label pertama, Anda menempatkan nilai default untuk Asset1, dan Anda menempatkan nilai khusus untuk “Pengembangan” untuk yang terakhir.

Dalam kode, Anda terlebih dahulu mengambil nilai kunci tanpa label apa pun, lalu Anda mengambil set nilai kunci yang sama untuk kedua kalinya dengan label "Pengembangan". Saat Anda mengambil nilai untuk kedua kalinya, nilai sebelumnya dari kunci ditimpa. Sistem konfigurasi .NET memungkinkan Anda untuk "menumpuk" beberapa set data konfigurasi di atas satu sama lain. Jika ada kunci dalam lebih dari satu kumpulan, kumpulan terakhir yang memuat kumpulan tersebut digunakan. Dengan kerangka kerja pemrograman modern, seperti .NET, Anda mendapatkan kemampuan tumpukan ini secara gratis jika Anda menggunakan penyedia konfigurasi asli untuk mengakses App Configuration. Cuplikan kode berikut menunjukkan bagaimana Anda dapat menerapkan penumpukan dalam aplikasi .NET:

// Augment the ConfigurationBuilder with Azure App Configuration
// Pull the connection string from an environment variable
configBuilder.AddAzureAppConfiguration(options => {
    options.Connect(configuration["connection_string"])
           .Select(KeyFilter.Any, LabelFilter.Null)
           .Select(KeyFilter.Any, "Development");
});

Gunakan label untuk mengaktifkan konfigurasi yang berbeda untuk lingkungan yang berbeda memberikan contoh lengkap.

Referensi ke data eksternal

Azure App Configuration dirancang untuk menyimpan data konfigurasi apa pun yang biasanya Anda simpan dalam file konfigurasi atau variabel lingkungan. Namun, beberapa jenis data mungkin lebih cocok untuk berada di sumber lain. Misalnya, simpan rahasia di Key Vault, file di Azure Storage, informasi keanggotaan di grup Microsoft Entra, atau daftar pelanggan dalam database.

Anda masih dapat memanfaatkan App Configuration dengan menyimpan referensi ke data eksternal dalam nilai kunci. Anda dapat menggunakan jenis konten untuk membedakan setiap sumber data. Ketika aplikasi Anda membaca referensi, aplikasi memuat data aktual dari sumber yang direferensikan, dengan asumsi aplikasi tersebut memiliki izin yang diperlukan ke sumber. Jika Anda mengubah lokasi data eksternal, Anda hanya perlu memperbarui referensi di App Configuration alih-alih memperbarui dan menyebarkan ulang seluruh aplikasi Anda.

Fitur Referensi Key Vault App Configuration adalah contoh dalam kasus ini. Fitur ini memungkinkan rahasia yang diperlukan untuk aplikasi yang akan diperbarui seperlunya sementara rahasia yang mendasarinya sendiri tetap di Key Vault.

Bootstrap Azure App Configuration

Untuk mengakses penyimpanan Azure App Configuration, Anda dapat menggunakan string koneksinya, yang tersedia di portal Azure. Karena string koneksi memiliki informasi masuk, string tersebut dianggap sebagai rahasia. Rahasia ini perlu disimpan di Azure Key Vault, dan kode Anda harus mengautentikasi ke Azure Key Vault untuk mengambilnya.

Opsi yang lebih baik adalah menggunakan fitur identitas terkelola di ID Microsoft Entra. Dengan identitas terkelola, Anda hanya perlu URL titik akhir Azure App Configuration untuk mengakses bootstrap ke penyimpanan Azure App Configuration Anda. Anda dapat menyematkan URL dalam kode aplikasi Anda (contohnya, di file appsettings.jspada). Lihat Menggunakan identitas terkelola untuk mengakses Azure App Configuration untuk informasi detail.

Akses Azure Kubernetes Service ke App Configuration

Opsi berikut tersedia untuk beban kerja yang dihosting di Azure Kubernetes Service (AKS) untuk mengakses Azure App Configuration. Opsi ini juga berlaku untuk Kubernetes secara umum.

  • Tambahkan Penyedia Kubernetes Azure App Configuration ke kluster AKS Anda. Penyedia Kubernetes berjalan sebagai pod dalam kluster. Ini dapat membuat Konfigurasi Peta dan Rahasia dari nilai kunci dan referensi Key Vault di penyimpanan App Configuration Anda. ConfigMap dan Secret dapat dikonsumsi sebagai variabel lingkungan atau file yang dipasang tanpa memerlukan modifikasi apa pun pada kode aplikasi Anda. Jika Anda memiliki beberapa aplikasi yang berjalan di kluster AKS yang sama, semuanya dapat mengakses Konfigurasi yang dihasilkan Peta dan Rahasia, menghilangkan kebutuhan akan permintaan individual ke App Configuration. Penyedia Kubernetes juga mendukung pembaruan konfigurasi dinamis. Ini adalah opsi yang direkomendasikan jika memungkinkan untuk Anda.

  • Perbarui aplikasi Anda untuk menggunakan pustaka penyedia Azure App Configuration. Pustaka penyedia tersedia dalam banyak kerangka kerja dan bahasa, seperti ASP.NET, .NET, Java Spring, JavaScript/Node.js, dan Python. Pendekatan ini memberi Anda akses penuh ke fungsionalitas App Configuration, termasuk konfigurasi dinamis dan manajemen fitur. Anda memiliki kontrol terperinci tentang data apa yang akan dimuat dan dari penyimpanan App Configuration mana untuk setiap aplikasi.

  • Integrasikan dengan penyebaran Kubernetes menggunakan Helm. Jika Anda tidak ingin memperbarui aplikasi atau menambahkan pod baru ke kluster AKS, Anda memiliki opsi untuk membawa data dari App Configuration ke kluster Kubernetes dengan menggunakan Helm melalui penyebaran. Pendekatan ini memungkinkan aplikasi Anda untuk terus mengakses konfigurasi dari variabel dan Rahasia Kubernetes. Anda dapat menjalankan peningkatan Helm kapan pun Anda ingin aplikasi Anda menggabungkan perubahan konfigurasi baru.

Akses App Service atau Azure Functions ke App Configuration

Gunakan penyedia App Configuration atau pustaka SDK untuk mengakses App Configuration langsung di aplikasi Anda. Pendekatan ini memberi Anda akses penuh ke fungsionalitas App Configuration, termasuk konfigurasi dinamis dan manajemen fitur. Aplikasi Anda yang berjalan di App Service atau Azure Functions dapat memperoleh akses ke penyimpanan App Configuration Anda melalui salah satu metode berikut:

Anda juga dapat memberikan aplikasi Anda akses ke data App Configuration sebagai Pengaturan aplikasi atau variabel lingkungan. Dengan pendekatan ini, Anda dapat menghindari proses mengubah kode aplikasi Anda.

Mengurangi permintaan yang dibuat ke Azure App Configuration

Permintaan yang berlebihan ke Azure App Configuration dapat mengakibatkan biaya pembatasan atau overage. Untuk mengurangi jumlah permintaan yang dibuat:

  • Tingkatkan batas waktu refresh, terutama jika nilai konfigurasi Anda tidak sering berubah. Tentukan waktu habis refresh baru menggunakan SetCacheExpiration metode.

  • Tonton satu kunci sentinel, daripada menonton satu kunci. Refresh semua konfigurasi hanya jika kunci sentinel berubah. Lihat Cara menggunakan konfigurasi dinamis dalam ASP.NET Core untuk contoh.

  • Gunakan Azure Event Grid untuk menerima pemberitahuan saat konfigurasi berubah, bukan terus-menerus melakukan penjajakan untuk setiap perubahan. Untuk informasi lebih lanjut, lihat Menggunakan Event Grid untuk pemberitahuan perubahan data App Configuration.

  • Aktifkan replikasi geografis penyimpanan App Configuration Anda dan sebarkan permintaan Anda di beberapa replika. Misalnya, gunakan replika yang berbeda dari setiap wilayah geografis untuk aplikasi yang disebarkan secara global. Setiap replika App Configuration memiliki kuota permintaan terpisah. Penyiapan ini memberi Anda model untuk skalabilitas dan peningkatan ketahanan terhadap pemadaman sementara dan regional.

Mengimpor data konfigurasi ke dalam Azure App Configuration

Azure App Configuration menawarkan opsi untuk mengimpor pengaturan konfigurasi Anda secara massal dari file konfigurasi Anda saat ini menggunakan portal Azure atau CLI. Anda juga dapat menggunakan opsi yang sama untuk mengekspor nilai dari Azure App Configuration, contohnya di antara penyimpanan terkait. Jika Anda ingin menyiapkan sinkronisasi berkelanjutan dengan repo Anda di GitHub atau Azure DevOps, Anda dapat menggunakan GitHub Action atau Azure Pipeline Push Task kami sehingga Anda dapat terus menggunakan praktik kontrol sumber yang ada sambil mendapatkan manfaat App Configuration.

Penyebaran beberapa wilayah di Azure App Configuration

Jika aplikasi Anda disebarkan di beberapa wilayah, kami sarankan Anda mengaktifkan replikasi geografis penyimpanan App Configuration Anda. Anda dapat membiarkan aplikasi Anda terutama terhubung ke replika yang cocok dengan wilayah tempat instans aplikasi Anda disebarkan dan memungkinkan mereka untuk melakukan failover ke replika di wilayah lain. Penyiapan ini meminimalkan latensi antara aplikasi Anda dan App Configuration, menyebarkan beban karena setiap replika memiliki kuota pembatasan terpisah, dan meningkatkan ketahanan aplikasi Anda terhadap pemadaman sementara dan regional. Lihat Ketahanan dan Pemulihan Bencana untuk informasi selengkapnya.

Membangun aplikasi dengan ketahanan tinggi

Aplikasi sering mengandalkan konfigurasi untuk memulai, membuat ketersediaan tinggi Azure App Configuration sangat penting. Untuk meningkatkan ketahanan, aplikasi harus memanfaatkan fitur keandalan App Configuration dan mempertimbangkan untuk mengambil langkah-langkah berikut berdasarkan persyaratan spesifik Anda.

  • Provisi di wilayah dengan dukungan zona ketersediaan Azure. Zona ketersediaan memungkinkan aplikasi tahan terhadap pemadaman pusat data. App Configuration menawarkan redundansi zona untuk semua pelanggan tanpa biaya tambahan. Direkomendasikan untuk membuat penyimpanan App Configuration Anda di wilayah dengan dukungan untuk zona ketersediaan. Anda dapat menemukan daftar wilayah tempat App Configuration telah mengaktifkan dukungan zona ketersediaan.
  • Aktifkan replikasi geografis dan izinkan aplikasi Anda untuk failover di antara replika. Penyiapan ini memberi Anda model untuk skalabilitas dan peningkatan ketahanan terhadap kegagalan sementara dan pemadaman regional. Lihat Ketahanan dan Pemulihan Bencana untuk informasi selengkapnya.
  • Sebarkan konfigurasi dengan praktik penyebaran yang aman. Perubahan konfigurasi yang salah atau tidak disengaja dapat sering menyebabkan waktu henti aplikasi. Anda harus menghindari membuat perubahan konfigurasi yang memengaruhi produksi langsung dari, misalnya, portal Azure jika memungkinkan. Dalam praktik penyebaran aman (SDP), Anda menggunakan model penyebaran paparan progresif untuk meminimalkan radius ledakan potensial masalah yang disebabkan penyebaran. Jika mengadopsi SDP, Anda dapat membuat dan menguji rekam jepret konfigurasi sebelum menyebarkannya ke produksi. Selama penyebaran, Anda dapat memperbarui instans aplikasi Anda untuk secara progresif mengambil rekam jepret baru. Jika masalah terdeteksi, Anda dapat mengembalikan perubahan dengan menyebarkan ulang rekam jepret terakhir yang diketahui baik (LKG). Rekam jepret tidak dapat diubah, menjamin konsistensi di semua penyebaran. Anda dapat menggunakan rekam jepret bersama dengan konfigurasi dinamis. Gunakan rekam jepret untuk konfigurasi dasar dan konfigurasi dinamis Anda untuk penimpaan konfigurasi darurat dan bendera fitur.
  • Sertakan konfigurasi dengan aplikasi Anda. Jika Anda ingin memastikan bahwa aplikasi Anda selalu memiliki akses ke salinan konfigurasi, atau jika Anda lebih suka menghindari dependensi runtime pada App Configuration sama sekali, Anda dapat menarik konfigurasi dari App Configuration selama waktu build atau rilis dan menyertakannya dengan aplikasi Anda. Untuk mempelajari lebih lanjut, lihat contoh mengintegrasikan App Configuration dengan alur CI/CD atau penyebaran Kubernetes.
  • Gunakan penyedia App Configuration. Aplikasi memainkan peran penting dalam mencapai ketahanan tinggi karena mereka dapat memperhitungkan masalah yang timbul selama runtime mereka, seperti masalah jaringan, dan merespons kegagalan dengan lebih cepat. Penyedia App Configuration menawarkan berbagai fitur ketahanan bawaan, termasuk penemuan replika otomatis, failover replika, percobaan ulang startup dengan batas waktu yang dapat disesuaikan, penembolokan konfigurasi, dan strategi adaptif untuk refresh konfigurasi yang andal. Sangat disarankan agar Anda menggunakan penyedia App Configuration untuk mendapatkan manfaat dari fitur-fitur ini. Jika itu bukan pilihan, Anda harus mempertimbangkan untuk menerapkan fitur serupa dalam solusi kustom Anda untuk mencapai tingkat ketahanan tertinggi.

Aplikasi klien dalam Azure App Configuration

Saat Anda menggunakan Azure App Configuration di aplikasi klien, pastikan Anda mempertimbangkan dua faktor utama. Pertama, jika Anda menggunakan string koneksi di aplikasi klien, Anda berisiko mengekspos kunci akses penyimpanan Azure App Configuration Anda kepada publik. Kedua, skala umum aplikasi klien dapat menyebabkan permintaan berlebihan ke penyimpanan Azure App Configuration Anda, yang dapat mengakibatkan biaya overage atau pembatasan. Untuk informasi selengkapnya tentang pembatasan, lihat FAQ.

Untuk mengatasi masalah ini, kami sarankan Anda menggunakan layanan proksi antara aplikasi klien dan penyimpanan Azure App Configuration Anda. Layanan proksi dapat mengautentikasi dengan aman dengan penyimpanan Azure App Configuration Anda tanpa masalah keamanan dari informasi autentikasi yang bocor. Anda dapat membangun layanan proksi dengan menggunakan salah satu pustaka penyedia Azure App Configuration, sehingga dapat memanfaatkan kemampuan penembolokan dan refresh bawaan untuk mengoptimasi volume permintaan yang dikirim ke Azure App Configuration. Untuk informasi selengkapnya tentang menggunakan penyedia Azure App Configuration, lihat artikel di Mulai Cepat dan Tutorial. Layanan proksi melayani konfigurasi dari cache ke aplikasi klien Anda, dan Anda menghindari dua masalah potensial yang dibahas di bagian ini.

Aplikasi beberapa penyewa dalam App Configuration

Aplikasi beberapa penyewa dibangun di atas arsitektur tempat instans berbagi aplikasi Anda melayani beberapa pelanggan atau penyewa. Misalnya, Anda mungkin memiliki layanan email yang menawarkan pengguna Anda akun terpisah dan pengalaman yang disesuaikan. Aplikasi Anda biasanya mengelola konfigurasi yang berbeda untuk setiap penyewa. Berikut adalah beberapa pertimbangan arsitektur untuk menggunakan App Configuration dalam aplikasi beberapa penyewa.

Konfigurasi sebagai Kode

Konfigurasi sebagai kode adalah praktik pengelolaan file konfigurasi pada sistem kontrol sumber Anda, misalnya, repositori git. Ini memberi Anda keuntungan seperti keterlacakan dan proses persetujuan untuk setiap perubahan konfigurasi. Jika Anda mengadopsi konfigurasi sebagai kode, App Configuration memiliki alat untuk membantu Anda dalam mengelola data konfigurasi dalam file dan menyebarkannya sebagai bagian dari proses pembuatan, rilis, atau CI/CD Anda. Dengan cara ini, aplikasi Anda dapat mengakses data terbaru dari penyimpanan App Configuration Anda.

  • Untuk GitHub, Anda dapat mengaktifkan App Configuration Sync GitHub Action untuk repositori Anda. Perubahan pada file konfigurasi disinkronkan ke App Configuration secara otomatis setiap kali permintaan pull digabungkan.
  • Untuk Azure DevOps, Anda dapat menyertakan Azure App Configuration Push, tugas alur Azure, di alur build atau rilis Anda untuk sinkronisasi data.
  • Anda juga dapat mengimpor file konfigurasi ke App Configuration menggunakan Azure CLI sebagai bagian dari sistem CI/CD Anda. Untuk informasi selengkapnya, lihat az appconfig kv import.

Model ini memungkinkan Anda untuk menyertakan langkah-langkah validasi dan pengujian sebelum menerapkan data ke App Configuration. Jika menggunakan beberapa penyimpanan App Configuration, Anda juga dapat mendorong data konfigurasi ke mereka secara bertahap atau sekaligus.

Langkah berikutnya