"Bu sistem çok eski, sıfırdan yazalım" cümlesi yazılım dünyasında en pahalı cümlelerden biridir. Çalışan bir sistem, kötü görünse bile yıllar içinde öğrenilmiş iş kurallarını taşır. Bu yazı, mevcut yazılımınızı çöpe atmadan nasıl kararlı, hızlı ve geliştirilebilir hale getirebileceğinizi ve yeniden yazmanın gerçekten gerekli olduğu az sayıdaki durumu anlatıyor.

Yeniden yazmak neden çoğu zaman yanlış?

  • Gizli iş kuralları: Kodun içinde "şu müşteri için istisna" gibi kimsenin hatırlamadığı yüzlerce kural vardır. Yeniden yazarken bunlar tek tek yeniden keşfedilir.
  • Çifte bakım: Yeni sistem yazılırken eski sistem çalışmaya ve değişmeye devam eder. İki sistemi aynı anda taşımak gerekir.
  • Uzun süre değer üretmeme: Yeniden yazma aylarca süren ve bitene kadar kullanıcıya hiçbir şey vermeyen bir yatırımdır.
  • Aynı hatalar: Süreç ve ekip aynı kalırsa yeni sistem birkaç yıl içinde benzer sorunları biriktirir.

Önce teknik inceleme

Karar vermeden önce sistemin gerçek durumunu görmek gerekir. İyi bir teknik inceleme şu sorulara yazılı cevap verir:

  • Kod tabanı hangi teknoloji ve sürümlerde? Güvenlik güncellemesi almayan bileşen var mı?
  • Sistem nerede ve nasıl çalışıyor? Yedekleme, erişim ve dağıtım süreci belgeli mi?
  • En sık yaşanan hatalar ve yavaşlıklar nerede? Kayıt ve izleme var mı?
  • Hangi bölümler sık değişiyor, hangileri yıllardır dokunulmamış?
  • Veritabanı yapısı ve veri kalitesi nasıl?
  • Dış sistemlerle bağlantılar nasıl kurulmuş?

İncelemenin çıktısı bir durum raporu ve önceliklendirilmiş iş listesidir: acil (güvenlik, veri kaybı riski), kısa vadeli (kararlılık ve performans), planlı (sürüm, yapı, yeni özellikler).

Beş adımda modernizasyon

  1. Kararlılık: Önce sistem düşmesin. Yedekleme, hata kayıtları, izleme ve uyarılar kurulur; en çok tekrarlayan hatalar giderilir.
  2. Güvenlik ve sürüm: Eski kütüphane, dil ve framework sürümleri kontrollü adımlarla güncellenir. Her adım test edilir ve geri alınabilir tutulur.
  3. Performans: Yavaş sorgular, ağır sayfalar ve darboğazlar ölçülür ve iyileştirilir. Çoğu "sistem yavaş" şikâyeti birkaç sorgudan kaynaklanır.
  4. Parça parça yenileme: En çok değişen veya en sorunlu modül yeni bir yapıda geliştirilir, eski sistemin yanına konur ve trafik kademeli olarak aktarılır. Bu yaklaşım "strangler" (sarmaşık) deseni olarak bilinir.
  5. Entegrasyon ve yeni özellikler: Sistem artık güvenli ve ölçülebilir olduğunda yeni özellikler ve dış sistem bağlantıları eklenir.
Her adım çalışan bir sistem üzerinde yapılır; kullanıcı kesinti yaşamaz. Bu yaklaşımı mevcut yazılım geliştirme ve destek hizmetimizde uyguluyoruz.

Ne zaman gerçekten yeniden yazılmalı?

  • Kaynak koda hiçbir şekilde ulaşılamıyorsa.
  • Teknoloji artık hiçbir güncelleme almıyorsa ve üzerinde çalışabilecek geliştirici bulunamıyorsa.
  • İş modeli o kadar değiştiyse ki sistemin veri modeli artık işi temsil etmiyorsa.
  • Güvenlik açıkları yapısal ise ve yamayla kapatılamıyorsa.

Bu durumlarda bile önerimiz, veriyi koruyup yeni sistemi modül modül devreye almaktır; tek günde büyük geçiş yapmak değil.

Devralma süreci nasıl işler?

  1. Erişim: Kaynak kod deposu, veritabanı, sunucu ve üçüncü taraf servis hesapları. Erişimler şirket adına açılır, tek kişide kalmaz.
  2. Belgeleme: Var olan belgeler toplanır, eksikler inceleme sırasında yazılır.
  3. Teknik inceleme ve rapor: Yukarıda anlatılan durum raporu.
  4. Öncelik listesi ve çalışma modeli: Tek seferlik iyileştirme mi, düzenli bakım mı; yanıt süreleri ve kapsam yazılı belirlenir.
  5. Küçük ve görünür ilk teslim: Güven, ilk birkaç haftada çözülen somut sorunlarla kurulur.

Sisteminizin durumunu bağımsız bir gözle değerlendirmek isterseniz mevcut durumu kısaca anlatarak ön görüşme talep edebilirsiniz.

Sık sorulan sorular

Eski yazılımımızı geliştiren firmaya ulaşamıyoruz. Başka bir ekip devralabilir mi?

Evet, kaynak kod, veritabanı ve sunucu erişimi sağlanabiliyorsa. İlk adım bir teknik incelemedir; bu inceleme neyin devralınabileceğini, risklerin neler olduğunu ve önceliklerin ne olması gerektiğini yazılı olarak ortaya koyar.

Yazılımı sıfırdan yazmak daha temiz olmaz mı?

Nadiren. Yeniden yazma, çalışan sistemin yıllar içinde biriktirdiği iş kurallarını yeniden keşfetmeyi gerektirir, uzun sürer ve bu sürede eski sistem bakım almaya devam eder. Çoğu durumda parça parça modernizasyon daha güvenli ve daha ekonomiktir.

Modernizasyon sırasında sistem çalışmaya devam eder mi?

Evet, doğru yaklaşım budur. Yeni parçalar eski sistemin yanında devreye alınır, trafik kademeli olarak yeni parçaya yönlendirilir; her adım geri alınabilir tutulur.

Kaynak kodumuz yoksa ne yapabiliriz?

Öncelikle sözleşmeye ve eski tedarikçiye başvurulmalı. Kod hiçbir şekilde alınamıyorsa veritabanı ve veri dışa aktarma imkânları incelenir; bu durumda veriyi koruyarak yeni bir sistem kurmak gerekebilir.

Yazıt Teknoloji · İçeriklerTüm yazılar