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