Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Eski bir sistemi, belirli işlevleri yeni uygulama ve hizmetlerle aşamalı olarak değiştirerek kademeli olarak taşıyın. 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 zordur. Bunun yerine, yeni bir sisteme aşamalı olarak geçiş yapabilir ve eski sistemi kaydedilmemiş özellikler için kullanabilirsiniz. Ancak, bir uygulamanın paralel sürümlerini çalıştırırsanız, istemcilerin her özelliği hangi sürümü içerdiğini izlemesi gerekir. Bir özelliği veya hizmeti geçirirken istemcileri yeni konuma yönlendirmeniz gerekir. Bu zorlukları gidermek için artımlı geçişi destekleyen ve istemcilerdeki kesintileri en aza indiren bir yaklaşım benimseyin.
Çözüm
Yeni hizmet sınırlarını belirledikten sonra, belirli işlev parçalarını yeni uygulamalar ve hizmetlerle değiştirmek için artımlı bir işlem kullanın. Müşteriler aynı arabirimi kullanmaya devam ediyor ve geçiş işleminin devam ettiğinin farkında değil.
Bu mimariye ait bir Visio dosyasını indirin.
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 fasadı bir bağdaştırıcı olarak tutabilirsiniz.
Bunu geçiş mimarisi olarak kavramsallaştırıp bu mimarinin risk azaltma avantajlarını geçici altyapı maliyetleriyle dengeleyin.
Dış cephenin değişime uygun olduğundan emin olun.
Cephenin tek bir hata noktası veya performans sorununa dönüşmediğinden emin olun.
Sistemler arası bağımlılıkları planlama. Geçiş sırasında her iki sistem de birlikte var olması ve iletişim kurması gerekir. Örneğin, yeni sistemin eski sistemden kaydedilmemiş işlevselliği çağırması gerekebilir ve geçişsiz eski bileşenlerin yeni sistemden geçirilen işlevselliği çağırması gerekebilir. Bu çağrıları yönetmek için Bozulma Önleyici Katman desenini kullanın. Bozulma önleme katmanı, iki sistem arasındaki istekleri çeviren bir bağdaştırıcı işlevi görür. Bu katman, eski sistemin önemli kod değişiklikleri olmadan yeni hizmetlere ulaşabilmesi için yeni sistemin tasarımını eski semantiklerden korur. Bu bağdaştırıcı olmadan, sistemler arası bağımlılıklar bileşenleri bozabilir veya yeni sistemi eski kuralları benimsemeye zorlayabilir.
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.
Eski sistemin kaynak koduna erişemezsiniz. Geçirilen özellikleri devre dışı bırakmak ve iç çağrıları yeniden yönlendirmek için eski sistemin kaynak kodunu değiştirebilmeniz gerekir.
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 birden çok etki alanına hizmet veren merkezi bir monolitik veritabanına bağlıdır. Zaman içinde, bu paylaşılan veritabanının etki alanları arası bağımlılıkları nedeniyle yönetilmesi ve geliştirilmesi zorlaşır. Bu zorluğun üstesinden gelmek için Strangler Fig deseni, monolitik veritabanındaki etki alanına özgü tabloları, saklı yordamları ve ilgili verileri aşamalı olarak çıkarıp yalıtılmış etki alanı veritabanlarına taşır. Her veritabanı yalnızca bir etki alanı içerir. Monolitik veritabanı tamamen ayrıştırılana kadar ayıklama işlemini tekrarlayın.
Etki alanı isteklerini yönetmeye başlayan yeni bir sistem hizmeti tanıtın. Yeni sistem hizmeti, etki alanı tabloları için monolitik veritabanından okumaya ve yazmaya devam eder. Eski sistem diğer tüm etki alanlarına hizmet etmeye devam eder.
Yeni sistem için yalıtılmış bir etki alanı veritabanı tanıtın. Ayıklama, dönüştürme ve yükleme (ETL) işlemi kullanarak ilgili etki alanı tablolarını ve geçmiş verilerini yeni veritabanına geçirin. Değişiklik veri yakalama (CDC) işlemi, etki alanı verilerini monolitik veritabanından yeni etki alanı veritabanına eşitler. Bu aşamada, eski sistem monolitik veritabanından okumaya ve yazmaya devam eder ve yeni sistem yeni etki alanı veritabanına yazar. Tam geçiş öncesinde her iki veritabanı arasındaki tutarlılığı doğrulayın.
Doğrulamadan sonra, yeni etki alanı veritabanı bu etki alanının kayıt sistemidir. Yeni sistem, etki alanı veritabanında tüm okuma ve yazma işlemlerini gerçekleştirir. Tek parçalı veritabanından ilgili etki alanı tablolarını, saklı yordamları ve bağımlılıkları kaldırın. Monolitik veritabanı tamamen ayrıştırılana kadar her etki alanı için bu işlemi yineleyin.
2. aşama sırasında ve 3. aşamanın başında, etki alanı tabloları ve eşitleme işlemleri monolitik veritabanında hala mevcut olduğunda monolitik veritabanına geri dönebilirsiniz. Monolitik veritabanından etki alanı tablolarını, saklı yordamları ve eşitleme işlemlerini kaldırdıktan sonra monolitik veritabanına geri dönmek için bu nesneleri geri yüklemeniz ve veri değişikliklerini yeniden yürütmeniz gerekir. Ancak bu süreç çabayı ve riski önemli ölçüde artırır. Eski nesnelerin kaldırılmasını her etki alanı için kasıtlı son adım olarak değerlendirin. Eski nesneleri yalnızca yeni sistem doğrulandıktan sonra kaldırın.
Contributors
Microsoft bu makaleyi korur. Bu makaleyi aşağıdaki katkıda bulunanlar yazdı.
Asıl yazarlar:
- Adnan Khan | Kıdemli Bulut Çözümleri Mimarı
- Ovais Mehboob Ahmed Khan | Üst Düzey Bulut Çözümü Mimarı
Herkese açık olmayan LinkedIn profillerini görmek için LinkedIn'e oturum açın.
Sonraki adım
- Martin Fowler'ın Strangler Fig desen uygulaması hakkındaki blog gönderisini okuyun
İlgili kaynaklar
- Mesajlaşma Köprüsü düzeni
Amazon Web Services'ten Azure