Dış Yapılandırma Deposu düzeni

Azure App Configuration
Azure Blob Storage

Yapılandırma bilgilerini uygulama dağıtım paketinden merkezi bir konuma taşıyın. Bu model, yapılandırma verilerinin daha kolay yönetilmesi ve denetlenmesinin yanı sıra, yapılandırma verilerinin uygulamalar ve uygulama örnekleri arasında paylaşılması konusunda çeşitli avantajlar sağlayabilir.

Bağlam ve sorun

Çoğu uygulama çalışma zamanı ortamı, uygulama ile birlikte dağıtılan dosyaların barındırdığı yapılandırma bilgilerini içerir. Bazı durumlarda, uygulama dağıtıldıktan sonra bu dosyaları düzenleyerek uygulamanın davranışını değiştirmek mümkündür. Bununla birlikte, yapılandırmada değişiklik yapılması uygulamanın yeniden dağıtılmasını gerektirdiğinden, çoğu durumda kabul edilemez kapalı kalma sürelerine ve diğer yönetim yüklerine yol açar.

Yerel yapılandırma dosyaları da yapılandırmayı tek bir uygulamayla sınırlar, ancak bazen yapılandırma ayarlarının birden çok uygulamada ortak olması kullanışlı olur. Veritabanı bağlantı dizeleri, kullanıcı arabirimi tema bilgileri ya da ilgili bir uygulama kümesi tarafından kullanılan kuyruk ve depolama alanlarının URL’leri buna örnek olarak verilebilir.

Özellikle de bir bulutta barındırma senaryosunda, uygulamanın çalışan durumdaki birden çok örneğinde yerel yapılandırmalarda yapılan değişikliklerin yönetilmesi zordur. Bu, güncelleştirme dağıtılırken örneklerin farklı yapılandırma ayarları kullanıyor olmasına yol açabilir.

Ayrıca, uygulama ve bileşenlerde yapılan güncelleştirmeler 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ın hızla okunup güncelleştirilmesi için kullanılabilecek bir arabirim sağlayın. Dış depolama türü, uygulamanın barındırma ve çalışma zamanı ortamına bağlıdır. Bulutta barındırılan bir senaryoda genellikle bulut tabanlı bir depolama hizmeti veya ayrılmış yapılandırma hizmetidir, ancak barındırılan bir veritabanı veya başka bir özel sistem 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ılmış 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 ve yapılandırmanın birden çok sürümünün (geliştirme, hazırlama veya üretim gibi her birinin birden çok sürüm sürümü dahil) depolanmasına izin verecek kadar esnek olması da gerekebilir.

Birçok yerleşik yapılandırma sistemi, hızlı erişim sağlamak ve uygulama performansı üzerindeki etkiyi en aza indirmek için uygulama başlatıldığında verileri okur ve bellek üzerinde önbelleğe alır. Kullanılan yedekleme deposunun türüne ve bu deponun gecikme süresine bağlı olarak, dış yapılandırma deposunun içinde bir önbelleğe alma mekanizması uygulamak faydalı olabilir. Daha fazla bilgi için bkz. Önbelleğe Alma Kılavuzu. Şekilde, isteğe bağlı olarak yerel önbellek içeren Dış Yapılandırma Deposu düzenine genel bakış sunulmuştur.

İsteğe bağlı olarak yerel önbellek içeren Dış Yapılandırma Deposu düzenine genel bakış

Sorunlar ve dikkat edilmesi gerekenler

Bu düzenin nasıl uygulanacağına karar verirken aşağıdaki noktaları göz önünde bulundurun:

Kabul edilebilir düzeyde performans, yüksek kullanılabilirlik, sağlamlık sağlayan ve uygulama bakımı ile yönetimi sürecinin bir parçası olarak yedeklenebilecek bir yedekleme deposu seçin. Bulutta barındırılan bir uygulamada, bulut depolama mekanizması veya ayrılmış yapılandırma platformu hizmeti kullanmak genellikle bu gereksinimleri karşılamak için iyi bir seçimdir.

Yedekleme deposunun şemasını, içerebileceği bilgi türleri açısından esnek olacak şekilde tasarlayın. Yazılan veriler, ayar koleksiyonları, ayarların birden çok sürümü ve şemayı kullanan uygulamaların gerektirdiği diğer tüm özellikler gibi yapılandırma gereksinimlerinin tamamını karşıladığından emin olun. Şema, gereksinimler değiştikçe ek ayarları desteklemek üzere kolayca genişletilebilmelidir.

Yedekleme deposunun fiziksel özelliklerini, bunların yapılandırma bilgilerinin depolanmasıyla ilişkisini ve performans üzerindeki etkisini göz önünde bulundurun. Örneğin, yapılandırma bilgilerini içeren bir XML belgesinin depolanması, yapılandırma arabiriminin veya uygulamanın ayrı ayrı ayarları okumak için belgeyi ayrıştırabilmesini gerektirir. Bu, bir ayarın güncelleştirilmesini daha karmaşık hale getirse de ayarların önbelleğe alınması, yavaşlayan okuma performansının dengelenmesine yardımcı olabilir.

Yapılandırma arabiriminin kapsamın denetlenmesine ve yapılandırma ayarlarının devralınmasına nasıl izin vereceğini göz önünde bulundurun. Örneğin, yapılandırma ayarları kapsamının kuruluş, uygulama ve makine düzeyinde belirlenmesi gerekebilir. Erişim üzerindeki denetim için farklı kapsamların temsilci olarak atanmasını desteklemesi ve tek tek uygulamaların ayarları geçersiz kılmasını engellemesi ya da buna izin vermesi gerekebilir.

Yapılandırma arabiriminin yapılandırma verilerini yazılan değerler, koleksiyonlar, anahtar/değer çiftleri veya özellik paketleri gibi gerekli biçimlerde kullanıma sunabildiğinden emin olun.

Ayarların hata içermesi ya da yedekleme deposunda mevcut olmaması durumunda yapılandırma deposu arabiriminin nasıl davranacağını göz önünde bulundurun. Varsayılan ayarların döndürülmesi ve hataların günlüğe kaydedilmesi uygun olabilir. Ayrıca, yapılandırma ayarı anahtarlarının veya adlarının büyük/küçük harfe duyarlılığı, ikili verilerin depolanması ve işlenmesi ile null ya da boş değerlerin işlenme yolları gibi konuları göz önünde bulundurun.

Yapılandırma verilerinin yalnızca uygun kullanıcı ve uygulamalara erişim izin verecek şekilde nasıl korunacağını göz önünde bulundurun. Bu büyük olasılıkla yapılandırma deposu arabiriminin bir özelliğidir, ancak yedekleme deposundaki verilere uygun izin olmadan, doğrudan erişilememesini sağlamak da gereklidir. Yapılandırma verilerini okumak ve yazmak için gerekli izinler arasında katı bir ayrım olduğundan emin olun. Ayrıca, yapılandırma ayarlarının tümünü mü yoksa bir kısmını mı şifrelemeniz gerektiğini ve bunun yapılandırma deposu arabiriminde nasıl uygulanacağını göz önünde bulundurun.

Merkezi olarak depolan ve çalışma zamanı sırasında uygulama davranışını değiştiren yapılandırmalar kritik öneme sahiptir ve bunların uygulama kodunu dağıtmak için kullanılan mekanizmalarla dağıtılması, güncelleştirilmesi ve yönetilmesi gerekir. Örneğin, birden fazla uygulamayı etkileyebilecek değişikliklerin bu yapılandırmayı kullanan tüm uygulamalar için uygun olduğundan emin olunması için bir tam test ve hazırlanmış dağıtım yaklaşımı kullanılarak gerçekleştirilmesi gerekir. Bir yönetici, bir uygulamayı güncelleştirmek için bir ayarı düzenlerse, bu ayarı kullanan diğer uygulamalar bundan olumsuz etkilenebilir.

Bir uygulama yapılandırma bilgilerini önbelleğe alıyorsa, uygulama yapılandırması değiştiğinde bu uygulamanın uyarılması gerekir. Önbelleğe alınan yapılandırma verileri için bir süre sonu ayarlayarak bu bilgilerin düzenli aralıklarla otomatik olarak yenilenmesi ve tüm değişikliklerin alınması (ve buna göre eylem gerçekleştirilmesi) sağlanabilir.

Yapılandırma verilerini önbelleğe almak, uygulama çalışma zamanında dış yapılandırma deposuyla ilgili geçici bağlantı sorunlarını gidermeye yardımcı olsa da, uygulama ilk başlatıldığında dış depo çalışmıyorsa bu genellikle sorunu çözmez. Uygulamanız başlatıldığında canlı değerleri alamıyorsa, uygulama dağıtım işlem hattınızın bir yapılandırma dosyasındaki bilinen son yapılandırma değerleri kümesini geri dönüş olarak sağlayabildiğinden emin olun.

Bu düzenin kullanılacağı durumlar

Bu düzen aşağıdakiler için kullanışlıdır:

  • Birden çok uygulama ve uygulama örneği arasında paylaşılan yapılandırma ayarları veya birden çok uygulama ve uygulama örneği arasında standart bir yapılandırmanın uygulanmasını gerektiren durumlar.

  • Görüntüleri veya karmaşık veri türlerini depolama gibi gerekli yapılandırma ayarlarının tümünü desteklemeyen standart bir yapılandırma sistemi.

  • Örneğin uygulamaların merkezi olarak depolanan ayarların bazılarını veya tümünü geçersiz kılmasına izin vermek için bazı uygulama ayarlarına yönelik tamamlayıcı bir depo olarak.

  • Birden çok uygulamanın yönetimini basitleştirmenin ve isteğe bağlı olarak yapılandırma deposuna yönelik bazı veya tüm erişim türlerinin günlüğe kaydedilmesi aracılığıyla yapılandırma ayarları kullanımının izlenmesinin bir yolu olarak.

İş yükü tasarımı

Bir mimar, Azure İyi Tasarlanmış Çerçeve yapılarında ele alınan hedefleri ve ilkeleri ele almak için Dış Yapılandırma Deposu düzeninin iş yükünün tasarımında nasıl kullanılabileceğini değerlendirmelidir. Örneğin:

Yapı Taşı 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ı etkinleştirmek için özellik bayraklarını yönetmek için de ortak bir yerdir.

- OE:10 Otomasyon tasarımı
- OE:11 Kasa dağıtım uygulamaları

Herhangi bir tasarım kararında olduğu gibi, bu desenle ortaya konulabilecek diğer sütunların hedeflerine karşı herhangi bir dengeyi göz önünde bulundurun.

Özel yedekleme deposu örneği

Microsoft Azure'da barındırılan bir uygulamada, yapılandırma bilgilerini harici olarak depolamak için olası bir seçenek Azure Depolama kullanmaktır. Bu hizmet dayanıklıdır, yüksek performans sunar ve yüksek kullanılabilirlik sağlamak için otomatik yük devretme ile üç kez çoğaltılır. Azure Tablo depolama, değerler için esnek bir şemanın kullanılabileceği bir anahtar/değer deposu sağlar. Azure Blob depolama, tekil olarak adlandırılmış bloblarda her tür verinin depolanabildiği hiyerarşik, kapsayıcı tabanlı bir depolama sağlar.

Bu düzeni uygularken Azure Blob depolamayı soyutlamaktan ve çalışma zamanında güncelleştirmeleri denetleme ve bunlara nasıl yanıt verileceğine değinme de dahil olmak üzere ayarlarınızı uygulamalarınızda kullanıma sunmaktan sorumlu olursunuz.

Aşağıdaki örnekte, yapılandırma bilgilerini depolamak ve kullanıma açmak için Blob depolama üzerinde basit bir yapılandırma deposunun nasıl öngörülebileceği gösterilmektedir. Bir BlobSettingsStore sınıf, yapılandırma bilgilerini tutmak için Blob depolamayı soyutlayabilir ve basit ISettingsStore bir arabirim uygular.

public interface ISettingsStore
{
    Task<ETag> GetVersionAsync();
    Task<Dictionary<string, string>> FindAllAsync();
}

Bu arabirim, yapılandırma deposunda tutulan yapılandırma ayarlarını alma yöntemlerini tanımlar ve herhangi bir yapılandırma ayarlarının yakın zamanda değiştirilip değiştirilmediğini algılamak için kullanılabilecek bir sürüm numarası içerir. Bir BlobSettingsStore sınıf, sürüm oluşturma uygulamak için blobun özelliğini kullanabilir ETag . Özelliği ETag , blob her yazışında otomatik olarak güncelleştirilir.

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 daha sonra bir örneğin çevresinde BlobSettingsStore bir sarmalayıcı sağlayabilir. Bir uygulama yapılandırma bilgilerini almak için bu sınıfı kullanabilir. Bu sınıf, sistem çalışırken yapılandırmada yapılan değişiklikleri yayımlamak için Microsoft Reactive Extensions gibi bir öğe kullanabilir. Ayrıca ek dayanıklılık ve performans sağlamak için ayarların Cache-Aside desenini uygulamak da sorumlu olacaktır.

Kullanım aşağıdakine benzer olabilir.

static void Main(string[] args)
{
    // Start monitoring configuration changes.
    ExternalConfiguration.Instance.StartMonitor();

    // Get a setting.
    var setting = ExternalConfiguration.Instance.GetAppSetting("someSettingKey");
    …
}

Azure Uygulaması Yapılandırmasını Kullanma

Bazı durumlarda özel yapılandırma deposu oluşturmak gerekli olsa da, birçok uygulama bunun yerine Azure Uygulaması Yapılandırma'yı kullanabilir. Azure Uygulaması Yapılandırması, ad alanı olarak kullanılabilecek anahtar-değer çiftlerini destekler. Anahtarlar yazılır ve tek tek sürüme dönüştürülür. Azure Uygulaması Yapılandırması, yapılandırmanın belirli bir noktaya anlık görüntülerini de destekler, böylece önceki yapılandırma değerlerini kolayca inceleyebilir ve hatta geri alabilirsiniz. Yapılandırma değerleri, uygulama başlatılırken hizmete ulaşılmaması durumunda yapılandırmanın bir kopyasının uygulamanızla birlikte gönderilebileceği şekilde dışarı aktarılabilir.

İstemci kitaplıkları

Bu özelliklerin çoğu, değerlerin getirilip önbelleğe alınmasını, değişiklikteki değerlerin yenilenmesini ve hatta Uygulama Yapılandırması Hizmeti'nin geçici kesintilerini işlemeyi kolaylaştırmak için uygulama çalışma zamanıyla tümleşen istemci kitaplıkları aracılığıyla kullanıma sunulur.

Çalışma Zamanı İstemci Kitaplığı Notlar Hızlı Başlangıç
.NET Microsoft.Extensions.Configuration.AzureAppConfiguration Sağlayıcı: Microsoft.Extensions.Configuration Hızlı Başlangıç
ASP.NET Microsoft.Azure.AppConfiguration.AspNetCore Sağlayıcı: Microsoft.Extensions.Configuration Hızlı Başlangıç
.NET'te Azure İşlevleri Microsoft.Extensions.Configuration.AzureAppConfiguration Startup.cs'de yapılandırmayı desteklemek için Azure İşlevi uzantılarıyla birlikte kullanılır Hızlı Başlangıç
.NET Framework Microsoft.Configuration.ConfigurationBuilders.AzureAppConfiguration için yapılandırma oluşturucusu System.Configuration Hızlı Başlangıç
Java Spring com.azure.spring > azure-spring-cloud-appconfiguration-config Aracılığıyla Spring Framework erişimini destekler ConfigurationProperties Hızlı Başlangıç
Python azure.appconfiguration Bir AzureAppConfigurationClient Hızlı Başlangıç
JavaScript/Node.js @azure/uygulama yapılandırması Bir AppConfigurationClient Hızlı Başlangıç

İstemci kitaplıklarına ek olarak, yapılandırma adımlarını derleme sürecinizle tümleştirmek için Azure Uygulaması Configuration Sync GitHub Eylemi ve Azure Uygulaması Yapılandırma Çekme ve Azure Uygulaması Yapılandırma Gönderme Azure DevOps görevleri de vardır.

Sonraki adımlar