Migrasyon projelerinin çoğu "sıfır veri kaybı"nı sonda işaretlenecek bir kutu olarak ele alır. ETL'i çalıştırırsınız, satırları sayarsınız, kontrol toplamlarını eşleştirirsiniz, raporu imzalarsınız. Rakamlar tutuyorsa zafer ilan edip evinize gidersiniz.
FENIKS böyle bir proje değildi. Regüle bir sigorta core platformunu AS400'den Oracle'a taşımak, satırları taşımakla ilgili değildir — iki temelden farklı dünya arasında her kaydın hukuki, muhasebesel ve aktüeryal anlamını korumakla ilgilidir. Bunu içselleştirdiğinizde, "veri kaybettik mi?" sorusunu sormayı bırakır, "kaybetmediğimizi kanıtlayabilir miyiz?" sorusunu sormaya başlarsınız.
Bunlar çok farklı sorulardır.
AS400 Tuzağı: Karmaşık Olduğu Anlaşılana Kadar Basit Görünen Veri
Türk sigortacılığındaki AS400 sistemleri, yirmi-otuz yıllık birikmiş semantik taşır. Packed decimal'lar. EBCDIC kodlama tuhaflıkları. 1998'de birinin Y2K'yi CHAR(7) ile çözdüğünü düşündüğü için integer olarak saklanan tarih alanları. Bazı modüllerde banker's rounding, diğerlerinde half-up ile yuvarlanan prim hesaplamaları — ve kimse hangisinin nerede kullanıldığını dokümante etmemiş.
Oracle'a geçtiğinizde şöyle şeyler keşfedersiniz:
- Teknik olarak VARCHAR olan ama 2003 ile 2011 arasında hangi şubenin girdiğine bağlı olarak üç farklı format konvansiyonuna sahip bir
POLICY_NOalanı - Bir tabloda kuruş cinsinden, diğerinde TL cinsinden saklanan ve şema düzeyinde hiçbir göstergesi olmayan para birimi tutarları
- Bir modülde status flag ile, diğerinde audit log kayıtlarıyla satır silme yoluyla uygulanan soft delete'ler
- Veritabanında değil, COBOL copybook'larında dokümante edilmiş composite key'ler
Bunu bir ETL problemi olarak ele alırsanız, veri kaybedersiniz. Satır değil — anlam. Ve regüle bir ortamda anlam kaybetmek, satır kaybetmekten daha kötüdür; çünkü kaybolan satırlar mutabakatla yakalanır. Kaybolan anlam, iki yıl sonra bir regülatör tarafından yakalanır.
Sıfır Veri Kaybı Bir Test Değil, Bir Mimaridir
FENIKS'teki temel karar erken alındı: veri doğruluğunu sonda doğrulamayacaktık. Yol boyunca veri kaybetmeyi yapısal olarak imkânsız kılacaktık.
Bu, birkaç pazarlık edilemez taahhüt anlamına geliyordu:
Kayıt düzeyinde çift yönlü izlenebilirlik. Oracle'daki her satır, AS400 kaynağının kimliğini kalıcı olarak taşımak zorundaydı — bir migrasyon log'unda değil, şemanın kendisinde. 2027'de bir poliçe sorgulandığında, bir denetçi bunu geldiği tam AS400 kaydına, dosyasına ve zaman damgasına kadar takip edebilmeliydi. İstisna yok, "sonra ekleriz" yok.
Bir faz olarak değil, sürekli bir servis olarak mutabakat. Migrasyondan sonra bir kerelik satır sayım karşılaştırması yapmak yerine, mutabakatı cutover sırasında, sonrasında ve ötesinde çalışan uzun ömürlü bir süreç olarak inşa ettik. Mali toplamlar, poliçe sayıları, hasar rezervleri ve prim tahakkukları birden fazla granülerlikte — şirket, şube, ürün grubu, muhasebe dönemi — mutabık kılındı ve farklar raporlara gömülmek yerine veri olarak ortaya kondu.
Açıkça versiyonlanmış semantik dönüşüm. Bir AS400 değerini Oracle değerine dönüştüren her kural, kod, versiyonlu ve gözden geçirilebilir olmak zorundaydı. Birinin gece 2'de baskı altında değiştirdiği bir stored procedure değil. Eğer 4. iterasyon ile 5. iterasyon arasında bir yuvarlama konvansiyonu değiştiyse, migrasyonu yeniden oynatıp tam olarak hangi kayıtların etkilendiğini görebiliyorduk.
Idempotent yeniden çalıştırma. Migrasyon, state'i bozmadan yeniden çalıştırılabilir olmak zorundaydı. Bir ekibin gece yarısı production migrasyonunda panik içinde patch attığını ve ikinci çalışmanın hasarları çift kayıt edeceğini fark ettiğini görene kadar bu açık görünür.
Gerçekte Neler Yanlış Gider (Ve Son Doğrulamanın Neden Hiçbirini Yakalayamayacağı)
Sahadan birkaç örnek:
- Ay sonu prim tahakkukları. AS400, belirli ürün türleri için artık yıllarda bir gün kayan bir gün-sayım konvansiyonu kullanarak tahakkuk hesaplıyordu. Oracle hedefi düzeltilmiş bir konvansiyon kullanıyordu. Satır sayıları tuttu. Toplam prim yuvarlama sınırları içinde tuttu. Ama bir alt kümede tek tek poliçe tahakkukları 1/365 oranında sapıyordu — toplu mutabakatı geçecek kadar küçük, çeyrek sonunda genel muhasebe ile tutmayacak kadar büyük.
- Referansiyel onarımla diriltilen soft-delete'li poliçeler. Saf bir migrasyon, FK var diye iptal edilmiş poliçelere hasarları yeniden bağlardı. Bunu yakaladık çünkü mimari bizi her kaydın yalnızca mevcut değerini değil, yaşam döngüsü durumunu korumaya zorlamıştı.
- Komisyon hesaplamalarında para birimi hassasiyeti kaybı. Packed decimal'dan NUMBER'a dönüşümler, komisyonlar üç hesaplama adımı boyunca zincirleyene ve kümülatif hata aktüerya ekibinin portföyleri onaylamak için kullandığı eşiği aşana kadar zararsız görünür.
Bunların hiçbiri satır sayımıyla yakalanamazdı. Hepsi bir regülatör tarafından yakalanırdı.
Sıfır Veri Kaybının Gerçek Tanımı
Regüle bir finansal migrasyonda sıfır veri kaybı üç şey demektir, sadece üç şey:
- Her kaynak kayıt hesaba katılmıştır — korunmuş, dönüştürülmüş ya da dokümante bir gerekçeyle açıkça ve izlenebilir şekilde hariç tutulmuştur.
- Her dönüşüm tekrarlanabilirdir — kaynak, kurallar ve versiyon verildiğinde aynı hedefi üretebilirsiniz. Sonsuza kadar.
- Her iş değişmezi korunur — genel muhasebe tutar. Rezervler tutar. Prim kütüğü tutar. Yaklaşık olarak değil. Tam olarak, kuruşuna kadar.
Cutover'dan yıllar sonra bu üçünü de talep üzerine gösteremiyorsanız, sıfır veri kaybına ulaşmadınız. Fark ettiğiniz kadarıyla sıfır veri kaybına ulaştınız.
Alınması Gereken Ders
Büyük ölçekli migrasyonda başarısız olan ekipler, ETL'i zayıf olanlar değildir. Veri doğruluğunu bir tasarım kısıtı olarak değil, bir doğrulama adımı olarak ele alanlardır. Doğrulama çalıştığı zamana kadar, sıfır veri kaybını kanıtlayıp kanıtlayamayacağınızı belirleyen mimari kararlar çoktan alınmıştır — aylar önce, çoğu zaman aldıklarını bilmeyen insanlar tarafından.
FENIKS işe yaradı çünkü ilk gün, migrasyonun veri taşımak için bir proje olmadığını kabul ettik. Bu, organizasyonda daha önce kimsenin geçmediği bir sistem sınırı boyunca anlamı koruma taahhüdüydü. Diğer her şey — araç gereç, takvim, cutover planları — bu taahhütten türedi.
Bu duruştan migrasyon yapın, sıfır veri kaybı savunduğunuz bir iddia olmaktan çıkar. Kanıtlayabileceğiniz bir özellik haline gelir.