Banking CDC и миграция core banking¶
Раздел 05 · Редакционный стандарт
Тип материала — референсная архитектура. HYPOTHETICAL — схемы и операции. INFERENCE — инженерные рекомендации и критерии выбора. Внешние контракты ограничены источниками ниже.
Бизнес-задача¶
Перенести систему учёта с проверяемой полнотой и контролируемой сменой writer.
Требования¶
Сохранить snapshot boundary и доступность WAL/redo. Проверить source-specific контракт, ограничения DDL и rollback window.
Поток данных и владение состоянием¶
flowchart LR
A["Core database"] --> B["Snapshot and log reader"]
B --> C["Kafka"]
C --> D["Target apply"]
D --> E["Cutover controller"]
До переключения source остаётся writer. После fencing target владеет новыми изменениями.
Транзакционные границы¶
Apply state и progress фиксируются вместе в target либо выполняются идемпотентно. Fencing и открытие writer требуют отдельного протокола.
Порядок и идемпотентность¶
Row key, source revision и tx metadata. Snapshot read не является новой бизнес-операцией. Kafka offsets локальны partition.
Нормальная последовательность¶
sequenceDiagram
participant A as Core database
participant B as Snapshot and log reader
participant C as Kafka
participant D as Target apply
A->>B: Read source-native snapshot cut
B->>C: Start retained change stream
C-->>B: Return snapshot and log frontier
B->>D: Apply rows with source revisions
Отказ и восстановление¶
sequenceDiagram
participant B as Snapshot and log reader
participant C as Kafka
participant E as Recovery operator
B->>C: Source log retention gap prevents resume
Note over B,C: Outcome becomes uncertain
E->>C: Build a new snapshot and validate before promotion
E->>B: Resume from verified boundary
При log gap — новый snapshot и generation. Для cutover остановить старые writes, drain до измеренного frontier, сверить и открыть target. После target writes rollback требует reverse replication либо переноса подтверждённых изменений.
Сверка¶
Сравнить ключи, валюты, суммы и journal invariants на fenced cut.
Cutover gate. Запишите source snapshot ID, начальную позицию, подтверждённый конечный frontier и версии схем. Для multi-row transactions выберите атомарный target apply или запретите чтение промежуточной реплики до публикации cut. Сверка проверяет отсутствие orphan legs, одинаковые IDs и signed totals. После promotion служба маршрутизации допускает только новый writer epoch. Сетевое переключение без fencing оставляет риск split brain.
Наблюдаемость¶
Lag, oldest retained log, schema failures и rejected stale writer.
Безопасность и применимость требований¶
Защитить копии PII и привилегии connector. Oracle и PostgreSQL требуют разных source adapters.
Альтернативы и trade-offs¶
CDC снижает паузу, offline copy упрощает доказательство cut.
Вопросы на собеседовании¶
Почему lag=0 недостаточно? Нужны source frontier, покрытие ключей и запрет старого writer.