// кейс · Developers Unknown
Инфраструктура 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: состояние серверов воспроизводимо, а не собрано руками
// production-задачи
Что решали в проде
- Поддерживали и дорабатывали Jenkins-пайплайны: разбирали падения сборок, ускоряли и стабилизировали конвейер
- Деплоили сервисы, делали рестарты и rollback, настраивали переменные окружения и секреты
- Держали dev/qa/staging/prod в синхроне, не давая окружениям критически расходиться
- Настраивали сбор метрик и дашборды в Grafana, искали причины падений по логам в EFK, разбирали инциденты
- Настраивали сетевую часть: DNS, TLS-сертификаты, reverse proxy/ingress, доступы между сервисами и защиту production от случайных изменений
- Автоматизировали повторяемые админские задачи через Ansible и скрипты, уменьшая количество ручных деплоев
- Помогали backend-разработчикам с инфраструктурой, окружениями, деплоем и отладкой сервисов
// контакты
Обсудим вашу задачу
Напишите напрямую в Telegram или оставьте заявку — ответим в ближайшее время.