Eskişehir’de 22 yıllık bir makine üreticisi. Core ERP AS/400 üzerinde RPG ile yazılmış, 18 satellite uygulama .NET Framework 3.5/4.5’te. Geliştirici ekibi 4 kişi, ortalama yaş 52, RPG bilen tek geliştirici emekliliğe yakın. Yeni iş ihtiyaçları (mobil saha satış, müşteri portalı, B2B EDI) eski sistemde çıkmaza giriyor. 3 yıllık modernizasyon yol haritası kuruldu. Bu yazı projenin 18. ayında çıkardığımız notlar.
Önce Envanter
İlk 6 hafta uygulama envanteri:
| Uygulama | Teknoloji | Yaş | Kullanıcı | Kritiklik |
|---|---|---|---|---|
| Core ERP | RPG/AS-400 | 22 yıl | 180 | Mission-critical |
| CRM | .NET FW 3.5 | 15 yıl | 40 | Yüksek |
| Servis Yönetim | .NET FW 4.5 + WCF | 10 yıl | 25 | Yüksek |
| Stok Bildirim | VB6 + DCOM | 18 yıl | 3 | Orta |
| Bayi Portal | ASP.NET WebForms | 12 yıl | 120 | Yüksek |
| Üretim Takibi | Delphi 7 + Firebird | 16 yıl | 50 | Mission-critical |
| EDI Köprü | VB.NET + MSMQ | 11 yıl | — | Orta |
| Diğer 12 küçük uygulama | çeşitli | 5-15 yıl | 2-15 | Düşük-Orta |
6R Framework: Her Uygulama İçin Karar
Gartner’ın 6R framework’ü kullanıldı:
| Strateji | Açıklama | Uygulama sayısı |
|---|---|---|
| Rehost | Lift-and-shift, IaaS’a taşı | 4 (küçük apps) |
| Replatform | Minor değişiklik, PaaS’a taşı | 3 (.NET 4.5 → .NET 8) |
| Refactor | Kod yeniden yaz, cloud-native | 5 (Core ERP, CRM, Servis Yönetim) |
| Repurchase | SaaS satın al | 2 (CRM → Salesforce, EDI → SaaS) |
| Retire | Dur, kullanılmıyor | 3 (eski raporlama tools) |
| Retain | Şimdilik dokunma | 2 (Üretim Takibi – Delphi) |
Üretim Takibi (Delphi) “Retain” çünkü makinelerle düşük seviye protokol konuşuyor, refactor riski operasyon durdurur. 3 yıl sonra yeni proje.
Yol Haritası: 3 Yıl, 6 Faza Bölünmüş
Yıl 1, Q1-Q2: Temel kurulum
- Azure aboneliği + landing zone (network, identity, security baseline)
- CI/CD pipeline (GitHub + Azure DevOps)
- İlk küçük rehost (Stok Bildirim, EDI köprü) — ekip Azure ile ısınıyor
Yıl 1, Q3-Q4: Replatform dalgası
- .NET FW 3.5/4.5 uygulamaları .NET 8’e migrate (Servis Yönetim, Bayi Portal)
- App Service’e deploy
- SQL Server 2008 → Azure SQL Database
Yıl 2, Q1-Q2: SaaS geçişler
- CRM → Salesforce migration (12 ay sürecek 6 ay’a indirildi, çünkü mevcut CRM verisi az)
- EDI → SaaS B2B platform
Yıl 2, Q3-Q4: Core ERP refactor başlangıcı
- RPG kodunun analizi (12.000 satır)
- Mikroservis decomposition strategy: Order, Inventory, Production, Finance modülleri ayrı servisler
- İlk modül (Order Management) .NET 8 + AKS olarak yeniden yazıldı
- Strangler pattern: Order işlemleri yeni servise routelendi, ERP’nin geri kalanı eskisi gibi
Yıl 3: Tam ERP refactor + go-live
- Inventory, Production, Finance modülleri yeniden yazıldı
- Data migration (DB2 → SQL Server 2022 + Cosmos DB hybrid)
- AS/400 sunulu fatura kestiği gün decommission
Strangler Pattern: ERP’yi Parça Parça Söndürme
Big-bang migration risk yüksek. Strangler fig pattern: yeni servis eski sistemin yanında çalışıyor, kademeli olarak trafiği yeni servise yönlendiriyorsun. Sonunda eski sistem “boğuluyor”.
Aşama 1: %100 trafik AS/400 ERP'ye
Aşama 2: Order Create istekleri yeni .NET servise, geri kalan AS/400'e
Aşama 3: Order Read + Update de yeni servise (data sync iki yönlü)
Aşama 4: Inventory modülü taşındı, Order ve Inventory yeni'de
...
Aşama N: AS/400 read-only, sadece tarihsel veri
Aşama Final: AS/400 decommission
Her aşamada API gateway (Azure API Management) trafiği yönlendiriyor. Sorun çıkarsa rollback feature flag ile.
Data Migration: AS/400’den Çıkış
AS/400 DB2 → Azure SQL Database. Şema mapping (binary EBCDIC → UTF-8, packed decimal → DECIMAL), foreign key resolution, historical data archiving.
Tools:
- IBM Data Replication for DB2 to SQL Server (CDC)
- Azure Database Migration Service (assessment + execute)
- Custom ETL script (RPG sahalarındaki “magic value”ları çevirmek için)
Organizasyonel Hazırlık: Teknolojiden Daha Zor
4 kişilik geliştirici ekibinin 2’si emekliliğe yakın, RPG bilen son uzman 1 yıl daha çalışacak. Plan:
- 2 yeni junior .NET geliştirici işe alındı
- RPG geliştirici, AS/400 RPG kodunu junior’lara açıklayan “domain knowledge transfer” oturumları yaptı
- Junior’lar .NET 8 + Azure ile yeni servisleri yazıyor, RPG kodunu reverse engineer ediyor
- İş ekipleri ile haftalık “modernizasyon komitesi” toplantısı: Hangi modül önce, hangi feature parking’de
Ara Sonuçlar (18. Ay)
| Metrik | Önceki | Şimdi |
|---|---|---|
| Aylık BT operasyon maliyeti | 78.000 TL | 54.000 TL (Azure %38, ESKI %62) |
| Yeni feature deploy süresi | 3-4 hafta | 2-5 gün (yeni mikroservis) |
| Sistem downtime (aylık) | 4-8 saat | 20-40 dk (sadece AS/400 tarafı) |
| Mobil saha satış uygulaması | Yoktu | Aktif, 22 saha satışçısı kullanıyor |
| B2B EDI entegrasyonu | 5 müşteri (manuel) | 34 müşteri (otomatik) |
Sahada Düşülen Üç Tuzak
- Big-bang migration denemek: 22 yıllık ERP’yi tek seferde refactor → projeniz batar. Strangler pattern ile aşamalı.
- Domain knowledge’ı kaybetmek: Eski sistemi bilen kişi gitmeden mutlaka “knowledge transfer” + dokümantasyon. Aksi halde reverse-engineering aylar sürer.
- İş ekiplerini sürece dahil etmemek: BT projesi gibi yürütülüp iş tarafı haberdar edilmezse rollout’ta direnç. Haftalık check-in.
CloudSpark olarak BT modernizasyon yol haritası tasarımı, AS/400 ve mainframe çıkış stratejileri, strangler pattern implementasyonu ve cloud-native refactor projeleri için danışmanlık veriyoruz.



