← Bütün Patternlər
🌿

Strangler Fig

Köhnə monolit sistemi birbaşa atıb yenidən yazmaq əvəzinə, onu parça-parça əvəz edərək tədrici miqrasiya etmək strategiyası.

🎯
Nə üçün lazımdır?

Monolit sistemi tam yenidən yazmaq (Big Bang Rewrite) çox risklidir. Bu pattern ilə hissə-hissə, təhlükəsiz miqrasiya etmək mümkündür.

🌳
Adın mənası

Tropik Strangler Fig ağacı başqa ağacın ətrafında böyüyür, yavaş-yavaş onu tamamilə bürüyür və sona çatanda köhnə ağac ölür.

🛠️
Həyata keçirmə

Proxy/Facade qoyulur. Yeni funksionallıq mikroservisdə yazılır. Köhnə funksionallıq tədricən söndürülür.

İNTERAKTİV

Vizual İzah

Mərhələ {{ currentStep + 1 }}: {{ steps[currentStep].title }}

🏛️
Monolit
{{ monolithModules }}
Proxy / Facade
🧩
Yeni Mikroservislər
{{ newServices }}
JAVA

Kod Nümunəsi — Proxy Router

StranglerFigProxy.java
@RestController
public class StranglerFigProxy {

    @Value("${monolith.url}") String monolithUrl;
    @Value("${new-user-service.url}") String userServiceUrl;

    private final RestTemplate rest = new RestTemplate();

    @GetMapping("/api/users/{id}")
    public ResponseEntity<?> getUser(@PathVariable Long id) {
        // ✅ Yeni servis artıq hazırdır — oraya yönləndir
        return rest.getForEntity(userServiceUrl + "/users/" + id, Object.class);
    }

    @GetMapping("/api/orders/{id}")
    public ResponseEntity<?> getOrder(@PathVariable Long id) {
        // ⏳ Hələ köhnə monolitdə — keçid gözlənilir
        return rest.getForEntity(monolithUrl + "/orders/" + id, Object.class);
    }
}
✅ Üstünlükləri
  • Sıfır downtime ilə tədricən keçid
  • Risk azaldılır — Big Bang yenidənyazma lazım deyil
  • Hər keçid addımını müstəqil test etmək olur
⚠️ Riskləri
  • Keçid dövründə 2 sistem paralel işləyir — dəstəkləmək çətin
  • Data sinxronizasiyası mürəkkəblik yaradır
  • Uzun müddət çəkə bilər (aylar/illər)