Bozulma Önleyici Katman düzeni

Aynı semantiği paylaşmadan farklı alt sistemler arasında bir cephe veya bağdaştırıcı katmanı uygulama. Bu katman, bir alt sistemin diğer alt sistemden gelen istekleri çevirir. Bir uygulama tasarımının dış alt sistemlere bağımlılıklarla sınırlı olmadığını sağlamak için bu düzeni kullanın. Bu düzen ilk kez Eric Evans tarafından etki Alanı Odaklı Tasarım konusunda açıklanmıştı.

Bağlam ve sorun

Çoğu uygulama, bazı veri veya işlevler için diğer sistemlere bağımlıdır. Örneğin, eski bir uygulama modern bir sisteme geçirildikten sonra bile bazı eski kaynaklara gereksinim duyabilir. Yeni özelliklerin eski sisteme çağrı yapabilmesi gerekebilir. Bu, özellikle de büyük bir uygulamanın çeşitli özelliklerinin zaman içinde aşamalı olarak modern bir sisteme taşındığı geçiş süreçleri için geçerlidir.

Bu eski sistemler genellikle karışık veri şemaları ya da eski API’ler gibi kalite sorunları yaşar. Eski sistemlerde yaygın olarak kullanılan teknolojiler ve özellikler, daha modern sistemlerden çok farklı olabilir. Yeni uygulamanın eski sistemle birlikte çalışabilmesi için eski altyapıyı, protokolleri, veri modellerini, API’leri veya zorunlu olmadıkça modern bir uygulamaya eklenmeyecek diğer özellikleri desteklemesi gerekebilir.

Yeni ve eski sistem arasındaki erişimin sürdürülmesi, yeni sistemi eski sistemin API’lerinin veya diğer semantik bileşenlerinin en azından bazılarına uymaya zorlayabilir. Bu eski özelliklerde kalite sorunları varsa, bunların desteklenmesi normalde temiz bir tasarıma sahip olabilecek modern bir uygulamanın “bozulmasına” yol açar.

Benzer sorunlar yalnızca eski sistemleri değil, geliştirme takımınız tarafından kontrol altına alınan dış sistemlerde de ortaya çıkabilir.

Çözüm

Farklı alt sistemleri, aralarında bir bozulma önleyici katman yerleştirerek yalıtın. Bu katman, iki sistem arasındaki iletişimleri çevirerek bir sistemin değişmeden kalmasını sağlarken diğeri de tasarım ve teknolojik yaklaşımını tehlikeye atmaktan kaçınır.

Bozulma Önleyici Katman deseni diyagramı

Yukarıdaki diyagramda iki alt sistemi olan bir uygulama yer almaktadır. Alt sistem A, bir bozulma önleyici katman aracılığıyla B alt sistemine çağrılar. A alt sistemi ile bozulma önleyici katman arasındaki iletişim her zaman A alt sisteminin veri modelini ve mimarisini kullanır. Bozulma önleyici katmandan B alt sistemine yapılan çağrılar, alt sistemin veri modeline veya yöntemlerine uygun olur. Bozulma önleyici katman, iki sistem arasında çeviri yapılması için gerekli tüm mantığı içerir. Katman, uygulama içinde bir bileşen veya bağımsız bir hizmet olarak uygulanabilir.

Sorunlar ve dikkat edilmesi gerekenler

  • Bozulma önleyici katman, iki sistem arasındaki çağrıların gecikme süresinin artmasına yol açabilir.
  • Bozulma önleyici katman, yönetilmesi ve bakımı yapılması gereken ek bir sistemdir.
  • Bozulma önleyici katmanınızın nasıl ölçeklendirileceğini göz önünde bulundurun.
  • Birden fazla bozulma önleyici katman gerekip gerekmediğine karar verin. Çeşitli teknolojileri veya dilleri kullanarak işlevselliği birden çok hizmete bölmek isteyebilirsiniz veya bozulma önleyici katmanın bölümlenmesini gerektiren başka nedenler olabilir.
  • Bozulma önleyici katmanın diğer uygulama veya hizmetlerinizle ilişkili bir biçimde nasıl yönetileceğini göz önünde bulundurun. İzleme, yayınlama ve yapılandırma süreçlerinizle nasıl tümleştirilecek?
  • İşlem ve veri tutarlılığının korunduğundan ve izlenebildiğinden emin olun.
  • Bozulma önleyici katmanın farklı alt sistemler arasındaki tüm iletişimi mi yoksa özelliklerin yalnızca bir alt kümesini mi işlemesi gerektiğini düşünün.
  • Bozulma önleyici katman bir uygulama geçiş stratejisinin parçası ise, bunun kalıcı mı olacağını yoksa tüm eski işlevler geçirildikten sonra kullanımdan kaldır mı olacağını göz önünde bulundurabilirsiniz.

Bu düzenin kullanılacağı durumlar

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

  • Çok aşamalı bir geçişin planlandığı, ancak yeni ve eski sistemler arasındaki tümleştirmenin korunmasının gerektiği durumlar.
  • İki veya daha fazla alt sistemin farklı semantiği vardır ancak yine de iletişim kurması gerekir.

Yeni ve eski sistem arasında önemli bir semantik farklılığı yoksa bu düzen uygun olmayabilir.