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

Developer platform · Внутренние инструменты

Self-service игровых серверов вместо ручных заявок DevOps

Разработал Go-сервис с интерфейсом в Slack, состоянием в PostgreSQL и Proxmox API, чтобы разработчики самостоятельно создавали и управляли dev-окружениями.

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

Проблема

Для создания игрового сервера разработчик обращался к DevOps, который вручную выполнял развёртывание через Ansible. Состояние окружений было трудно отслеживать, а команда инфраструктуры превращалась в узкое место.

Решение

Написал REST API на Go с PostgreSQL для хранения состояния и интеграцией с Proxmox API. В Slack сделал динамический интерфейс с RBAC и формами: тип окружения (постоянное, временное, preprod), выбор GitLab-ветки с проверкой её существования, ресурсные параметры для preprod. Для временных серверов — TTL в одну неделю с предупреждением за два дня до удаления. Отдельная форма позволяла изменять переменные окружения для тестовых сценариев.

Инженерные решения

Валидация GitLab-веток не даёт создать окружение под несуществующую сборку, PostgreSQL — источник истины о состоянии, RBAC ограничивает доступ, TTL не даёт ресурсам копиться бесконечно.

Результат

Разработчики сами создают и выводят из эксплуатации окружения без ручной заявки. У DevOps уменьшилась операционная рутина, у серверов появился управляемый жизненный цикл.

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

Сервис хранит состояние, но не сверяет его с Proxmox в цикле, как контроллер. Сколько заявок он убрал, не считалось.

Технологии

  • Go
  • Slack API
  • Proxmox API
  • PostgreSQL
  • GitLab
  • RBAC
  • REST API