Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veyadizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu model, belirli işlevleri yeni uygulamalar ve hizmetlerle aşamalı olarak değiştirerek eski bir sistemi aşamalı olarak taşır. Eski sistemdeki özellikleri değiştirdiğinizde, yeni sistem sonunda eski sistemin tüm özelliklerini oluşturur. Bu yaklaşım, eski sistemi durdurur, böylece devre dışı bırakabilmeniz için.
Bağlam ve sorun
Sistem yaşı ilerledikçe, geliştirme araçları, barındırma teknolojisi ve üzerine inşa edildikleri sistem mimarileri kullanımdan kalkabilir. Yeni özellikler ve işlevler eklendikçe, bu uygulamalar daha karmaşık hale gelir ve bu da bakımlarını veya kapsamını genişletmeyi zorlaştırabilir.
Karmaşık bir sistemin tamamını değiştirmek büyük bir girişimdir. Bunun yerine, birçok ekip aşamalı olarak yeni bir sisteme geçmeyi ve eski sistemi, kaydedilmemiş özellikleri işleyecek şekilde tutmayı tercih eder. Ancak, bir uygulamanın iki ayrı sürümünü çalıştırmak istemcileri hangi sürümün ayrı özelliklere sahip olduğunu izlemeye zorlar. Ekipler bir özelliği veya hizmeti her taşındığında, istemcileri yeni konuma yönlendirmeleri gerekir. Bu zorlukların üstesinden gelmek için artımlı geçişi destekleyen ve istemcilerdeki kesintileri en aza indiren bir yaklaşım benimseyebilirsiniz.
Çözüm
Belirli işlev parçalarını yeni uygulama ve hizmetlerle değiştirmek için artımlı bir işlem kullanın. Müşteriler, bu geçişin gerçekleştiğinden habersiz olarak aynı arabirimi kullanmaya devam edebilir.
Strangler Fig deseni, modernleşmeye kontrollü ve aşamalı bir yaklaşım sağlar. Mevcut uygulamanın modernleştirme çalışması sırasında çalışmaya devam etmesini sağlar. Bir arayüz (proxy), arka uçtaki eski sisteme giden istekleri durdurur. Arayüz, bu istekleri ya eski uygulamaya ya da yeni hizmetlere yönlendirir.
Bu düzen, ekiplerinizin projenin karmaşıklık düzeyine uygun bir hızda ilerlemesini sağlayarak geçiş risklerini azaltır. İşlevselliği yeni sisteme geçirirken, eski sistem kullanımdan kalkar ve siz de eski sistemi devre dışı bırakırsınız.
Strangler Fig mimari deseni, istemci uygulaması, eski sistem ve yeni sistem arasında bir arayüz (proxy) tanıtarak başlar. Cephe bir aracı olarak işlev görür. İstemci uygulamasının eski sistemle ve yeni sistemle etkileşim kurmasına olanak tanır. İlk olarak, fasad çoğu isteği eski sisteme yönlendirir.
Geçiş ilerledikçe, sistem isteklerini kademeli olarak eski sistemden yeni sisteme aktarıyor. Her yinelemede, yeni sistemde daha fazla işlev parçası uygularsınız.
Bu artımlı yaklaşım, eski sistemin sorumluluklarını kademeli olarak azaltır ve yeni sistemin kapsamını genişletir. Süreç yinelemeli. Ekibin yönetilebilir aşamalardaki karmaşıklıkları ve bağımlılıkları ele alıyabilmesini sağlar. Bu aşamalar sistemin kararlı ve işlevsel kalmasına yardımcı olur.
Tüm işlevleri geçirdikten ve eski sistemde bağımlılık kalmadıktan sonra eski sistemi yetkisizleştirebilirsiniz. Cephe, tüm istekleri yalnızca yeni sisteme yönlendirir.
Cepheyi kaldırır ve istemci uygulamasını yeni sistemle doğrudan iletişim kuracak şekilde yeniden yapılandırabilirsiniz. Bu adım, geçişin tamamlanmasını işaretler.
Sorunlar ve dikkat edilmesi gerekenler
Bu düzenin nasıl uygulaneceğine karar velarken aşağıdaki noktaları göz önünde bulundurun:
Hem yeni sistemin hem de eski sistemin kullanabileceği hizmetleri ve veri depolarını işlemeyi göz önünde bulundurun. Her iki sistemlerin de bu kaynaklara aynı anda erişebildiğinden emin olun.
Gelecekteki boğazlayıcı incir geçişlerinde kolayca araya girip değiştirebilmeniz için yeni uygulamalar ve hizmetler oluşturun. Örneğin, her bir bölümü ayrı ayrı taşıyabilmeniz için çözümünüzün bölümleri arasında net sınırlar oluşturmaya çalışabilirsiniz.
Göç tamamlandıktan sonra genellikle strangler fig tasarımını kaldırırsınız. Alternatif olarak, daha yeni istemciler için çekirdek sistemi güncellerken, eski istemcilerin kullanması için bir adaptör olarak sistemi mevcut görünümünde koruyabilirsiniz.
Dış cephenin değişime uygun olduğundan emin olun.
Cephenin tek bir hata noktası veya performans sorununa dönüşmediğinden emin olun.
Bu desen ne zaman kullanılır?
Bu düzeni aşağıdaki durumlarda kullanın:
Özellikle büyük sistemlerin, temel bileşenlerin veya karmaşık özelliklerin değiştirilmesi risk oluştururken arka uç uygulamasını aşamalı olarak yeni bir mimariye geçirirsiniz.
Özgün sistem, geçiş eforu sırasında uzun bir süre varolmaya devam edebilir.
Bu düzen aşağıdaki durumlarda uygun olmayabilir:
Arka uç sistemine yönelik istekler engellenemez.
Küçük bir sistemi geçirirsiniz ve sistemin tamamını değiştirmek basittir.
Orijinal çözümü hızla devre dışı bırakmanız gerekir.
İş yükü tasarımı
Azure Well-Architected Framework yapı taşlarının hedeflerini ve ilkelerini ele almak için bir iş yükünün tasarımında Strangler Fig deseninin 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.
| Sütun | Bu desen sütun hedeflerini nasıl destekler? |
|---|---|
| Güvenilirlik tasarımı kararları, iş yükünüzün arızaya karşı dayanıklı olmasına ve bir hata oluştuktan sonra tamamen çalışır duruma gelmesini sağlamaya yardımcı olur. | Bu düzenin artımlı yaklaşımı, bir bileşen geçişi sırasında büyük sistemik değişikliklerin tümünü aynı anda yapmaya kıyasla risklerin azaltılmasına yardımcı olabilir. - RE:08 Test |
| Maliyet İyileştirme, iş yükünüzün yatırım getirisini (ROI)sürdürmeye ve geliştirmeye odaklanır. | Bu yaklaşımın amacı, artımlı olarak modernleştirilirken şu anda çalışan sistemde mevcut yatırımların kullanımını en üst düzeye çıkarmaktır. Düşük ROI değişimlerinden önce yüksek ROI değişimleri gerçekleştirmenizi sağlar. - CO:07 Bileşen maliyetleri - CO:08 Ortam maliyetleri |
| 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 sürekli bir iyileştirme yaklaşımı sağlar. Zaman içinde küçük değişiklikler yapacak kademeli değiştirmeler, uygulanması daha riskli olan büyük sistemik değişikliklere tercih edilir. - OE:06 İş yükü geliştirme için tedarik zinciri - OE:11 Güvenli dağıtım uygulamaları |
Bu düzenin ortaya çıkarabileceği diğer sütunların hedeflerine karşı ödünleri göz önünde bulundurun.
Örnek
Eski sistemler genellikle merkezi bir veritabanına bağlıdır. Zaman içinde, birçok bağımlılığı nedeniyle merkezi bir veritabanının yönetilmesi ve gelişmesi zorlaşabilir. Bu zorlukları gidermek için, çeşitli veritabanı desenleri bu tür eski sistemlerden uzaklaşmayı kolaylaştırabilir. Strangler Fig deseni bu desenlerden biridir. Strangler Fig desenini eski bir sistemden yeni bir sisteme aşamalı olarak geçiş yapmak ve kesintiyi en aza indirmek için aşamalı bir yaklaşım olarak uygulayın.
Yeni bir sistem tanıtırsınız ve yeni sistem istemci uygulamasından gelen bazı istekleri işlemeye başlar. Ancak, yeni sistem hala tüm okuma ve yazma işlemleri için eski veritabanına bağlıdır. Eski sistem çalışır durumda kalır ve bu da anında yapısal değişiklikler olmadan sorunsuz bir geçiş sağlar.
Sonraki aşamada yeni bir veritabanı tanıtacaksınız. Ayıklama, dönüştürme ve yükleme (ETL) işlemi kullanarak veri yükleme geçmişini yeni veritabanına geçirirsiniz. ETL işlemi yeni veritabanını eski veritabanıyla eşitler. Bu aşamada, yeni sistem gölge yazma işlemleri gerçekleştirir. Yeni sistem her iki veritabanını da paralel olarak güncelleştirir. Yeni sistem, tutarlılığı doğrulamak için eski veritabanından okumaya devam eder.
Son olarak, yeni veritabanı kayıt sistemi haline gelir. Yeni veritabanı tüm okuma ve yazma işlemlerini devralır. Eski veritabanını ve eski sistemi kullanımdan kaldırmaya başlayabilirsiniz. Yeni veritabanını doğruladıktan sonra eski veritabanını devre dışı bırakabilirsiniz. Bu kullanımdan kaldırma işlemi, geçiş işlemini en az kesintiyle tamamlar.
Sonraki adım
Martin Fowler'ın Strangler Fig desen uygulaması hakkındaki blog gönderisini okuyun.