Legacy sistem modernizasyonu, yıllardır çalışan ancak değişime karşı dirençli hale gelmiş yazılımların güncel iş ihtiyaçlarına uygun biçimde yenilenmesidir. Amaç yalnızca eski kodu yeni bir dile taşımak değildir. Esas hedef; kesinti riskini azaltmak, entegrasyon kabiliyetini artırmak, bakım maliyetlerini kontrol altına almak ve sistemi bulut tabanlı mimarilere hazır hale getirmektir.

Birçok işletmede kritik süreçler hâlâ 10 yıldan eski uygulamalar üzerinde yürütülür. Bu uygulamalar sipariş yönetimi, muhasebe, üretim planlama ya da bayi operasyonları gibi alanlarda merkezi bir rol üstlenir. Sorun ise tam burada başlar: Sistem çalıştığı için dokunulmaz kabul edilir, ancak yeni bir API entegrasyonu, mobil uygulama bağlantısı ya da anlık raporlama talebi geldiğinde ciddi kısıtlar ortaya çıkar. Modernizasyon da tam bu aşamada devreye girer.

Ayrıca geçiş her zaman "eskiyi kapat, yeniyi aç" şeklinde ilerlemez. Uygulamada daha güvenli yaklaşım, sistemi durdurmadan parça parça dönüştürmektir. İyi planlanmış bir geçişte kullanıcılar çalışmayı sürdürür, veriler kontrollü biçimde akar, ekipler ise aynı anda hem operasyonu hem dönüşümü yönetebilir.

Legacy sistem modernizasyonu tam olarak neyi kapsar?

Bu kavram, tek bir teknik hamleden ibaret değildir. Kapsam; uygulama kodu, veritabanı, entegrasyon katmanı, güvenlik modeli, altyapı ve operasyon süreçlerini birlikte ele alır. Örneğin 2008 yılında geliştirilen bir masaüstü ERP modülü, 2025 ihtiyaçları için yalnızca arayüzünün yenilenmesiyle yeterli olmayabilir. Arka planda veri erişim katmanı, kimlik doğrulama yöntemi ve dağıtım modeli de değişmek zorunda kalır.

Kurumsal projelerde en sık görülen 4 modernizasyon yaklaşımı şunlardır:

  • Rehost: Uygulamayı büyük ölçüde değiştirmeden sanal sunuculardan buluta taşıma.
  • Refactor: Kodun belirli parçalarını bulut uyumlu olacak şekilde yeniden düzenleme.
  • Rearchitect: Monolit yapıyı servisler veya modüller halinde dönüştürme.
  • Replace: Mevcut sistemi kısmen ya da tamamen yeni bir ürünle değiştirme.

Hangi yaklaşımın doğru olduğu, sistemin yaşından çok bağımlılık yoğunluğuna bağlıdır. 15 yıllık bir uygulama bazen hafif bir refactor ile ilerleyebilir. Buna karşılık 6 yıllık ama sıkı bağımlılıklara sahip bir sistem, daha kapsamlı mimari değişiklikler gerektirebilir.

Neden eski yazılımları tamamen kapatmadan ilerlemek gerekir?

Kesintisiz geçiş, teknik bir konfor alanı değil; iş sürekliliğinin zorunlu bir parçasıdır. Özellikle sipariş, üretim, stok, ödeme veya çağrı merkezi operasyonları tek bir sistem üzerinde dönüyorsa birkaç saatlik kesinti bile ciddi etkiler yaratabilir. 8 saatlik planlı bakım penceresi teoride makul görünebilir. Ancak sahada veri senkronizasyonu, kullanıcı alışkanlıkları ve entegrasyon bağımlılıkları bu pencereyi hızla riskli hale getirir.

Buradaki temel fikir, eski ve yeni yapının bir süre birlikte çalışmasıdır. Buna çoğu projede parallel run veya strangler pattern yaklaşımı eşlik eder. Örnek bir senaryo düşünelim: Bayi sipariş ekranı eski sistemde kalır, yeni geliştirilen fiyatlandırma motoru ise API üzerinden devreye alınır. Kullanıcı aynı ekranda çalışmayı sürdürür, ancak kritik bir iş kuralı artık modern bir servis tarafından yönetilir. Sonraki adımda raporlama, yetkilendirme veya stok rezervasyonu da sırayla ayrıştırılır.

Bu modelin önemli avantajı şudur: Risk tek seferde yüklenmez. Her modül canlıda, gerçek trafik altında doğrulanır. Hata çıktığında tüm sistemi geri almak yerine yalnızca ilgili servisi devre dışı bırakmak yeterli olabilir.

Modernizasyon öncesi değerlendirme: İlk 30 günde ne yapılır?

Başarılı bir dönüşüm, kod yazılmadan önce başlar. İlk 30 gün içinde yapılacak analizler, sonraki 6 ila 12 aylık yol haritasını belirler. Bu aşamada en sık gözden kaçan konu, mevcut sistemin gerçekte nasıl çalıştığının belgelenmesidir. Çoğu kurumda dokümantasyon eksiktir; bilgi, ekip üyelerinin hafızasında yaşar.

1. Uygulama envanteri çıkarılır

Hangi modül ne yapıyor, hangi sunucuda çalışıyor, hangi veritabanına bağlanıyor, günde kaç kullanıcı işlem yapıyor? Bunların tablo halinde çıkarılması gerekir. Örneğin:

  • Stok modülü: günde yaklaşık 12.000 işlem
  • Sipariş servisi: 3 dış sistemle veri alışverişi
  • Raporlama veritabanı: gece 02:00 ETL akışı

2. Bağımlılık haritası oluşturulur

Bu çalışma yapılmadan başlanırsa, küçük görünen bir değişiklik beklenmedik bir zincir etkisi yaratabilir. Uygulamanın SMTP, FTP, dosya paylaşımı, harici ödeme servisi, LDAP, e-fatura entegrasyonu gibi temas noktaları tek tek işaretlenmelidir.

3. Kritik metrikler belirlenir

Yanıt süresi, hata oranı, eşzamanlı kullanıcı sayısı ve veri tutarlılığı toleransı netleşmeden geçiş planı sağlıklı biçimde kurulamaz. Örneğin sipariş oluşturma ekranı için 2 saniye üst sınır kabul ediliyorsa, yeni servislerin bu eşiği aşmaması gerekir.

Buluta geçiş için en güvenli mimari yaklaşım hangisi?

Tek bir doğru mimari yoktur; ancak kontrollü geçiş için katmanlı ayrıştırma çoğu zaman en güvenli seçenektir. Uygulamanın tamamını bir anda mikroservislere bölmek kulağa modern gelebilir, fakat operasyonel karmaşıklığı hızla artırabilir. Özellikle 5 ila 8 kişilik ekiplerde önce bir API katmanı oluşturmak daha gerçekçi bir adımdır.

Pratikte sık kullanılan sıralama şöyledir:

  1. Mevcut sisteme bir API geçidi eklenir.
  2. Kimlik doğrulama merkezi hale getirilir.
  3. En sık değişen iş kuralları ayrı servislerde toplanır.
  4. Raporlama ve okuma yükü, gerekiyorsa ayrı veri kopyalarına alınır.
  5. Arka plan işleri kuyruk tabanlı yapıya geçirilir.

Örneğin eski bir .NET Framework uygulaması doğrudan konteynerleştirilemeyebilir. Buna rağmen uygulamanın fiyat hesaplama mantığı ayrı bir REST servisi olarak .NET 8 veya Node.js ile yeniden yazılabilir. Eski uygulama bu servisi çağırır. Kullanıcı fark etmeden dönüşüm başlamış olur.

Küçük bir örnek API çağrısı şöyle görünebilir:

POST /api/pricing/calculate
{
  "customerId": 1024,
  "items": [
    {"sku": "A-145", "qty": 12}
  ],
  "channel": "dealer"
}

Bu yaklaşım, kod tabanını bir gecede yenilemeden modern entegrasyon standardı kazandırır.

Veri taşıma ve senkronizasyon en kritik aşama neden?

Uygulama modernizasyonunda en büyük teknik risk çoğu zaman kullanıcı arayüzü değil, veridir. Çünkü veritabanında yıllar içinde birikmiş tutarsızlıklar, boş alanlar, tekrar kayıtlar ve iş kuralı istisnaları bulunabilir. 1 milyon satırlık müşteri verisini taşımak tek başına zor değildir. Asıl mesele, bu verinin canlı operasyon sırasında doğru biçimde akmaya devam etmesidir.

İki yaygın yöntem kullanılır:

  • Toplu taşıma + kesme anı: Belirli bir tarihte veri alınır, yeni sisteme aktarılır, sonra geçiş yapılır.
  • Sürekli senkronizasyon: Eski ve yeni sistem bir süre çift yönlü ya da tek yönlü veri paylaşır.

Kesintisiz dönüşüm hedefleniyorsa ikinci yöntem daha uygundur. Bu noktada olay tabanlı mimari, değişiklik yakalama mekanizmaları ve kuyruk sistemleri öne çıkar. Sipariş tablosundaki bir güncelleme, birkaç saniye içinde yeni sisteme aktarılabilir. Ancak bunun için çakışma kuralları baştan yazılmalıdır. Örneğin aynı müşteri kaydı iki tarafta da değişirse hangi kayıt geçerli sayılacak? Bu sorunun yanıtı, projeye başlamadan önce verilmelidir.

Güvenlik, yetkilendirme ve denetim izleri nasıl ele alınmalı?

Eski sistemler çoğu zaman yerel kullanıcı tabloları, paylaşımlı şifreler veya rol yerine ekran bazlı yetkilerle çalışır. Bulut tabanlı yapıya geçerken bu model yetersiz kalır. En azından merkezi kimlik doğrulama, çok faktörlü erişim desteği ve ayrıntılı loglama planlanmalıdır.

Somut bir örnek verelim: Finans onay ekranına erişen kullanıcıların hangi IP'den, hangi saatte, hangi kaydı değiştirdiği tutulmuyorsa denetim izi zayıftır. Modernizasyon sürecinde bu alanlar standart hale getirilmelidir. Özellikle KVKK kapsamında kişisel veri işleyen sistemlerde erişim ve değişiklik kayıtları, operasyonel olduğu kadar hukuki açıdan da önem taşır.

Ayrıca sır yönetimi de kritik bir başlıktır. Uygulama içinde düz metin bağlantı şifreleri tutmak yerine bulut gizli bilgi kasaları kullanılmalıdır. Sertifika yenileme, log maskeleme ve rol tabanlı erişim denetimi geçiş planına dahil edilmeli; sona bırakılmamalıdır.

Proje yönetimi: Büyük geçiş yerine kontrollü dalgalar

Legacy sistem modernizasyonu, bir yazılım projesi olduğu kadar bir değişim yönetimi projesidir. 9 ay sürecek bir dönüşümü tek teslimatta canlıya almak yerine 3 veya 4 dalga halinde planlamak daha güvenlidir. Her dalga ölçülebilir bir iş çıktısı üretmelidir. Örneğin ilk dalgada yalnızca müşteri yönetimi API katmanına alınır. İkinci dalgada sipariş akışı ayrıştırılır. Üçüncü dalgada raporlama buluta taşınır.

Bu yapı, ekiplerin öğrenmesini hızlandırır. Kullanıcı eğitimi de kademeli olarak yapılır. Her teslimat sonrasında şu sorular ölçülmelidir:

  • Yanıt süreleri iyileşti mi?
  • Destek talepleri azaldı mı?
  • Manuel işlem sayısı düştü mü?
  • Yeni entegrasyon süresi kısaldı mı?

İşletme açısından değer tam da burada görünür hale gelir. Dönüşüm, yalnızca teknoloji yenileme değil; operasyonel esneklik kazanımıdır.

Hangi durumlarda modernizasyon ertelenmemeli?

Bazı sinyaller açık bir uyarı niteliğindedir. Eğer tek bir geliştirici ayrıldığında sistemin sürdürülebilirliği riske giriyorsa, üretime çıkışlar haftalar sürüyorsa veya yeni bir entegrasyon için doğrudan veritabanına müdahale ediliyorsa yapı kırılgan hale gelmiş demektir. Aynı şekilde yedekleme testleri yapılmıyor, güvenlik yamaları uygulanamıyor ya da raporlar yalnızca gece çalışıyorsa teknik borç artık iş riskine dönüşmüş sayılır.

İdeal zaman, sistem tamamen çökmeden önceki dönemdir. Modernizasyon baskı altında da yapılabilir; ancak bu durumda kararlar daha pahalı ve daha sert olur. Erken başlayan kurumlar ise modüler geçiş sayesinde bütçeyi zamana yayabilir, ekip kapasitesini daha dengeli kullanabilir.

Sonuç: Amaç eski sistemi yok etmek değil, riski azaltarak evrimleştirmek

Legacy sistem modernizasyonu, eski yazılımları bir gecede tarihe gömmek anlamına gelmez. Etkili yaklaşım, çalışan sistemi koruyarak zayıf noktaları görünür kılmak ve dönüşümü kontrollü biçimde yürütmektir. Sağlam bir envanter, doğru mimari seçim, veri senkronizasyon planı ve güvenlik tasarımı bir araya geldiğinde bulut tabanlı yapıya geçiş kesintisiz şekilde ilerleyebilir.

İşletmeler için kritik nokta şudur: Modernizasyon kararı teknoloji modasına göre değil, iş sürekliliği, entegrasyon ihtiyacı ve operasyon hızı üzerinden verilmelidir. Doğru kurgulandığında bu süreç yalnızca eski yazılımı yenilemekle kalmaz; kurumun yeni ürün, kanal ve servis geliştirme kapasitesini de belirgin biçimde artırır.