Tüm Notlar
Architecture2025-12-25

Legacy Modernizasyonu: Kodu Değil, Korkuyu Yönetmek

10 yıllık Monolith'i mikroservislere bölmek teknik bir iş gibi görünür, aslında tamamen psikolojik bir savaştır. Strangler Fig (Boğucu İncir) deseniyle bu savaşı nasıl kazanırsınız?

"Her Şeyi Baştan Yazalım" Yalanı

Bir CTO veya Architect olarak hayatınızda en az bir kere "Bu kod artık kurtarılamaz, her şeyi çöpe atıp 2.0'ı modern teknolojilerle yazalım" cümlesini duyarsınız veya kurarsınız.

Bu kararı verdiğiniz an, projenin ölüm fermanını imzalamış olursunuz.

Neden?

  1. Bilgi Kaybı: O "çirkin" if-else bloklarında, 5 yıl önce bir müşterinin yaşadığı çok spesifik bir hatanın fix'i saklıdır. Baştan yazdığınızda o hatayı tekrar yapacaksınız.
  2. Hareketli Hedef: Siz yeni sistemi yazarken (6-12 ay), eski sistemde iş durmaz. Yeni özellikler eklenir. Asla yetişemezsiniz.

Strangler Fig Pattern (Boğucu İncir)

Doğru yöntem, sistemi canlı canlı dönüştürmektir.

  1. Vekil (Proxy) Katmanı: Eski sistemin (Monolith) önüne bir API Gateway koyun. Başlangıçta gelen her isteği olduğu gibi arkaya iletsin.
  2. Kenardan Başla: Sistemin en az kritik, en izole parçasını seçin. (Örn: "Bildirim Servisi").
  3. Yeni Servis: Bu parçayı Go/Node.js ile tertemiz bir mikroservis olarak yazın.
  4. Yönlendirme: Gateway'de sadece /api/notifications isteklerini yeni servise yönlendirin.
  5. Tekrarla: Bunu başarmanın verdiği güvenle, bir sonraki modüle geçin.

Zamanla Monolith küçülür, yeni sistem büyür. Sonunda Monolith, sadece çok çekirdek bir işi yapan küçük bir servise dönüşür veya tamamen yok olur.

Bu yöntem "sıkıcıdır". Büyük bir lansman günü yoktur. Ancak gece yatağa huzurla girmenizi sağlayan tek yöntem budur.