Skip to content
Learning Platform
Advanced
30 minutes
Capstone CDC Aurora PyFlink BigQuery Production

Prerequisites:

  • module-6/06-cloud-monitoring

Capstone: End-to-End CDC Pipeline

Вы прошли шесть модулей курса: от основ Debezium до production deployment на GCP. Теперь время применить все знания в едином capstone проекте — построить production-ready CDC pipeline от начала до конца.

Что такое Capstone Project?

Capstone — это не новые концепции, а синтез всего, что вы изучили. Ваша задача:

  • Интегрировать Aurora PostgreSQL, Outbox pattern, PyFlink, BigQuery в единую систему
  • Продемонстрировать production readiness (не просто “работает”, а “работает надежно”)
  • Создать полную документацию и мониторинг

Этот проект валидирует: Вы можете самостоятельно спроектировать и реализовать production CDC pipeline с пониманием всех критических нюансов.


Бизнес-сценарий: E-commerce Order Processing

Вы строите real-time analytics pipeline для e-commerce платформы.

Требования бизнеса

  1. Transactional Consistency: Заказы должны публиковаться в event stream атомарно с изменениями в базе данных (никаких потерянных событий)
  2. Real-time Analytics: Аналитики хотят видеть метрики заказов в BigQuery с задержкой < 5 секунд
  3. Data Transformation: Перед загрузкой в BigQuery нужно обогатить события (например, добавить статус исполнения)
  4. Production Reliability: Система должна выдерживать сбои и восстанавливаться без потери данных

Техническая реализация

Вы используете Outbox Pattern для transactional event publishing и CDC pipeline для доставки событий в аналитический warehouse.


Архитектура Pipeline

Source: Aurora PostgreSQL
Application
INSERT order
orders table
+same transaction
outbox table
WAL stream
CDC Layer: Debezium
Debezium Connector
(Outbox Event Router SMT)
Route events
Kafka Topic
outbox.event.orders
Consume CDC
Stream Processing: PyFlink
PyFlink Table API
(transformations)
Publish enriched
Kafka Topic
bigquery.orders
Stream ingestion
Analytics: BigQuery
BigQuery Connector
(Storage Write API)
UPSERT/DELETE
BigQuery Table
project.dataset.orders
Export metrics
Observability
Prometheus
(JMX metrics)
Grafana
(dashboards)

End-to-End Latency (typical):

  • Application -> outbox insert: <1ms (same transaction)
  • Debezium WAL polling: 100-500ms (configurable)
  • Kafka publish: 10-50ms (network latency)
  • PyFlink processing: 50-200ms (depends on transformation complexity)
  • BigQuery ingestion: 100-500ms (Storage Write API)
  • Total: ~500-2000ms end-to-end

Technology Stack

Каждый компонент pipeline изучен в предыдущих модулях:

ComponentPurposeModule Reference
Aurora PostgreSQLSource database with logical replicationModule 2: PostgreSQL/Aurora CDC
Outbox TableTransactional event publishing patternModule 4: Advanced Patterns
Debezium ConnectorCapture CDC events from WALModule 1: Foundations, Module 2
Outbox Event Router SMTTransform outbox table to routed eventsModule 4: Advanced Patterns
KafkaEvent streaming backboneModule 1: Foundations
PyFlink Table APIStream processing and transformationsModule 5: Data Engineering
BigQueryCloud data warehouse with CDC supportModule 6: Cloud-Native GCP
Prometheus + GrafanaMetrics collection and visualizationModule 3: Production Operations

Ваша задача: Собрать эти компоненты в единую работающую систему.

Проверка знаний
Почему Outbox Pattern используется в capstone вместо прямого захвата CDC-событий из таблицы orders?
Ответ
Outbox Pattern обеспечивает transactional consistency: бизнес-операция (INSERT в orders) и публикация события (INSERT в outbox) происходят в одной транзакции. Без Outbox возможна ситуация, когда заказ создан, но событие потеряно (или наоборот). Debezium захватывает только outbox INSERT, а Outbox Event Router SMT преобразует CDC-событие в domain event.

Что вы будете строить

Deliverables (что нужно сдать)

  1. Working Infrastructure

    • Docker Compose или Kubernetes manifests для локального запуска
    • Aurora PostgreSQL с logical replication (или PostgreSQL локально для тестирования)
    • Debezium connector с Outbox Event Router SMT
    • PyFlink job для stream transformations
    • BigQuery table с primary key для CDC ingestion
  2. Code & Configuration

    • Outbox table schema (SQL DDL)
    • Debezium connector JSON config
    • PyFlink Python script с transformations
    • BigQuery table DDL
  3. Monitoring & Observability

    • Prometheus scraping JMX metrics от Debezium
    • Grafana dashboard с key metrics:
      • Replication lag (ms behind source)
      • Events/second throughput
      • Connector status (running/failed)
      • PyFlink checkpoint duration
  4. Documentation

    • README.md: Как запустить весь pipeline
    • architecture.md: C4 diagrams (System Context + Container)
    • runbook.md: Operational procedures (что делать при сбоях)
  5. Testing Evidence

    • Screenshots или logs, показывающие:
      • Событие вставлено в outbox table
      • Debezium захватил и роутировал событие в Kafka
      • PyFlink обработал событие
      • Событие появилось в BigQuery

Success Criteria (когда проект “done”)

Ваш capstone проект считается production-ready, если:

Functionality

  • Outbox table создана с REPLICA IDENTITY FULL
  • Debezium connector успешно захватывает события из outbox
  • Outbox Event Router SMT роутирует события в правильные Kafka topics
  • PyFlink job обрабатывает Debezium-formatted events
  • BigQuery table получает UPSERT/DELETE события
  • End-to-end latency < 5 секунд (от INSERT в outbox до появления в BigQuery)

Fault Tolerance

  • Kafka offsets сохраняются корректно (connector restart не теряет данные)
  • PyFlink checkpoints включены и работают
  • Replication slot выживает после connector restart
  • At-least-once delivery гарантируется
  • Duplicate handling реализован (idempotent operations в BigQuery)

Monitoring

  • Prometheus scrapes JMX metrics от Kafka Connect
  • Grafana dashboard показывает:
    • Replication lag
    • Events/sec throughput
    • Connector status
    • PyFlink checkpoint duration
  • Настроен alert на: connector failure, lag > 10 seconds

Documentation

  • README с инструкциями по setup и запуску
  • Architecture diagram (как минимум System Context + Container)
  • Runbook с common failure scenarios и remediation steps

Testing

  • Source-to-target validation (sample data появляется в BigQuery)
  • Negative testing (pipeline handles malformed JSON)
  • Chaos testing (killed connector during processing, verified recovery)

Цель: Не просто “работает на моем laptop”, а “готово к production deployment”.


Рекомендуемый подход

Phase 1: Local Infrastructure Setup (2-3 hours)

  1. Создайте docker-compose.yml с PostgreSQL, Kafka, Kafka Connect, Debezium, Prometheus, Grafana
  2. Проверьте connectivity между компонентами

Phase 2: Outbox + Debezium Configuration (2-3 hours)

  1. Создайте outbox table с правильной schema
  2. Настройте Debezium connector с Outbox Event Router SMT
  3. Проверьте, что события роутируются в Kafka topics
  1. Создайте PyFlink job с Table API
  2. Подключите Kafka source с format = 'debezium-json'
  3. Добавьте transformations (enrichment, filtering)
  4. Выведите результат в Kafka sink

Phase 4: BigQuery Integration (2-3 hours)

  1. Создайте BigQuery table с PRIMARY KEY
  2. Настройте BigQuery connector для ingestion из Kafka
  3. Проверьте, что UPSERT/DELETE работают корректно

Phase 5: Monitoring & Testing (3-4 hours)

  1. Настройте JMX export от Debezium
  2. Создайте Grafana dashboard
  3. Проведите end-to-end testing
  4. Chaos testing (kill connector, verify recovery)

Phase 6: Documentation (2-3 hours)

  1. Напишите README
  2. Создайте architecture diagrams (Mermaid или draw.io)
  3. Напишите runbook

Total time estimate: 15-20 hours (растяните на 2-3 недели для качественного выполнения)


Ключевые паттерны из предыдущих модулей

Повторите эти уроки перед началом работы:

  1. Outbox Pattern: Module 4 - Outbox Pattern
  2. Outbox Event Router SMT: Module 4 - Outbox Pattern
  3. PyFlink Table API: Module 5 - PyFlink Basics
  4. Debezium Format: Module 5 - PyFlink Basics
  5. BigQuery CDC: Module 6 - Dataflow CDC to BigQuery
  6. Monitoring Setup: Module 3 - Metrics and Monitoring

Production Insights

Что отличает capstone от учебных labs?

AspectLearning LabsCapstone Project
ScopeSingle componentEnd-to-end integration
Failure HandlingAssume happy pathTest failure scenarios
DocumentationCode commentsFull architecture + runbook
MonitoringOptionalMandatory
TestingManual verificationAutomated + chaos testing

Capstone проверяет: Вы можете самостоятельно спроектировать систему, а не просто следовать инструкциям.

Проверка знаний
Какие пять категорий deliverables должен содержать capstone проект для признания его production-ready?
Ответ
(1) Working Infrastructure — Docker Compose/Kubernetes с полным стеком компонентов. (2) Code & Configuration — DDL, connector config, PyFlink job. (3) Monitoring & Observability — Prometheus + Grafana с ключевыми метриками. (4) Documentation — README, architecture.md, runbook.md. (5) Testing Evidence — скриншоты или логи end-to-end прохождения события через pipeline.

Типичные ошибки (чего избегать)

  1. Забыли REPLICA IDENTITY FULL → UPDATE/DELETE события не содержат полных данных
  2. Нет primary key в BigQuery → CDC ingestion fails
  3. snapshot.mode неправильный → Connector дублирует все данные при restart
  4. Нет мониторинга replication slot → WAL bloat заполняет диск
  5. Не тестировали failure scenarios → Connector restart теряет данные

Что дальше?

В следующем уроке Architecture & Deliverables мы детально разберем:

  • C4 architecture diagrams для capstone
  • Требования к каждому компоненту (Aurora, Debezium, PyFlink, BigQuery)
  • Detailed deliverables checklist
  • Anti-patterns и common pitfalls
  • Production patterns для каждого слоя

После этого — вы начинаете самостоятельную работу над capstone проектом.


Ключевые выводы

  1. Capstone = Synthesis: Применяете все 6 модулей в едином проекте
  2. Production readiness критичен: Не просто “работает”, а “работает надежно с monitoring и recovery”
  3. Deliverables четкие: Working code + monitoring + documentation + testing evidence
  4. Time estimate: 15-20 hours растянуть на 2-3 недели
  5. Success criteria: Functionality + fault tolerance + monitoring + documentation
  6. Architecture: Aurora → Outbox → Debezium (SMT) → Kafka → PyFlink → BigQuery
  7. Key technologies: Debezium Outbox Event Router SMT, PyFlink Table API, BigQuery Storage Write API
  8. Validation: End-to-end latency < 5s, survives connector restart, handles failures gracefully
  9. Documentation: README + architecture.md + runbook.md обязательны
  10. Проверка мастерства: Можете ли вы самостоятельно спроектировать CDC pipeline без step-by-step инструкций?

Finished the lesson?

Mark it as complete to track your progress