"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?
- 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.
- 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.
- Vekil (Proxy) Katmanı: Eski sistemin (Monolith) önüne bir API Gateway koyun. Başlangıçta gelen her isteği olduğu gibi arkaya iletsin.
- Kenardan Başla: Sistemin en az kritik, en izole parçasını seçin. (Örn: "Bildirim Servisi").
- Yeni Servis: Bu parçayı Go/Node.js ile tertemiz bir mikroservis olarak yazın.
- Yönlendirme: Gateway'de sadece
/api/notificationsisteklerini yeni servise yönlendirin. - 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.
