Инфраструктура backend-разработки онлайн-шутера: CI/CD, отказоустойчивые данные, наблюдаемость

Построили и поддерживали инфраструктуру серверной части онлайн-шутера: окружения dev/qa/staging/prod, CI/CD на Jenkins, отказоустойчивые базы данных и наблюдаемость — чтобы команда выкатывала backend без ручной возни с серверами.

Обсудить похожую задачу

Developers Unknown — команда, разрабатывавшая онлайн-шутер MerX. Мы отвечали за инфраструктуру серверной части: окружения для разработки, тестирования и эксплуатации игрового backend-проекта. Главная задача — чтобы разработчики регулярно собирали, тестировали и выкатывали серверную часть игры без ручной возни с серверами, конфигами и зависимостями, а stateful-компоненты работали предсказуемо и отказоустойчиво.

Стек и инфраструктура

CI/CD на Jenkins

  • Пайплайны сборки backend-сервисов и Docker-образов
  • Прогон тестов и проверок перед деплоем
  • Деплой на dev/qa/staging/prod, ручные и полуавтоматические релизы
  • Откат и повторный деплой проблемных версий

Артефакты и образы

  • Nexus как хранилище сборок и Docker-образов
  • Версионирование артефактов, разделение dev/test/prod-сборок
  • Контроль того, какая версия сервиса развёрнута на каком окружении

Контейнеризация

  • Docker для всех сервисов
  • Docker Compose для dev- и локальных окружений
  • Одинаковое поведение сервисов на dev/qa/staging/prod

Данные и stateful-сервисы

  • PostgreSQL в отказоустойчивой схеме через Stolon
  • Cassandra под высоконагруженные распределённые данные
  • Redis для кэша и быстрых временных данных
  • Kafka для событий и асинхронной обработки, Consul для service discovery

Наблюдаемость

  • VictoriaMetrics (Prometheus-совместимый стек) для метрик
  • Grafana для дашбордов и алертов
  • EFK (Elasticsearch, Fluentd/Fluent Bit, Kibana) для централизованных логов

Инфраструктура как код

  • Terraform — серверы, сети, firewall-правила, DNS
  • Ansible — конфигурация серверов, установка Docker/Jenkins/агентов, деплой конфигов
  • Служебные скрипты на Python/Bash для повторяемых операций

Масштаб платформы

  • Четыре окружения: dev, qa/test, staging и production
  • Backend-сервисы игры, базы данных, очереди и кэши, мониторинг, логирование, CI/CD и вспомогательные сервисы команды
  • Отдельные dev/test/prod-копии данных
  • Раздача конфигов и секретов по окружениям, разделение внутренних и внешних сервисов

Отказоустойчивый stateful-слой серверной части

PostgreSQL в отказоустойчивой схеме через Stolon

Основная реляционная БД игры работала в HA-конфигурации на Stolon: репликация, автоматический выбор мастера и переключение при отказе узла. Настраивали кластер, отрабатывали сценарии потери узла и следили, чтобы приложение переживало смену мастера без ручного вмешательства.

Cassandra, Redis, Kafka и Consul

Вокруг PostgreSQL — распределённое хранилище Cassandra под высоконагруженные данные, Redis для кэша и быстрых временных данных, Kafka для событий и асинхронной обработки, Consul для service discovery и координации сервисов. Каждый компонент нужно было поднять, настроить отказоустойчивость и держать под мониторингом.

Бэкапы, восстановление и миграции

Для всех баз — регулярные бэкапы с проверкой восстановления, миграции схемы и поддержка dev/test/prod-копий данных, чтобы восстановление было проверенной процедурой, а не теорией на случай инцидента.

Диагностика производительности

Разбирали проблемы с производительностью баз и stateful-сервисов: находили узкие места, различали проблемы самой БД и накладных расходов вокруг неё, снижали задержки вместо разбора отдельных медленных случаев постфактум.

Что это дало на практике

Окружения
dev, qa/test, staging и production с автоматизированной сборкой и доставкой сервисов через Jenkins
Релизы
Сборка, прогон проверок, упаковка в Docker-образы, публикация в Nexus и деплой на нужное окружение — вместо ручной сборки «чего-то на сервере»
Отказоустойчивость данных
PostgreSQL в HA-схеме через Stolon с отработанным сценарием переключения при отказе узла
Воспроизводимость
Инфраструктура описана в Terraform, конфигурация серверов — в Ansible: состояние серверов воспроизводимо, а не собрано руками

Что решали в проде

  • Поддерживали и дорабатывали Jenkins-пайплайны: разбирали падения сборок, ускоряли и стабилизировали конвейер
  • Деплоили сервисы, делали рестарты и rollback, настраивали переменные окружения и секреты
  • Держали dev/qa/staging/prod в синхроне, не давая окружениям критически расходиться
  • Настраивали сбор метрик и дашборды в Grafana, искали причины падений по логам в EFK, разбирали инциденты
  • Настраивали сетевую часть: DNS, TLS-сертификаты, reverse proxy/ingress, доступы между сервисами и защиту production от случайных изменений
  • Автоматизировали повторяемые админские задачи через Ansible и скрипты, уменьшая количество ручных деплоев
  • Помогали backend-разработчикам с инфраструктурой, окружениями, деплоем и отладкой сервисов

Обсудим вашу задачу

Напишите напрямую в Telegram или оставьте заявку — ответим в ближайшее время.

+7 (995) 158-12-85