Требуемые знания:
- 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 платформы.
Требования бизнеса
- Transactional Consistency: Заказы должны публиковаться в event stream атомарно с изменениями в базе данных (никаких потерянных событий)
- Real-time Analytics: Аналитики хотят видеть метрики заказов в BigQuery с задержкой < 5 секунд
- Data Transformation: Перед загрузкой в BigQuery нужно обогатить события (например, добавить статус исполнения)
- Production Reliability: Система должна выдерживать сбои и восстанавливаться без потери данных
Техническая реализация
Вы используете Outbox Pattern для transactional event publishing и CDC pipeline для доставки событий в аналитический warehouse.
Архитектура Pipeline
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 изучен в предыдущих модулях:
| Component | Purpose | Module Reference |
|---|---|---|
| Aurora PostgreSQL | Source database with logical replication | Module 2: PostgreSQL/Aurora CDC |
| Outbox Table | Transactional event publishing pattern | Module 4: Advanced Patterns |
| Debezium Connector | Capture CDC events from WAL | Module 1: Foundations, Module 2 |
| Outbox Event Router SMT | Transform outbox table to routed events | Module 4: Advanced Patterns |
| Kafka | Event streaming backbone | Module 1: Foundations |
| PyFlink Table API | Stream processing and transformations | Module 5: Data Engineering |
| BigQuery | Cloud data warehouse with CDC support | Module 6: Cloud-Native GCP |
| Prometheus + Grafana | Metrics collection and visualization | Module 3: Production Operations |
Ваша задача: Собрать эти компоненты в единую работающую систему.
Проверка знанийПочему Outbox Pattern используется в capstone вместо прямого захвата CDC-событий из таблицы orders?
Что вы будете строить
Deliverables (что нужно сдать)
-
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
-
Code & Configuration
- Outbox table schema (SQL DDL)
- Debezium connector JSON config
- PyFlink Python script с transformations
- BigQuery table DDL
-
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
-
Documentation
- README.md: Как запустить весь pipeline
- architecture.md: C4 diagrams (System Context + Container)
- runbook.md: Operational procedures (что делать при сбоях)
-
Testing Evidence
- Screenshots или logs, показывающие:
- Событие вставлено в outbox table
- Debezium захватил и роутировал событие в Kafka
- PyFlink обработал событие
- Событие появилось в BigQuery
- Screenshots или logs, показывающие:
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)
- Создайте
docker-compose.ymlс PostgreSQL, Kafka, Kafka Connect, Debezium, Prometheus, Grafana - Проверьте connectivity между компонентами
Phase 2: Outbox + Debezium Configuration (2-3 hours)
- Создайте outbox table с правильной schema
- Настройте Debezium connector с Outbox Event Router SMT
- Проверьте, что события роутируются в Kafka topics
Phase 3: PyFlink Stream Processing (3-4 hours)
- Создайте PyFlink job с Table API
- Подключите Kafka source с
format = 'debezium-json' - Добавьте transformations (enrichment, filtering)
- Выведите результат в Kafka sink
Phase 4: BigQuery Integration (2-3 hours)
- Создайте BigQuery table с PRIMARY KEY
- Настройте BigQuery connector для ingestion из Kafka
- Проверьте, что UPSERT/DELETE работают корректно
Phase 5: Monitoring & Testing (3-4 hours)
- Настройте JMX export от Debezium
- Создайте Grafana dashboard
- Проведите end-to-end testing
- Chaos testing (kill connector, verify recovery)
Phase 6: Documentation (2-3 hours)
- Напишите README
- Создайте architecture diagrams (Mermaid или draw.io)
- Напишите runbook
Total time estimate: 15-20 hours (растяните на 2-3 недели для качественного выполнения)
Ключевые паттерны из предыдущих модулей
Повторите эти уроки перед началом работы:
- Outbox Pattern: Module 4 - Outbox Pattern
- Outbox Event Router SMT: Module 4 - Outbox Pattern
- PyFlink Table API: Module 5 - PyFlink Basics
- Debezium Format: Module 5 - PyFlink Basics
- BigQuery CDC: Module 6 - Dataflow CDC to BigQuery
- Monitoring Setup: Module 3 - Metrics and Monitoring
Production Insights
Что отличает capstone от учебных labs?
| Aspect | Learning Labs | Capstone Project |
|---|---|---|
| Scope | Single component | End-to-end integration |
| Failure Handling | Assume happy path | Test failure scenarios |
| Documentation | Code comments | Full architecture + runbook |
| Monitoring | Optional | Mandatory |
| Testing | Manual verification | Automated + chaos testing |
Capstone проверяет: Вы можете самостоятельно спроектировать систему, а не просто следовать инструкциям.
Проверка знанийКакие пять категорий deliverables должен содержать capstone проект для признания его production-ready?
Типичные ошибки (чего избегать)
- Забыли
REPLICA IDENTITY FULL→ UPDATE/DELETE события не содержат полных данных - Нет primary key в BigQuery → CDC ingestion fails
- snapshot.mode неправильный → Connector дублирует все данные при restart
- Нет мониторинга replication slot → WAL bloat заполняет диск
- Не тестировали failure scenarios → Connector restart теряет данные
Что дальше?
В следующем уроке Architecture & Deliverables мы детально разберем:
- C4 architecture diagrams для capstone
- Требования к каждому компоненту (Aurora, Debezium, PyFlink, BigQuery)
- Detailed deliverables checklist
- Anti-patterns и common pitfalls
- Production patterns для каждого слоя
После этого — вы начинаете самостоятельную работу над capstone проектом.
Ключевые выводы
- Capstone = Synthesis: Применяете все 6 модулей в едином проекте
- Production readiness критичен: Не просто “работает”, а “работает надежно с monitoring и recovery”
- Deliverables четкие: Working code + monitoring + documentation + testing evidence
- Time estimate: 15-20 hours растянуть на 2-3 недели
- Success criteria: Functionality + fault tolerance + monitoring + documentation
- Architecture: Aurora → Outbox → Debezium (SMT) → Kafka → PyFlink → BigQuery
- Key technologies: Debezium Outbox Event Router SMT, PyFlink Table API, BigQuery Storage Write API
- Validation: End-to-end latency < 5s, survives connector restart, handles failures gracefully
- Documentation: README + architecture.md + runbook.md обязательны
- Проверка мастерства: Можете ли вы самостоятельно спроектировать CDC pipeline без step-by-step инструкций?
Закончили урок?
Отметьте его как пройденный, чтобы отслеживать свой прогресс