Strangler düzeniStrangler pattern

Belirli işlev parçalarını aşamalı olarak yeni uygulamalar ve hizmetlerle değiştirerek, eski sistemi artım bir şekilde geçirin.Incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services. Eski sistemin özellikleri değiştirildikçe yeni sistem zaman içinde eski sistemin tüm özelliklerini sunmaya başlar, eski sistem işlevsiz hale gelir ve eski sistemi kaldırmanıza olanak verir.As features from the legacy system are replaced, the new system eventually replaces all of the old system's features, strangling the old system and allowing you to decommission it.

Bağlam ve sorunContext and problem

Sistemler yaşlandıkça, geliştirme araçları, barındırma teknolojisi ve hatta kullandıkları sistem mimarileri kullanımdan kalkıyor.As systems age, the development tools, hosting technology, and even system architectures they were built on can become increasingly obsolete. Yeni özellikler ve işlevler eklendikçe bu uygulamaların karmaşıklığı önemli ölçüde artabiliyor, bakım yapmak ve yeni özellikler eklemek daha zor hale geliyor.As new features and functionality are added, the complexity of these applications can increase dramatically, making them harder to maintain or add new features to.

Karmaşık bir sistemi tamamen değiştirmek çok büyük bir iş olabilir.Completely replacing a complex system can be a huge undertaking. Genellikle, henüz geçirilmeyen özellikleri işlemek için eski sistem korurken yeni bir sisteme aşamalı bir geçiş yapmanız gerekir.Often, you will need a gradual migration to a new system, while keeping the old system to handle features that haven't been migrated yet. Ancak, bir uygulamanın iki farklı sürümünü çalıştırıyorsanız istemcilerin belirli özelliklerin nerede bulunduğunu bilmesi gerekir.However, running two separate versions of an application means that clients have to know where particular features are located. Bir özellik veya hizmet her geçirildiğinde, istemcilerin yeni konumunu gösterecek şekilde güncelleştirilmesi gerekir.Every time a feature or service is migrated, clients need to be updated to point to the new location.

ÇözümSolution

Belirli işlev parçalarını yeni uygulamalar ve hizmetlerle aşamalı bir şekilde değiştirin.Incrementally replace specific pieces of functionality with new applications and services. Eski arka uç sisteme giden istekleri alacak bir aracı oluşturun.Create a façade that intercepts requests going to the backend legacy system. Bu aracı, istekleri eski uygulamayı veya yeni hizmetlere yönlendirir.The façade routes these requests either to the legacy application or the new services. Mevcut özellikler yeni sisteme kademeli olarak geçirilebilir ve tüketiciler, bir geçiş yapıldığının farkında bile olmadan aynı arabirimi kullanmaya devam edebilir.Existing features can be migrated to the new system gradually, and consumers can continue using the same interface, unaware that any migration has taken place.

Strangler düzeni diyagramı

Bu düzen, geçiş işleminde riski en aza indirmeye ve geliştirme çalışmalarını zamana yaymaya yardımcı olur.This pattern helps to minimize risk from the migration, and spread the development effort over time. Aracı, kullanıcıları güvenli bir şekilde doğru uygulama yönlendirirken, eski uygulamanın çalışmaya devam etmesini sağlar ve yeni sisteme işlevleri istediğiniz hızda ekleyebilirsiniz.With the façade safely routing users to the correct application, you can add functionality to the new system at whatever pace you like, while ensuring the legacy application continues to function. Zaman içerisinde, özellikler yeni sisteme geçirildikçe eski sistem işlevsiz hale gelir ve gereksiz olur.Over time, as features are migrated to the new system, the legacy system is eventually "strangled" and is no longer necessary. Bu işlem tamamlandıktan sonra eski sistem güvenli bir şekilde devre dışı bırakılabilir.Once this process is complete, the legacy system can safely be retired.

Sorunlar ve dikkat edilmesi gerekenlerIssues and considerations

  • Yeni ve eski sistemler tarafından kullanılan hizmetlerin ve veri depolarının nasıl ele alınacağını göz önünde bulundurun.Consider how to handle services and data stores that are potentially used by both new and legacy systems. Her ikisinin de bu kaynaklara yan yana erişebildiğinden emin olun.Make sure both can access these resources side-by-side.
  • Yeni uygulamaları ve hizmetleri kolayca alınabilecek ve gelecekteki strangler geçişlerinde değiştirilebilecek şekilde yapılandırın.Structure new applications and services in a way that they can easily be intercepted and replaced in future strangler migrations.
  • Belirli bir noktada geçiş tamamlandığında, strangler aracısı kaldırılacak veya eski istemciler için bir bağdaştırıcıya dönüşecektir.At some point, when the migration is complete, the strangler façade will either go away or evolve into an adaptor for legacy clients.
  • Aracının geçiş işlemine uyum sağladığından emin olun.Make sure the façade keeps up with the migration.
  • Aracı bir hata noktası veya performans sorunu haline gelmemelidir.Make sure the façade doesn't become a single point of failure or a performance bottleneck.

Bu düzenin kullanılacağı durumlarWhen to use this pattern

Bir arka uç uygulamasını yeni bir mimariye aşamalı olarak geçirirken bu düzeni kullanın.Use this pattern when gradually migrating a back-end application to a new architecture.

Bu düzen şu durumlarda uygun olmayabilir:This pattern may not be suitable:

  • Arka uç sistemine giden istekler alınamadığında.When requests to the back-end system cannot be intercepted.
  • Toptan değiştirme karmaşıklığı düşük olan küçük sistemlerde.For smaller systems where the complexity of wholesale replacement is low.