К содержанию
Алексей Чупраков

Архитектура платформы · Ownership инфраструктуры

От legacy batch-процессов до собственной production-платформы аналитики

Взял на себя инфраструктуру аналитического направления, заменил ручное управление заданиями на автоматизированную платформу и выстроил её эксплуатационные процессы.

Компания
Jet Games FZ-LLC
Период
2024–2026

Контекст

Аналитика уже работала, но её техническая основа состояла преимущественно из старого Airflow, который пакетно переносил данные из MySQL в PostgreSQL. Задания развёртывались через FTP, без нормального Git-based workflow; для критичных сервисов не было надёжной практики резервного копирования и эксплуатации.

Ограничения

Backend не мог самостоятельно публиковать события в аналитический контур. Архитектурные решения согласовывались с техническим руководителем. Нужно было развивать платформу, не останавливая работу аналитиков и не создавая новую ручную зависимость от DevOps.

Решение и реализация

Предложил CDC-контур MySQL → Debezium → Kafka (Avro / Schema Registry) → кластер ClickHouse, сырой слой данных и дальнейшие преобразования. Перевёл сервисы к Git, CI/CD и воспроизводимым развёртываниям; модернизировал Airflow (существовали Docker- и Kubernetes-инсталляции, воркеры в Kubernetes масштабировались через HPA). Внедрил Lakekeeper, OpenMetadata и интеграции с Keycloak. Выделил для аналитики собственные серверы, сети и облачные ресурсы, планировал инфраструктурные этапы на квартал, выбирал провайдеров и ёмкость в рамках бюджета. Добавил Ansible, динамический inventory, резервное копирование, мониторинг и runbooks.

Эксплуатация

Работал с техническим руководителем и другими DevOps-командами. Наладил релизный процесс, дежурства, postmortem и документацию: платформа проектировалась так, чтобы не зависеть от присутствия единственного инженера.

Результат

Аналитика получила near-real-time ingestion вместо зависимости только от суточных batch-процессов, а инфраструктура — явные зоны ответственности, управляемые изменения и практики восстановления.

Компромиссы и оговорки

CDC выбран из реальных ограничений backend, а не как универсально лучший вариант. ReplacingMergeTree выполняет дедупликацию асинхронно, поэтому для корректного состояния на чтении может потребоваться FINAL, argMax или другой подход. Контур не обеспечивает exactly-once от начала до конца. Время реакции и восстановления до и после не замерялось.

Технологии

  • Kafka
  • ClickHouse
  • Airflow
  • Kubernetes
  • Debezium
  • Linux
  • GitLab CI
  • Ansible
  • Keycloak
  • Backups