Bagikan melalui


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 memungkinkan Anda mengelompokkan kunci terkait dengan menggunakan awalan umum dalam namanya. Awalan dapat mencakup beberapa segmen yang dipisahkan oleh pemisah seperti / atau :, membentuk namespace hierarkis. Pendekatan ini berguna saat menyimpan kunci konfigurasi untuk beberapa aplikasi atau layanan mikro dalam satu penyimpanan App Configuration.

Penting untuk diingat bahwa kunci langsung dirujuk oleh kode aplikasi Anda untuk mengambil nilai yang sesuai. Oleh karena itu, kunci harus tetap stabil untuk menghindari perubahan kode. Jika diperlukan, Anda dapat menggunakan penyedia App Configuration untuk memangkas awalan kunci saat runtime.

Label memungkinkan Anda membuat variasi kunci, seperti versi yang berbeda atau pengaturan khusus lingkungan. Dengan menetapkan label, Anda dapat mempertahankan beberapa nilai untuk kunci yang sama. Aplikasi Anda kemudian dapat mengambil set nilai kunci yang berbeda dengan menentukan label yang sesuai, memungkinkan referensi kunci Anda dalam kode tetap konsisten.

Komposisi nilai kunci

App Configuration memperlakukan setiap kunci yang disimpan di dalamnya sebagai entitas independen. Ini tidak menyimpulkan hubungan antara kunci atau mewarisi nilai berdasarkan hierarki kunci. Namun, Anda dapat menggabungkan beberapa set kunci secara efektif dengan menggunakan label yang dikombinasikan dengan tumpukan konfigurasi di aplikasi Anda.

Pertimbangkan contoh di mana Anda memiliki pengaturan konfigurasi bernama TestApp:MySetting, yang nilainya bervariasi tergantung pada lingkungan. Anda dapat membuat dua kunci dengan nama yang sama, tetapi menetapkan label yang berbeda—satu tanpa label (default) dan yang lain berlabel Pengembangan. Kunci tanpa label menyimpan nilai default, sementara kunci berlabel berisi nilai khusus lingkungan.

Dalam kode aplikasi, Anda terlebih dahulu memuat nilai kunci default (tidak berlabel), lalu memuat nilai kunci khusus lingkungan menggunakan label Pengembangan . Saat memuat set kedua, setiap kunci yang cocok menimpa nilai yang dimuat sebelumnya. Pendekatan ini memungkinkan Anda untuk "menumpuk" beberapa set konfigurasi, dengan nilai terakhir yang dimuat lebih diutamakan. Penyedia App Configuration di seluruh bahasa dan platform yang didukung menawarkan kemampuan penumpukan ini.

Contoh berikut menunjukkan cara menerapkan komposisi nilai kunci dalam aplikasi .NET:

configBuilder.AddAzureAppConfiguration(options => {
    options.Connect(new Uri("<your-app-config-endpoint>"), new DefaultAzureCredential())
           // Load all keys that start with `TestApp:` and compose with two different labels
           .Select(keyFilter: "TestApp:*", labelFilter: LabelFilter.Null)
           .Select(keyFilter: "TestApp:*", labelFilter: "Development");
});

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

Perbarui konfigurasi

Azure App Configuration mendukung refresh konfigurasi dinamis tanpa memerlukan mulai ulang aplikasi. Penyedia App Configuration dapat memantau perubahan konfigurasi menggunakan dua pendekatan:

Memantau semua kunci yang dipilih

Dalam pendekatan ini, penyedia memantau semua kunci yang dipilih. Jika perubahan terdeteksi di salah satu nilai kunci yang dipilih, seluruh konfigurasi akan dimuat ulang. Pendekatan ini memastikan pembaruan segera tanpa memerlukan modifikasi kunci tambahan.

configBuilder.AddAzureAppConfiguration(options =>
{
    options.Connect(new Uri("<your-app-config-endpoint>"), new DefaultAzureCredential())
           // Load all keys that start with `TestApp:` and have no label
           .Select(keyFilter: "TestApp:*", labelFilter: LabelFilter.Null)
           .ConfigureRefresh(refreshOptions =>
           {
               // Trigger full configuration refresh when any selected key changes.
               refreshOptions.RegisterAll();
           });
});

Memantau kunci sentinel

Atau, Anda dapat memantau kunci individual, sering disebut sebagai kunci sentinel. Pendekatan ini berguna saat memperbarui beberapa nilai kunci. Dengan memperbarui kunci sentinel hanya setelah semua perubahan konfigurasi lainnya selesai, Anda memastikan aplikasi Anda memuat ulang konfigurasi sekali saja, mempertahankan konsistensi.

configBuilder.AddAzureAppConfiguration(options =>
{
    options.Connect(new Uri("<your-app-config-endpoint>"), new DefaultAzureCredential())
           // Load all keys that start with `TestApp:` and have no label
           .Select(keyFilter: "TestApp:*", labelFilter: LabelFilter.Null)
           .ConfigureRefresh(refreshOptions =>
           {
               // Trigger full configuration refresh only if the `SentinelKey` changes.
               refreshOptions.Register("SentinelKey", refreshAll: true);
           });
});

Kedua pendekatan tersedia melalui penyedia App Configuration di seluruh bahasa dan platform yang didukung.

Untuk mengurangi risiko inkonsistensi konfigurasi, gunakan rekam jepret konfigurasi untuk memastikan integritas konfigurasi.

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 dari App Configuration adalah contoh kasus. Fitur ini memungkinkan rahasia yang diperlukan untuk aplikasi diperbarui sesuai kebutuhan, sementara rahasia utamanya tetap berada di Key Vault.

Bootstrap Konfigurasi Aplikasi

Untuk mengakses penyimpanan Azure App Configuration, Anda dapat mengautentikasi menggunakan string koneksi atau ID Microsoft Entra. Meskipun string koneksi tersedia di portal Microsoft Azure, string tersebut berisi informasi kredensial dan harus diperlakukan sebagai rahasia. Jika Anda memilih pendekatan ini, simpan string koneksi dengan aman di Azure Key Vault dan pastikan aplikasi Anda mengautentikasi ke Key Vault untuk mengambilnya.

Pendekatan yang lebih aman dan direkomendasikan adalah menggunakan autentikasi ID Microsoft Entra. Jika aplikasi Anda dihosting di Azure—seperti di Azure Kubernetes Service, App Service, atau Azure Functions—Anda dapat menggunakan identitas terkelola yang disediakan oleh ID Microsoft Entra. Identitas terkelola menghilangkan kebutuhan untuk mengelola rahasia secara eksplisit. Dengan metode ini, aplikasi Anda hanya memerlukan URL titik akhir App Configuration, yang dapat disematkan dengan aman dalam kode aplikasi atau file konfigurasi Anda.

Untuk informasi selengkapnya, lihat Menggunakan identitas terkelola untuk mengakses App Configuration.

Akses Azure Kubernetes Service ke Konfigurasi Aplikasi

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 Azure App Configuration Kubernetes Provider ke kluster AKS Anda. Penyedia Kubernetes beroperasi sebagai pod dalam kluster. Ini dapat membuat ConfigMaps dan Secrets dari referensi key-values dan 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 ConfigMaps dan Secrets yang dihasilkan, 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 terhadap data yang akan dimuat dan dari toko 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 App Configuration dapat mengakibatkan pembatasan atau biaya berlebih. Untuk mengurangi jumlah permintaan yang dibuat:

  • Tingkatkan interval refresh, terutama jika nilai konfigurasi Anda tidak sering berubah. Tentukan interval refresh baru menggunakan SetRefreshInterval metode .

  • Amati satu kunci sentinel, daripada mengamati kunci-kunci individu. Segarkan seluruh konfigurasi hanya jika kunci penanda berubah. Lihat Cara menggunakan konfigurasi dinamis dalam ASP.NET Core untuk contoh.

  • Gunakan Penyedia App Configuration Kubernetes jika Anda menjalankan beberapa beban kerja dalam kluster Kubernetes, di mana masing-masing menarik data dari App Configuration secara individual. Penyedia Kubernetes mengambil data dari App Configuration dan membuatnya tersedia sebagai Kubernetes ConfigMaps dan Secrets. Dengan cara ini, beban kerja Anda dapat mengakses data melalui ConfigMaps dan Secrets tanpa perlu menarik data dari App Configuration secara terpisah.

  • Aktifkan replikasi geo untuk 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 kunci-nilai dari App Configuration, misalnya antara toko terkait. Jika Anda mengadopsi Konfigurasi sebagai Kode dan mengelola konfigurasi Anda di GitHub atau Azure DevOps, Anda dapat menyiapkan impor file konfigurasi yang sedang berlangsung menggunakan GitHub Actions atau Azure Pipeline Import Task.

Penyebaran beberapa wilayah di Azure App Configuration

Jika aplikasi Anda disebarkan di beberapa wilayah, kami sarankan Anda mengaktifkan geo-replication untuk penyimpanan App Configuration Anda. Anda dapat membiarkan aplikasi Anda terutama terhubung ke replika yang cocok dengan wilayah di mana aplikasi Anda diinstal dan mengizinkan mereka 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. Untuk informasi selengkapnya, lihat Ketahanan dan Pemulihan Bencana.

Membangun aplikasi dengan ketahanan tinggi

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

  • Penyediaan 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. Disarankan untuk membuat penyimpanan App Configuration Anda di wilayah yang mendukung zona ketersediaan. Anda dapat menemukan daftar wilayah tempat App Configuration telah mengaktifkan dukungan zona ketersediaan.
  • Aktifkan replikasi geografis dan izinkan aplikasi Anda melakukan failover atau mendistribusikan beban di antara replika. Penyiapan ini memberi Anda model untuk skalabilitas dan peningkatan ketahanan terhadap kegagalan sementara dan pemadaman regional. Untuk informasi selengkapnya, lihat Ketahanan dan Pemulihan Bencana.
  • 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 dengan pengungkapan bertahap untuk meminimalkan dampak besar masalah akibat 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 bertahap mengambil cuplikan baru. Jika masalah terdeteksi, Anda dapat membatalkan perubahan dengan menerapkan ulang snapshot LKG (Last-Known-Good) yang terakhir. Rekam jepret tidak dapat diubah, menjamin konsistensi di semua penyebaran. Anda dapat menggunakan rekam jepret bersama dengan konfigurasi dinamis. Gunakan cuplikan untuk konfigurasi dasar serta konfigurasi dinamis untuk penimpaan konfigurasi darurat dan pengaturan 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 Konfigurasi Aplikasi. 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, termasuk penemuan replika otomatis, failover replika, percobaan ulang saat startup dengan batas waktu yang dapat disesuaikan, penyimpanan konfigurasi sementara, dan strategi adaptif untuk penyegaran 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 App Configuration

Saat Anda menggunakan Azure App Configuration di aplikasi klien, pastikan Anda mempertimbangkan dua faktor utama. Pertama, jika Anda menggunakan string koneksi dalam aplikasi klien, Anda berisiko membocorkan kunci akses dari App Configuration store Anda kepada publik. Kedua, skala umum aplikasi klien dapat menyebabkan permintaan berlebihan ke penyimpanan Azure App Configuration Anda, yang dapat mengakibatkan biaya tambahan 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 toko Azure App Configuration Anda tanpa masalah keamanan akibat kebocoran informasi autentikasi. Anda dapat membangun layanan proksi dengan menggunakan salah satu pustaka penyedia App Configuration, sehingga Anda dapat memanfaatkan kemampuan caching dan refresh bawaan untuk mengoptimalkan volume permintaan yang dikirim ke App Configuration. Untuk informasi selengkapnya tentang menggunakan penyedia App Configuration, lihat artikel dalam bagian Memulai. Layanan proksi melayani konfigurasi dari cache ke aplikasi klien Anda, dan Anda menghindari dua masalah potensial yang dibahas di bagian ini.

Penting untuk dipertimbangkan bahwa, ketika memunculkan konfigurasi ke aplikasi klien, nilai konfigurasi akan terlihat oleh pengguna akhir. Perawatan harus dilakukan untuk menghindari paparan data sensitif yang tidak diinginkan. Misalnya, nama pengguna dan grup dalam pengaturan penargetan bendera fitur dapat dianggap sebagai EUII (Informasi Pengidentifikasi Pengguna Akhir). Untuk mengurangi risiko ini, pertimbangkan untuk menggunakan sumber daya penyimpanan App Configuration terpisah yang didedikasikan untuk konfigurasi aplikasi klien, atau konfigurasi segmen menggunakan mekanisme pemfilteran seperti awalan kunci, label, atau tag dan filter di server proksi yang sesuai.

Aplikasi multitenant dalam App Configuration

Aplikasi multitenancy dibangun dengan arsitektur di mana satu instance aplikasi Anda yang dibagikan melayani banyak 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. Anda juga dapat merujuk kode contoh untuk penyiapan aplikasi multipenyewa.

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 mengimpor file konfigurasi dari repositori GitHub ke penyimpanan App Configuration menggunakan GitHub Actions
  • Untuk Azure DevOps, Anda dapat menyertakan tugas pipeline Azure Azure App Configuration Import dalam alur build atau rilis Anda untuk melakukan sinkronisasi data.
  • Untuk yang lain, Anda 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 Anda menggunakan beberapa penyimpanan App Configuration, Anda juga dapat mengirimkan data konfigurasi ke penyimpanan tersebut secara bertahap atau sekaligus.

Langkah selanjutnya