Başarı Hikâyesi · Yazılım Modernizasyonu

14 yıllık emlak franchise platformu*, yeniden yazılmadan .NET 10'a taşındı.

11 marka ve 7 dilde çalışan, 596 bin satırlık bir platformu iş kurallarına dokunmadan güncel teknolojiye taşıdık. Eski sistemle 42 bin vakada karşılaştırdık; açıklanamayan fark sıfır.

  • 14 yıl
  • 596 bin satır C#
  • 11 marka
  • 7 dil
Hikâyeyi oku

* Gizlilik sözleşmemiz gereği marka adını paylaşamıyoruz; projenin teknik ayrıntılarını görüşmelerde memnuniyetle anlatırız.

01Bölüm 1: 2012 · Başlangıç

Bir franchise ağının dijital omurgası.

Hikâye 2012'de başlıyor. Platform, bir emlak franchise ağının bütün işini taşımak için yazıldı: marka merkezi, ofis, broker ve danışman hiyerarşisi, royalty faturalama, performans ve ödül sistemi, eğitim akademisi, ilan portalı entegrasyonları ve danışmanların kişisel siteleri.

Yıllar içinde 11 markaya ve 7 dile büyüdü. Her yeni ihtiyaç bir modül, her modül yeni bir iş kuralı demekti.

153

controller'lık ana uygulama

377

veritabanı tablosu

~610

veritabanı migration'ı

~90

zamanlanmış arka plan işi

Yıllık kod değişikliği (commit)14 yılda 19.723 değişiklik

2014'ten bugüne. 2026, Ekim'e kadar.

Yıllık kod değişikliği (commit)
20142771
20152424
20162560
20173159
20181682
20191246
20201918
2021923
2022577
2023936
2024692
2025535
2026296
02Bölüm 2: Yıllar içinde · Sorun

İş büyüdü, zemin eskidi.

Sistem çalışıyordu; o yüzden kimse dokunmak istemiyordu. Ama altındaki teknoloji yerinde sayıyordu. Her yeni özellik daha pahalıya geliyor, güvenlik güncellemeleri geride kalıyor, bu teknolojileri bilen geliştirici bulmak zorlaşıyordu.

  • .NET Framework 4.8Yeni özellik almıyor
  • ASP.NET MVC 4 / 5Yalnız Windows ve IIS'te çalışıyor
  • RavenDB 2.5Desteği yıllar önce bitti
  • Elasticsearch, NEST 0.11Çok eski arama istemcisi
03Bölüm 3: Yol ayrımı

Sıfırdan yazmak mı, taşımak mı?

Sıfırdan yazmak cazip görünür, ama 14 yılın iş kuralları kodun içinde yazılıdır, dokümanda değil. Biz ikinci yolu seçtik.

Sıfırdan yazmak

  • 14 yıllık iş kuralları yeniden keşfedilir, bir kısmı yolda kaybolur
  • Yıllarca iki sistem birden yaşatılır
  • Geçiş günü tek seferde, büyük bir risk
Seçtiğimiz yol

Davranışı koruyarak taşımak

  • Mevcut kod ve iş kuralları yerinde kalır
  • Her adım, eski sistemle karşılaştırılarak kanıtlanır
  • Her uygulama ayrı ve geri dönülebilir şekilde geçer
04Bölüm 4: Adım 1 · Kayıt

Önce sistemin bugünkü davranışını kayda aldık.

Tek satır koda dokunmadan önce, sistemin bugün nasıl davrandığını otomatik testlerle yazıya döktük. Bu testler yeni sürümün hakemi oldu: aynı testler, aynı sonuç.

Yeni sürümde eskisiyle aynı sonucu veren testler3.186 test
Ortak iş katmanı
1.955
Danışman uygulaması
939
Merkez yönetim paneli
146
Ortak kütüphaneler
116
Geçiş katmanı
24
Arka plan işleri
6
05Bölüm 5: Adım 2 · Taşıma

Kodu koruduk, zemini değiştirdik.

Controller'ları ve ekranları yeniden yazmadık. Araya koyduğumuz bir uyumluluk katmanı, aynı kodun ASP.NET Core 10 üzerinde çalışmasını sağladı. 14 yılın iş kuralları satır satır yerinde kaldı.

06Bölüm 6: Adım 3 · Kanıt

Eskiyle yeniyi 42 bin vakada yarıştırdık.

Aynı istekleri iki sürüme birden gönderip cevapları bayt bayt karşılaştırdık. Farkların her biri tek tek incelendi: çerçevenin kendi hata mesajlarının dili ya da XML'deki sıra gibi iş mantığına dokunmayan farklar kayda geçip kabul edildi. Açıklanamayan fark kalmadı.

Testler veritabanına yazmadı, dış servis çağırmadı; canlı veriye hiçbir an dokunulmadı.

Uygulama bazında karşılaştırılan sayfa ve API cevapları
  • Bayt bayt aynı
  • Fark incelendi, kabul edildi
Danışman uygulaması
12.747
API, iş akışları
9.666
Danışman siteleri (8 tema)
4.744
Merkez yönetim paneli
3.122
Site API'si
772
API, ana uçlar
796
SOAP ve canlı bildirim
50
Uygulama bazında karşılaştırılan sayfa ve API cevapları
Bayt bayt aynıFark incelendi, kabul edildi
Danışman uygulaması115421205
API, iş akışları72292437
Danışman siteleri (8 tema)33601384
Merkez yönetim paneli2758364
Site API'si76111
API, ana uçlar73462
SOAP ve canlı bildirim3119

Ayrıca 10.117 form gönderimi aynı yöntemle karşılaştırıldı; açıklanamayan fark sıfır.

07Bölüm 7: Adım 4 · Geçiş

Her uygulama kendi hızında geçti.

Sistemin önüne bir geçiş katmanı koyduk. Her uygulama bu katmanda dört aşamadan tek tek geçti. Bir sorun görülse geri dönüş tek ayardı.

Eski: Bütün trafik eski sürümde.

Önce / Sonra

Aynı iş kuralları, güncel bir zemin.

ÖnceSonra
Çalışma zemini.NET Framework 4.8.NET 10
Web uygulamalarıASP.NET MVC 4 / 5ASP.NET Core 10
Doküman veritabanıRavenDB 2.5MongoDB
AramaElasticsearch, NEST 0.11 istemcisiElasticsearch 9
Arka plan işleriWindows servisleri.NET Worker Service
SOAP servisleriWCF ve ASMXCoreWCF
Yerel geliştirmeElle kurulan ortamDocker ile tek komut

Sonuç

Geçiş tamamlandı. İş kuralları yerinde, zemin güncel.

3.000+

test, eski ve yeni sürümde aynı sonucu verdi

42 bin

istek iki sürümde karşılaştırıldı

0

açıklanamayan fark

51

proje, tek .NET 10 yapısında

Ekip artık güncel .NET üzerinde, Docker ile tek komutla ayağa kalkan bir yerel ortamda ve sistemi her değişiklikte koruyan bir test paketiyle geliştirme yapıyor.

Sizin sisteminiz de 10 yaşını geçti mi?

Kod tabanınızı ücretsiz değerlendirelim; neyin, hangi sırayla ve nasıl taşınacağını yazılı bir planla gösterelim.

Modernizasyon Sürecimiz

Ücretsiz Kod Değerlendirmesi

  • İlk değerlendirme ücretsizdir, hiçbir taahhüt gerektirmez.
  • Bu form üzerinden kaynak kodunuzu paylaşmanız gerekmez.

Telefon(isteğe bağlı)

Bilgilerinizi yalnızca bu talebe dönüş yapmak için kullanırız.