Bozulma Önleyici Katman deseni

Aynı semantiği paylaşmayen farklı alt sistemler arasında bir cephe veya bağdaştırıcı katmanı uygulayın. Bu katman, bir alt sistemin yaptığı istekleri diğer alt sisteme çevirir. Dış alt sistemlerdeki bağımlılıkların bir uygulamanın tasarımını sınırlamadığından emin olmak için bu düzeni kullanın. Eric Evans bu deseni ilk olarak Domain-Driven Design: Tackling Complexity in the Heart of Software bölümünde tanımladı.

Bağlam ve sorun

Uygulamaların çoğu bazı veriler veya işlevler için diğer sistemlere güvenir. Örneğin, eski bir uygulamayı modern bir sisteme geçirdiğinizde, uygulama mevcut eski kaynakları kullanmaya devam edebilir. Yeni özelliklerin eski sistemi çağırabilmesi gerekir. Bu özellik, daha büyük bir uygulamanın farklı özelliklerini zaman içinde modern bir sisteme taşıdığınız aşamalı geçişler için özellikle önemlidir.

Bu eski sistemlerin genellikle birleştirilmiş veri şemaları veya eski API'ler gibi kalite sorunları vardır. Eski sistemlerin kullandığı özellikler ve teknolojiler, daha modern sistemlerden büyük ölçüde farklılık gösterebilir. Eski sistemle birlikte çalışabilmek için yeni uygulamanın eski altyapıyı, protokolleri, veri modellerini, API'leri veya modern bir uygulamaya koymadığınız diğer özellikleri desteklemesi gerekebilir.

Yeni ve eski sistemler arasında erişimi sürdürürken, yeni sistemi eski sistemin API'lerinden veya diğer semantiklerden en az bazılarına uymaya zorlarsınız. Bu eski özelliklerde kalite sorunları olduğunda bu destek, aksi takdirde temiz tasarlanmış modern bir uygulama olabilecek özellikleri bozar.

Geliştirme ekibinizin denetlemediği tüm dış sistemlerde de benzer sorunlar ortaya çıkabilir.

Çözüm

Aralarına bir bozulma önleyici katman yerleştirerek farklı alt sistemleri yalıtın. Bu katman, iki sistem arasındaki iletişimi çevirir. Bu yaklaşımı kullanarak, diğerinin tasarım ve teknolojik yaklaşımından ödün vermeden bir sistemi değişmeden tutabilirsiniz.

Bozulma Önleme Katmanı düzenine genel bir bakış gösteren diyagram.

Bu mimariye ait bir Visio dosyasını indirin.

Diyagramda iki alt sistemi olan bir uygulama gösterilir. Alt Sistem A, bozulmayı önleme katmanı aracılığıyla B alt sistemini çağırır. A alt sistemi ile bozulma önleme katmanı arasındaki iletişim her zaman A alt sisteminin veri modelini ve mimarisini kullanır. B alt sistemine yapılan bozulma önleme katmanı çağrıları bu alt sistemin veri modeline veya yöntemlerine uygundur. Bozulma önleme katmanı, iki sistem arasında çevirmek için gereken tüm mantığı içerir. Katmanı uygulama içinde bir bileşen olarak veya bağımsız bir hizmet olarak uygulayabilirsiniz.

Sorunlar ve dikkat edilmesi gerekenler

Bu düzenin nasıl uygulaneceğine karar velarken aşağıdaki noktaları göz önünde bulundurun:

  • Bozulma önleme katmanı, iki sistem arasındaki çağrılara gecikme süresi ekler.

  • Bozulma önleme katmanı, yönetmeniz ve korumanız gereken ek bir hizmet ekler.

  • Bozulma önleme katmanını nasıl ölçeklendirmeyi planladığınızı düşünün.

  • Birden fazla bozulma önleme katmanına ihtiyacınız olup olmadığını göz önünde bulundurun. Örneğin, işlevleri farklı teknolojiler veya diller kullanan birden çok hizmette ayrıştırmak isteyebilirsiniz.

  • Bozulma önleme katmanını diğer uygulama veya hizmetlerinizle ilgili olarak nasıl yönetmeyi planladığınızı ve bunu izleme, sürüm ve yapılandırma süreçlerinizle nasıl tümleştirileceğini düşünün.

  • İşlem ve veri tutarlılığını koruduğunuz ve izlediğiniz emin olun.

  • Bozulma önleme katmanının farklı alt sistemler arasındaki tüm iletişimi mi yoksa yalnızca bir özellik alt kümesini mi işlemesi gerektiğini düşünün.

  • Bozulma önleme katmanı bir uygulama geçiş stratejisinin parçasıysa, bunun kalıcı olup olmadığını veya tüm eski işlevleri geçirdikten sonra devre dışı bırakmayı planlayıp planlamayabileceğinizi göz önünde bulundurun.

  • Önceki diyagramda bu deseni göstermek için ayrı alt sistemler kullanılır, ancak bunu monolitik mimarideki eski kod tümleştirmesi gibi diğer hizmet mimarilerine de uygulayabilirsiniz.

  • Bozulma önleyici katman, farklı güven düzeylerine sahip olabilecek sistemlere aracılık ettiğinden, bu sınırda giriş doğrulama ve temizlemeyi zorunlu kılmayı göz önünde bulundurun.

  • Çeviri hatalarını tanılamak için, korelasyon kimlikleri ve yapılandırılmış günlükleme dahil gözlemlenebilirliği planlayın.

Bu desen ne zaman kullanılır?

Bu düzeni aşağıdaki durumlarda kullanın:

  • Geçişi birden çok aşamada gerçekleşecek şekilde planlıyorsunuz, ancak yeni ve eski sistemler arasında tümleştirmeyi sürdürmeniz gerekiyor.

  • İki veya daha fazla alt sistemin farklı semantiği vardır, ancak iletişim kurmaları gerekir.

Bu düzen aşağıdaki durumlarda uygun olmayabilir:

  • Yeni ve eski sistemlerin anlamlı anlamsal farklılıkları yoktur. Bu senaryoda bozulma önleme katmanını çeviri mantığına odaklamanız önemlidir. Katmana iş kuralları veya düzenleme yerleştirmekten kaçının.

İş yükü tasarımı

Azure Well-Architected Framework sütunlarında ele alınan hedef ve ilkelere yanıt vermek için, bir iş yükü tasarımında Yozlaşma Önleyici Katman 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. Bu desen, yeni bileşen tasarımının, bu eski sistemlerle tümleştirildiğinde farklı veri modellerine veya iş kurallarına sahip olabilecek eski uygulamalar tarafından etkilenmemesini sağlamaya yardımcı olur. Mevcut bileşenleri desteklemeye devam ederken yeni bileşenlerdeki teknik borcu azaltabilir.

- OE:04 Araçlar ve işlemler
- OE:07 İzleme sistemi

Bu model bir sütun içinde dengeleri ortaya çıkartıyorsa, bunları diğer sütunların hedeflerine karşı değerlendirin.

Example

Bu desen kavramsaldır ve etki alanı odaklı tasarım yazılımı geliştirme yaklaşımından kaynaklanır. Azure API Management veya Azure İşlevleri gibi Azure hizmetler protokol işlemeye ve çeviriye yardımcı olabilir, ancak bozulma önleme katmanının temel amacı etki alanı modelini korumaktır, belirli bir ürün seçimi belirtmemektir.

Aşağıdaki örnekte API Management, dış maruz kalma ve protokol sorunlarını ele alır. Azure İşlevleri, yeni sistemle eski sistem arasındaki etki alanı eşlemesi aracılığıyla bozulma önleme katmanını uygular. Azure İzleyici ve Application Insights, iki alt sistem arasındaki çevirinin başarısını ve gecikme süresini izlemek için ihtiyacınız olan gözlemlenebilirliği sağlar.

Yozlaşmayı Önleme Katmanı deseninin kavramsal Azure uygulamasını gösteren diyagram.

Bu zaman uyumlu istek yanıt modelinin ötesinde, bozulmayı önleme katmanı zaman uyumsuz, olay odaklı bir yaklaşım da kullanabilir. Katman, Azure Service Bus, Azure Event Grid veya Azure Event Hubs kullanarak modern etki alanını eski sistemin aktarım hızı kısıtlamalarından ayırarak yüksek aktarım hızına sahip veya yüksek oranda ayrılmış iş yükleri için ileti tabanlı çeviriye olanak tanır.

Sonraki Adımlar