Close-up of a yellow Ethernet cable with connectors on a blue background.

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

  1. Big-bang migration denemek: 22 yıllık ERP’yi tek seferde refactor → projeniz batar. Strangler pattern ile aşamalı.
  2. Domain knowledge’ı kaybetmek: Eski sistemi bilen kişi gitmeden mutlaka “knowledge transfer” + dokümantasyon. Aksi halde reverse-engineering aylar sürer.
  3. İş 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.

🇹🇷 Türkçe🇬🇧 English🇩🇪 Deutsch🇫🇷 Français🇸🇦 العربية🇷🇺 Русский🇪🇸 Español