Strangler Fig Deseni
- İngilizcesi
- Strangler Fig Pattern
- Okunuşu
- strenglır fig petırn
Kısaca
Strangler fig deseni, eski bir sistemi özellikleri tek tek yeni koda yönlendirerek, eski sistem kapatılana kadar adım adım değiştirme yöntemidir.
Strangler fig deseni nedir?
Strangler fig deseni, eski bir uygulamayı (legacy sistem) riskli bir topyekûn yeniden yazma olmadan modernleştirme stratejisidir. Tam bir yedek inşa edip tek günde geçiş yapmak yerine, yeni işlevselliği eski sistemin yanında parça parça geliştirir ve trafiği kademeli olarak taşırsınız. Martin Fowler bu deseni 2004'te, bir konak ağacın çevresinde büyüyüp onun yerini alan boğucu incir ağaçlarından esinlenerek adlandırmıştır.
Genellikle eski sistemin önüne bir reverse proxy ya da API gateway gibi bir yönlendirme katmanı koyarak çalışır. Başta her şey eski koda gider. Kullanıcı profilleri veya faturalama gibi her özellik yeni sistemde yeniden inşa edildikçe yönlendirici bu istekleri yeni uygulamaya gönderir, geri kalan her şey ise hâlâ eskiye gider. Eski koda hiç trafik ulaşmadığında kapatılabilir.
İçinde yaşamaya devam ederken bir evi oda oda yenilemeyi, taşınıp yıkmak yerine düşünün. Biten her oda hemen kullanılabilir ve bir şey ters giderse yalnızca bir odayı düzeltmeniz gerekir. Desen, bir monoliti mikroservislere bölmek, uygulamaları buluta taşımak ya da eskimiş bir framework'ü değiştirmek için yaygın olarak kullanılır.
Strangler fig deseni sıklıkla, tüm yeni sistemi geçişten önce inşa eden ve bütün değeri ile riski tek bir geçiş gününe iten tam yeniden yazma ile karıştırılır. Ayrıca mevcut sistemin içinde kod yapısını iyileştiren, onu değiştirmeyen refactoring'den de farklıdır. Başlıca zorluklar, iki sistem çalışırken verileri tutarlı tutmak ve göçün yarıda kalıp ekibi süresiz olarak iki sistem bakımıyla baş başa bırakmasını önlemektir.
Önemli noktalar
- Eski bir sistemi tek seferde yeniden yazmak yerine özellik özellik kademeli olarak değiştirin.
- Bir proxy ya da API gateway gibi yönlendirme katmanı, her isteği hangi sistemin karşılayacağına karar verir.
- Taşınan her parça değeri erken sunar ve kendi başına geri alınabilir.
- Paylaşılan veri ve yarıda kalmış bir göç başlıca risklerdir.
- Monolitten mikroservislere geçmenin yaygın bir yoludur.
Örnek
# Routing layer in front of both systems (illustrative gateway config)
routes:
# Already migrated: handled by the new services
- path: /api/profiles
target: http://profile-service:8080
- path: /api/invoices
target: http://billing-service:8080
# Everything else still goes to the legacy monolith
- path: /
target: http://legacy-app:8000Sık sorulan sorular
Neden strangler fig deseni deniyor?
Martin Fowler, bir konak ağaçta filizlenen, yıllar içinde onun çevresinde büyüyen ve sonunda yerini alan boğucu incir ağaçlarından esinlenerek adlandırmıştır. Yeni sistem de benzer şekilde, eskisi kaldırılabilene kadar onun çevresinde büyür.
Strangler fig deseni ne zaman kullanılmalı?
İş açısından kritik büyük bir sistemin değiştirilmesi gerektiğinde ama uzun bir yeniden yazma için dondurulamadığında ya da kapatılamadığında kullanın. İsteklerin yakalanıp yönlendirilebildiği web uygulamaları ve API'lerde en iyi sonucu verir.
Strangler fig deseni ile baştan yazma arasındaki fark nedir?
Baştan yazma tam bir yedek inşa eder ve hepsini bir anda devreye alır; bu da riski sona yığar. Strangler fig deseni ise parça parça taşır; böylece her parça canlıya çıkar, geri bildirim alır ve bağımsız olarak geri alınabilir.
İlgili sayfalar
- MonolitYazılım Mimarisi, s. 25Monolit, tek parça olarak derlenip dağıtılan, tüm özelliklerin tek kod tabanını, tek süreci ve çoğunlukla tek veritabanını paylaştığı yazılım uygulamasıdır.
- MikroservislerYazılım Mimarisi, s. 24Mikroservisler, bir uygulamanın ağ üzerinden iletişim kuran, küçük ve bağımsız olarak dağıtılabilen servislere bölündüğü bir mimari tarzdır.
- RefactoringYazılım Mimarisi, s. 32Refactoring, mevcut kodun dışarıdan görünen davranışını değiştirmeden daha temiz ve bakımı kolay hâle getirmek için yeniden yapılandırılması sürecidir.
- Teknik BorçYazılım Mimarisi, s. 43Teknik borç, daha uzun sürecek daha iyi bir yaklaşım yerine şimdi hızlı ya da sınırlı bir çözüm seçilmesiyle doğan, gelecekteki ek iş maliyetidir.
- API GatewayBackend ve API'ler, s. 3API gateway, bir grup backend servisinin önünde duran ve API isteklerini alan, kontrol eden ve yönlendiren tek giriş noktası görevi gören bir sunucudur.
- Reverse ProxyDevOps ve Bulut, s. 42Reverse proxy, web sunucularının önünde durup istemci isteklerini onlar adına kabul eden ve her isteği doğru arka uç sunucuya ileten bir sunucudur.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin