Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Yapılandırma bilgilerini uygulama dağıtım paketinden merkezi bir konuma taşıyın. Bu yaklaşım, yapılandırma verilerinin yönetimini ve denetimini kolaylaştırır ve yapılandırma verilerini uygulamalar ve uygulama örnekleri arasında paylaşır.
Bağlam ve sorun
Çoğu uygulama çalışma zamanı ortamı, uygulamayla dağıttığınız dosyalardaki yapılandırma bilgilerini içerir. Bazı durumlarda, uygulamayı dağıttığınızda uygulamanın davranışını değiştirmek için bu dosyaları düzenleyebilirsiniz. Ancak, yapılandırma değişiklikleri uygulamayı yeniden dağıtmanızı gerektirir. Yeniden dağıtım genellikle kabul edilemez aksama süresi ve diğer yönetim fazladan yüküne neden olur.
Yerel yapılandırma dosyaları da yapılandırmayı tek bir uygulamayla sınırlar. Bazı senaryolarda yapılandırma ayarlarını birden çok uygulamada paylaşmak isteyebilirsiniz. Örnek olarak veritabanı bağlantı dizeleri, kullanıcı arabirimi tema bilgileri ve ilgili bir uygulama kümesinin kullandığı kuyruk ve depolama URL'leri verilebilir.
Uygulamanın çalışan birden çok örneğinde yerel yapılandırmalarda yapılan değişiklikleri yönetmek zordur. Bu zorluk, güncellemeyi dağıtırken farklı yapılandırma ayarlarına sahip örneklerin ortaya çıkmasına yol açabilir.
Uygulama ve bileşenlere yönelik güncelleştirmeler de yapılandırma şemalarında değişiklik yapılmasını gerektirebilir. Birçok yapılandırma sistemi, yapılandırma bilgilerinin farklı sürümlerini desteklemez.
Çözüm
Yapılandırma bilgilerini dış depolama alanında depolayın ve yapılandırma ayarlarını hızlı ve verimli bir şekilde okumak ve güncelleştirmek için kullanabileceğiniz bir arabirim sağlayın. Dış depo türü, uygulamanın barındırma ve çalışma zamanı ortamına bağlıdır. Bulutta barındırılan bir senaryoda dış depolama genellikle bulut tabanlı bir depolama hizmeti veya ayrılmış yapılandırma hizmetidir. Ayrıca barındırılan bir veritabanı veya başka bir özel sistem de olabilir.
Yapılandırma bilgileri için seçtiğiniz yedekleme deposunun tutarlı ve kullanımı kolay erişim sağlayan bir arabirimi olmalıdır. Bilgileri doğru yazılan ve yapılandırılmış bir biçimde kullanıma sunmalıdır. Uygulamanın yapılandırma verilerini korumak için kullanıcıların erişimini yetkilendirmesi de gerekebilir. Her yapılandırmanın birden çok sürüm sürümü de dahil olmak üzere geliştirme, hazırlama ve üretim gibi yapılandırmanın birden çok sürümünü depolamak için yeterince esnek olması gerekebilir.
Birçok yerleşik yapılandırma sistemi, uygulama başlatıldığında verileri okur ve ardından hızlı erişim sağlamak ve uygulama performansı üzerindeki etkiyi en aza indirmek için verileri bellekte önbelleğe alır. Kullandığınız yedekleme deposunun türüne ve bu deponun gecikme süresine bağlı olarak, dış yapılandırma deposu içinde bir önbelleğe alma mekanizması uygulamak isteyebilirsiniz. Daha fazla bilgi için Önbelleğe Alma Kılavuzu'na bakın. Aşağıdaki diyagramda, isteğe bağlı yerel önbellekle Dış Yapılandırma Deposu düzenine genel bir bakış gösterilmektedir.
Sorunlar ve dikkat edilmesi gerekenler
Bu düzenin nasıl uygulaneceğine karar velarken aşağıdaki noktaları göz önünde bulundurun:
Kabul edilebilir performans, yüksek kullanılabilirlik ve sağlamlık sağlayan bir destek deposu seçin. Uygulama bakım ve yönetim sürecinizde yedekleyebileceğinizden emin olun. Bulutta barındırılan bir uygulamada, bu gereksinimleri karşılamak için bir bulut depolama mekanizması veya ayrılmış bir yapılandırma platformu hizmeti kullanın.
Destek deposunun şemasını, barındırabileceği bilgi türlerinde esneklik sağlayacak şekilde tasarlayın. Yazılan veriler, ayar koleksiyonları, ayarların birden çok sürümü ve uygulamaların gerektirdiği diğer özellikler gibi tüm yapılandırma gereksinimleri için özellikler sağladığından emin olun. Şema, gereksinimler değiştiğinde daha fazla ayarı destekleyecek şekilde kolay genişletilebilir olmalıdır.
Yedekleme deposunun fiziksel özelliklerini, yapılandırma bilgilerini depolama şekliyle ilişkisini ve performans üzerindeki etkilerini göz önünde bulundurun. Örneğin, yapılandırma bilgilerini içeren bir XML belgesinin depolanması, yapılandırma arabiriminin veya uygulamanın tek tek ayarları okumak için belgeyi ayrıştırmasını gerektirir. Ayrıştırma, ayarları güncelleştirme yönteminizi karmaşıklaştırır, ancak ayarları önbelleğe almak daha yavaş okuma performansını dengelemeye yardımcı olabilir.
Yapılandırma arabirimi, yapılandırma ayarlarının kapsamı ve devralma mekanizmasının denetimini nasıl mümkün kılar düşünün. Örneğin, yapılandırma ayarlarını kuruluş, uygulama ve makine düzeylerinde kapsamanız gerekebilir. Yapılandırma arabiriminin farklı kapsamlara erişim üzerinde denetim yetkisini devretmesi ve her uygulamanın ayarları geçersiz kılmasını engellemesi veya buna izin vermesi gerekebilir.
Yapılandırma arabirimi, yapılandırma verilerini türü belirtilmiş değerler, koleksiyonlar, anahtar-değer çiftleri ve özellik grupları gibi gerekli biçimlerde sunabilmelidir.
Ayarlar hata içerdiğinde veya yedekleme deposunda mevcut olmadığında yapılandırma deposu arabiriminin nasıl davrandığını düşünün. Varsayılan ayarları geri yüklemeniz veya hataları kaydetmeniz gerekebilir. Ayrıca yapılandırma ayarı anahtarlarının veya adlarının büyük/küçük harf duyarlılığını, ikili verilerin nasıl depolanıp işleneceğini ve null veya boş değerlerin nasıl işleneceğini de göz önünde bulundurun.
Yapılandırma verilerini korumayı ve yalnızca uygun kullanıcılara ve uygulamalara erişim vermeyi göz önünde bulundurun. Yapılandırma deposu arabirimi genellikle bu özelliği sağlar, ancak kullanıcıların ve uygulamaların uygun izinler olmadan yedekleme deposundaki verilere doğrudan erişememelerini de sağlamanız gerekir. Yapılandırma verilerini okumak ve yazmak için gereken izinler arasında kesin bir ayrım olduğundan emin olun. Ayrıca yapılandırma ayarlarının bazılarını mı yoksa tümünü mü şifrelemeniz gerektiğini ve bu şifrelemeyi yapılandırma deposu arabiriminde nasıl uygulayabileceğinizi de göz önünde bulundurun.
Yapılandırma değerlerini okuyan veya değiştiren kişileri ve bu eylemlerin ne zaman gerçekleştiğini kaydetmek için denetim günlüğünü de açmanız gerekir. Yapılandırma verilerinin tüm yerel geri dönüş kopyalarına aynı denetim gereksinimlerini uygulayın.
Duyarlı olmayan yapılandırma değerlerini hassas bilgilerden ayırın. Özellik bayrakları ve uç noktalar gibi rutin ayarları yapılandırma ayarlarında tutun. Bağlantı dizeleri, API anahtarları, sertifikalar ve parolalar gibi gizli dizileri, şifreleme ve denetimli erişim sağlayan ayrılmış bir gizli dizi yönetim sisteminde depolayın.
Çalışma zamanı sırasında uygulama davranışını değiştiren merkezi olarak depolanan yapılandırmalar çok önemlidir. Uygulama kodunu dağıtmak için kullandığınız mekanizmaları kullanarak bunları dağıtın, güncelleştirin ve yönetin. Örneğin, değişikliğin bu yapılandırmayı kullanan tüm uygulamalara uygun olduğundan emin olmak için tam olarak test edilmiş ve aşamalı bir dağıtım yaklaşımı kullanarak birden fazla uygulamayı etkileyebilecek değişiklikler gerçekleştirmeniz gerekir. Bir yönetici bir uygulamayı güncelleştirmek için bir ayarı düzenlerse, aynı ayarı kullanan diğer uygulamaları olumsuz etkileyebilir. Azure Uygulama Yapılandırması gibi ürünler düzeltme geçmişi, belirli bir noktaya kurtarma (PITR), sabit anlık görüntüler ve aşamalı dağıtım desenleri gibi yerleşik özellikler aracılığıyla bu riski azaltmaya yardımcı olur.
Bir uygulama yapılandırma bilgilerini önbelleğe alırsa, yapılandırma değiştiğinde uygulamayı uyarmalısınız. Bu bilgilerin düzenli aralıklarla otomatik olarak yenilenmesi için önbelleğe alınan yapılandırma verileri için bir süre sonu ilkesi uygulayabilirsiniz. Uygulama değişiklikleri görür ve uygular.
Önbelleğe alınan yapılandırma verileri, dış yapılandırma deposunun uygulama çalışma zamanında karşılaştığı geçici bağlantı sorunlarını gidermeye yardımcı olabilir, ancak uygulama başlatıldığında dış depo çalışmıyorsa bu yaklaşım genellikle sorunu çözmez. Uygulamanız başlangıçta canlı değerleri alamıyorsa, uygulama dağıtım işlem hattınızın bir yapılandırma dosyasında kullanılacak bilinen son yapılandırma değerleri kümesini sağlayabildiğinden emin olun.
Bu desen ne zaman kullanılır?
Bu düzeni aşağıdaki durumlarda kullanın:
Yapılandırma ayarlarını birden çok uygulama veya örnek arasında paylaşmanız veya bunlar arasında standart bir yapılandırmayı zorunlu kılmanız gerekir.
Standart yapılandırma sisteminiz görüntüler veya karmaşık veri yapıları gibi tüm gerekli ayar türlerini desteklemez.
Uygulamaların merkezi olarak depolanan değerlerin bazılarını veya tümünü geçersiz kılması için izin verirken bazı ayarlar için tamamlayıcı bir depoya ihtiyacınız vardır.
Birden çok uygulamada yönetimi basitleştirmeniz ve isteğe bağlı olarak yapılandırma deposuna erişimi kaydederek yapılandırma kullanımını izlemeniz gerekir.
Bu düzen aşağıdaki durumlarda uygun olmayabilir:
- Yapılandırmanız basit, yerel ve tek bir uygulamadır ve yalnızca normal yayın döngüleri sırasında değişir. Bu durumda, dış yapılandırma deposu gereksiz işlem karmaşıklığı ekleyebilir.
İş yükü tasarımı
Azure Well-Architected Framework sütunları kapsamındaki hedefleri ve ilkeleri ele almak için bir iş yükü tasarımında Dış Yapılandırma Deposu düzeninin nasıl kullanılacağını değerlendirin. Aşağıdaki tabloda, bu desenin her bir sütunun hedeflerini nasıl desteklediği hakkında rehberlik sağlanmaktadır.
| Kolon | Bu desen sütun hedeflerini nasıl destekler? |
|---|---|
| Operasyonel Mükemmellik, standartlaştırılmış süreçler ve ekip uyumu aracılığıyla iş yükü kalitesinin sunulmasına yardımcı olur. | Uygulama yapılandırmasının uygulama kodundan ayrılması, ortama özgü yapılandırmayı destekler ve yapılandırma değerlerine sürüm oluşturma uygular. Dış yapılandırma depoları, güvenli dağıtım uygulamalarını uygulamak için özellik bayraklarını yönetmek için de ortak bir yerdir. - OE:10 Otomasyon tasarımı - OE:11 Güvenli dağıtım uygulamaları |
Bu model bir sütun içinde dengeleri ortaya çıkartıyorsa, bunları diğer sütunların hedeflerine karşı değerlendirin.
Example
Aşağıdaki örneklerde, Azure'de Dış Yapılandırma Deposu düzeninin nasıl uygulanacakları gösterilmektedir. İlk örnekte Uygulama Yapılandırması ve istemci kitaplıkları kullanılır. İkinci örnek, özel uygulama gerektiren senaryolar için özel bir yedekleme deposu kullanır.
App Configuration
Uygulamaların çoğu özel yapılandırma deposu yerine Uygulama Yapılandırması kullanabilir. Uygulama Yapılandırması, ad alanlarını uygulayabileceğiniz anahtar-değer çiftlerini destekler. Uygulama Yapılandırması ayrıca yapılandırmanın sabit anlık görüntülerini de destekler, böylece yapılandırma değişikliklerini çalıştırma riskine gerek kalmadan inceleyebilir, geri alabilir veya aşamalı olarak dağıtabilirsiniz.
Uygulamaların kod değişikliği veya yeniden dağıtma olmadan çalışma zamanında anlık görüntüler arasında geçiş yapmasına izin vermek için anlık görüntü başvurularını kullanın. Yapılandırma değerlerini dışarı aktararak, uygulama başlatıldığında hizmete ulaşılamıyorsa bir kopyanın uygulamanızla birlikte kullanılması için yedek olarak göndermesini sağlayabilirsiniz.
Uygulama Yapılandırması'nda anahtarlar ve değerler Unicode dizeleridir ve her anahtar-değer çifti etiket tabanlı değişkenler ve içerik türü gibi isteğe bağlı meta veriler içerebilir. Uygulamanızın JSON veya yerleşik Uygulama Yapılandırması türü gibi bir değeri nasıl yorumlaması gerektiğini açıklamak için içerik türünü kullanın. Uygulama Yapılandırması ayrıca PITR ile bir düzeltme geçmişi tutar ve bu da önceki anahtar-değer çiftlerini gözden geçirmenize ve kurtarmanıza yardımcı olur.
Dayanıklılık için, depolama alanınızı kullanılabilirlik alanlarını destekleyen bir bölgede sağlayın ve coğrafi çoğaltmayı açın; böylece uygulamalarınızı en yakın çoğaltmadan okuyacak şekilde yapılandırabilir ve bölgesel kesintiler sırasında çoğaltma uç noktaları arasında geçiş yapabilirsiniz. Azure Key Vault referanslarını kullanarak gizli bilgileri Key Vault'ta saklayın ve kimlik bilgilerini yapılandırma deposuna doğrudan kaydetmek yerine Uygulama Yapılandırması'ndan bunlara referans verin. Uygulama Yapılandırmasında uygulamaların kimliğini doğrulamak için bağlantı dizeleri yerine managed identity ve Azure rol tabanlı erişim denetimi (Azure RBAC) kullanın.
Azure Kubernetes Service (AKS)'da çalışan iş yükleri için App Configuration Kubernetes Provider iş yükü kapsayıcılarınızda kod değişikliğine gerek kalmadan doğrudan deponuzdan ConfigMap'ler ve Gizli Diziler oluşturabilir. Güvenli dağıtım uygulamalarınızda hedeflenen dağıtım ve değişken tabanlı deneme dahil olmak üzere özellik bayraklarını yönetmek için De Uygulama Yapılandırması'yı kullanabilirsiniz.
Ağ yalıtımı için App Configuration özel uç noktaları kullanın, böylece istemci trafiği Azure Özel Bağlantı aracılığıyla özel IP adreslerinde kalır. Özel erişimi ayarladıktan sonra genel uç noktanın kullanıma açık olmasını azaltmak için genel erişimi kapatabilirsiniz . Coğrafi olarak çoğaltılan dağıtımlarda tek bir özel uç nokta tüm çoğaltmalara ulaşabilir, ancak daha yüksek bölgesel dayanıklılık için her çoğaltma bölgesi için özel uç noktalar sağlayabilir ve Etki Alanı Adı Sistemi'ni (DNS) buna göre ayarlayabilirsiniz.
Müşteri kütüphaneleri
İstemci kitaplıkları önceki özelliklerin çoğunu sağlar. İstemci kitaplıkları, uygulama çalışma zamanına entegre olarak değerleri getirir ve önbelleğe alır, değiştiğinde değerleri yeniler ve App Configuration'daki geçici kesintileri işler.
| Runtime | Müşteri kütüphanesi | Notlar | Hızlı Başlangıç |
|---|---|---|---|
| .NET | Microsoft.Extensions.Configuration.AzureAppConfiguration |
Microsoft.Extensions.Configuration için sağlayıcı |
.NET için Hızlı Başlangıç |
| ASP.NET Çekirdeği | Microsoft.Azure.AppConfiguration.AspNetCore | ASP.NET Core için istek temelli yenileme ara yazılımı ekler | ASP.NET Core için Hızlı Başlatma |
| .NET'da Azure İşlevleri | Microsoft.Azure.AppConfiguration.Functions.Worker | Kullanan yalıtılmış çalışan modeli için sağlayıcı Program.cs |
Azure İşlevleri için Hızlı Başlangıç |
| .NET Framework | Microsoft.Configuration.ConfigurationBuilders.AzureAppConfiguration | için yapılandırma oluşturucusu System.Configuration |
.NET Framework için Quickstart |
| Java Spring | com.azure.spring > azure-spring-cloud-appconfiguration-config | Spring Framework’e erişimi ConfigurationProperties aracılığıyla destekler |
Java Spring için Hızlı Başlangıç |
| Python | Azure Uygulama Yapılandırma Sağlayıcısı | Dinamik yenileme ve Key Vault başvuru desteği sağlayan sağlayıcı kitaplığı | Python için Hızlı Başlangıç |
| JavaScript ve Node.js | @azure/app-configuration-provider (Azure uygulama yapılandırma sağlayıcısı) | Dinamik yenileme ve Key Vault referansı desteği sağlayan Provider kütüphanesi | JavaScript için Hızlı Başlangıç |
Aşağıdaki App Configuration sync GitHub Action ve yerleşik Azure Pipelines görevleri de kullanılabilir:
Özel yedekleme deposu örneği
Azure tarafından barındırılan bir uygulamada, yapılandırma bilgilerini dışarıda depolamak için Azure Depolama kullanabilirsiniz. Bu yaklaşım dayanıklılık ve yüksek performans sağlar. Varsayılan olarak, Depolama verileri tek bir veri merkezinde üç kez çoğaltır. Bölgeler arasında coğrafi yedeklilik için el ile yük devretme özelliklerine sahip coğrafi çoğaltma ayarlayabilirsiniz. Azure Tablo Depolaması, değerler için esnek bir şema kullanabilen bir anahtar-değer deposu sağlar. Azure Blob Depolama, tek tek adlandırılmış bloblarda her tür veriyi barındırabilen hiyerarşik, kapsayıcı tabanlı bir depo sağlar.
Bu düzeni uyguladığınızda, Blob Depolama soyutlamanız ve ayarlarınızı uygulamalarınızda kullanıma sunmanız gerekir. Ayrıca çalışma zamanında güncelleştirmeleri denetlemeniz ve bu güncelleştirmelere nasıl yanıt vereceğine karar vermeniz gerekir.
Aşağıdaki örnekte, yapılandırma bilgilerini depolamak ve kullanıma açmak için basit bir yapılandırma deposu ve Blob Depolama nasıl kullanabileceğiniz gösterilmektedir.
BlobSettingsStore sınıfı, yapılandırma bilgilerini saklamak amacıyla Blob Depolama'ı soyutlar. Basit ISettingsStore bir arabirim uygular.
public interface ISettingsStore
{
Task<ETag> GetVersionAsync();
Task<Dictionary<string, string>> FindAllAsync();
}
Bu arabirim, yapılandırma deposunun barındırdığı yapılandırma ayarlarını alma yöntemlerini tanımlar ve son yapılandırma ayarı değişikliklerini algılamak için kullanabileceğiniz bir sürüm numarası içerir. Bir BlobSettingsStore sınıf, sürüm oluşturmayı uygulamak için blobun özelliğini kullanabilir ETag . Özellik, her blob yazıldığında otomatik olarak güncelleştirilir.
Note
Bu basit çizim, tasarım gereği tüm yapılandırma ayarlarını yazılan değerler yerine dize değerleri olarak kullanıma sunar.
Bir ExternalConfigurationManager sınıfı, bir BlobSettingsStore örneğin etrafında sarmalayıcı görevi görür. Bir uygulama yapılandırma bilgilerini almak için bu sınıfı kullanabilir. Bu sınıf, sistem çalışırken yapılandırma güncelleştirmelerini yayımlamak için Microsoft Reaktif Uzantılar gibi bir değişiklik bildirim mekanizması kullanabilir. Ayrıca, daha iyi dayanıklılık ve performans sağlamak için ayarların Cache-Aside desenini uygular.
Aşağıdaki örnek, bir sınıfı nasıl uygulayabileceğinizi ExternalConfigurationManager gösterir.
static void Main(string[] args)
{
// Start monitoring configuration changes.
ExternalConfiguration.Instance.StartMonitor();
// Get a setting.
var setting = ExternalConfiguration.Instance.GetAppSetting("someSettingKey");
…
}
Sonraki Adımlar
- App Yapılandırma örnekleri
- Helm kullanarak Uygulama Yapılandırmasını Kubernetes dağıtımlarıyla tümleştirme
- Uygulama Yapılandırması'nda özellik bayraklarını yönetme
- Önbelleğe alma kılavuzu
- Uygulama Yapılandırması en iyi yöntemleri