Klient je jednou z největších finančních institucí v České republice. Desetiletí provozu na Oracle databázi znamenala rostoucí náklady na licence, omezení ve škálovatelnosti a stále složitější údržbu infrastruktury. Vedení IT oddělení se rozhodlo pro strategickou migraci transakčního úložiště do Azure Cosmos DB — plně spravované NoSQL databáze navržené pro globální distribuci a elastický výkon.
Naším úkolem bylo navrhnout a realizovat kompletní migrační strategii pro 200 milionů historických transakčních záznamů, a to bez jakéhokoli výpadku služby pro koncové uživatele.
Výzva¶
Objem a komplexita dat¶
Transakční databáze obsahovala 200 milionů záznamů naakumulovaných za více než 15 let provozu. Data zahrnovala:
- Platební transakce — kartové platby, převody, inkasa s komplexními vazbami na účty, klienty a obchodníky
- Historické záznamy — regulatorní požadavek na uchovávání kompletní transakční historie po dobu 10 let
- Referenční data — provázanost s desítkami dalších systémů (CRM, AML, reporting)
- Indexy a pohledy — stovky SQL views a stored procedures vytvořených za roky provozu
Přímá migrace nebyla možná. Datový model Oracle (relační, normalizovaný) se zásadně lišil od cílového modelu Cosmos DB (dokumentový, denormalizovaný). Každý záznam musel být transformován, obohacen a validován.
Nulový výpadek¶
Finanční systém zpracovává transakce 24/7. Jakýkoli výpadek by měl přímý finanční dopad na miliony klientů. Požadavek byl jednoznačný: migrace musí proběhnout bez jakéhokoli přerušení služby, bez degradace výkonu a bez ztráty dat.
Konzistence dat¶
V bankovním prostředí musí každá koruna sedět. Jakýkoli nesoulad mezi zdrojovým a cílovým systémem by byl nepřijatelný. Potřebovali jsme mechanismus, který zajistí 100% konzistenci dat během i po migraci.
Řešení¶
Custom CDC pipeline¶
Navrhli jsme vlastní Change Data Capture (CDC) pipeline postavenou na Apache Kafka, která v reálném čase zachycovala všechny změny v Oracle databázi a replikovala je do Cosmos DB:
- Oracle LogMiner integration — čtení redo logů pro zachycení každé změny bez dopadu na produkční zátěž
- Kafka Connect — spolehlivý přenos změnových událostí s garantovaným doručením (exactly-once semantics)
- Transformation layer — Python mikroslužby pro transformaci relačního modelu na dokumentový model Cosmos DB
- Cosmos DB writer — optimalizovaný bulk writer s retry logikou a backpressure managementem
Pipeline zpracovávala průměrně 50 000 změn za minutu s end-to-end latencí pod 500ms.
Paralelní validace¶
Klíčovým prvkem migrace byl systém paralelní validace, který nepřetržitě porovnával data v obou systémech:
- Checksum validace — průběžné porovnávání hashů datových bloků mezi Oracle a Cosmos DB
- Business rule validace — automatické kontroly konzistence (součty zůstatků, počty transakcí, agregáty)
- Sample-based deep validation — náhodné vzorkování a detailní porovnání jednotlivých záznamů
- Reconciliation engine — automatická identifikace a oprava nesouladů
Validační systém běžel nepřetržitě po celou dobu migrace a generoval denní report o stavu konzistence dat.
Rollback strategie¶
Pro každou fázi migrace existoval detailní rollback plán:
- Fáze 1 — historická data — jednosměrná migrace s možností návratu na Oracle backup
- Fáze 2 — dual-write — oba systémy přijímají zápisy paralelně, přepnutí čtení je okamžité
- Fáze 3 — cutover — Cosmos DB se stává primárním systémem, Oracle zůstává jako read-only fallback po dobu 30 dní
V případě jakéhokoli problému bylo možné přepnout zpět na Oracle do 5 minut.
Postupná migrace¶
Migrace probíhala ve 4 vlnách po dobu 18 měsíců:
- Vlna 1 — historické transakce starší 5 let (80M záznamů) — nízké riziko, validace přístupu
- Vlna 2 — transakce 1–5 let (70M záznamů) — středně aktivní data, validace výkonu
- Vlna 3 — transakce do 1 roku (40M záznamů) — aktivní data, dual-write aktivace
- Vlna 4 — live cutover (10M aktivních záznamů) — přepnutí na Cosmos DB jako primární systém
Výsledky¶
Snížení nákladů o 60 %¶
Eliminace Oracle licencí a přechod na pay-per-request model Cosmos DB přinesl roční úsporu 60 % oproti předchozímu stavu. Elastický výkon znamená, že klient platí pouze za skutečně spotřebované prostředky.
3× rychlejší dotazy¶
Dokumentový model optimalizovaný pro přístupové vzory aplikací přinesl dramatické zrychlení. Dotazy, které na Oracle trvaly stovky milisekund, nyní běží pod 30ms. Agregační dotazy pro reporting se zrychlily 5×.
99.99% uptime během migrace¶
Za celých 18 měsíců migrace nedošlo k žádnému výpadku služby. Klienti banky nezaznamenali žádnou změnu v dostupnosti ani výkonu služeb. Veškeré přepínání proběhlo transparentně.
Modernizační základ¶
Nová datová platforma na Cosmos DB otevřela cestu pro další modernizaci — real-time analytika, event-driven architektura a globální distribuce dat pro budoucí expanzi.