Привет! С вами команда Далее. В этом материале мы расскажем о том, как трансформировали базовый тренажер по кибербезопасности в полноценную экосистему, включившую специализированные консоли, конструктор сценариев, интеллектуальную систему проверки ботами и интегрированный аудиочат на базе WebRTC.
Концепция игры
Наш проект — это инструмент для обучения специалистов по кибербезопасности. Изначально он существовал в виде настольной игры, которую мы успешно адаптировали в цифровой формат.
Фундаментальные элементы игры включают:
-
Атаку — внешнюю угрозу, требующую от игрока принятия оперативных контрмер;
-
Сценарий — структурированный набор событий и параметров, определяющий канву игрового процесса;
-
Индустрию — отраслевую специфику компании, в которой разворачиваются действия;
-
Игровые карты — интерфейсные элементы, визуализирующие доступные варианты действий в зависимости от контекста;
-
Уведомления — системный фидбек, направляющий игрока и формирующий логику его дальнейших шагов;
-
Геймборд — визуальную панель, отражающую текущее состояние инфраструктуры и игровых условий.
Постановка задачи
Первоначальная архитектура отличалась монолитностью: единственная консоль, один сервер и жестко прописанные в коде условия атак. Такая структура была негибкой: любое изменение сценария или добавление контента требовало полноценного релиза, что замедляло работу. Кроме того, система демонстрировала слабую масштабируемость — при нагрузке свыше ста человек приходилось объединять серверы в кластеры, что было крайне неэффективно.
Главной целью заказчика стало обеспечение гибкости и высокой производительности. Мы приняли решение разработать редактор сценариев, который позволил бы управлять симуляциями без привлечения разработчиков, и оптимизировать архитектуру для работы под серьезными нагрузками.
Масштабная переработка архитектуры
Мы полностью пересмотрели структуру системы, разделив её на три уровня: консоли для редактора, тренера и игроков.
1. Редакторская консоль: конструктор сценариев и автоматизация тестирования
Сердцем системы стал редактор, позволяющий собирать сценарии как конструктор: определять отрасль, выстраивать инфраструктуру, задавать паттерны атак и последствия действий.
Сценарии хранятся в формате JSON с поддержкой версионности и механизмом наследования (форкинга) для быстрого создания новых игровых миров на основе существующих.

Чтобы исключить ручную проверку всех ветвлений, мы внедрили ботов. Они имитируют прохождение игры, тестируют логику и выявляют ошибки. Кроме того, они визуализируют «идеальный» и «худший» варианты развития событий, что значительно упростило работу редакторов.
2. Тренерская панель: управление сессией и аналитика
Для модераторов мы создали отдельное SPA. Оно дает возможность управлять запуском симуляций, распределять команды, отслеживать прогресс и модерировать коммуникацию.
Одной из ключевых функций стала автоматическая генерация «эталонного сценария» после завершения игры. Этот инструмент позволяет тренеру наглядно разобрать с участниками оптимальную последовательность решений.

Технически это реализовано через автоматизированный обход графа состояний. Система анализирует все возможные ветки и вычисляет «золотой путь» (golden path), обеспечивающий лучший результат при заданных критериях, таких как сохранение рентабельности или минимизация ущерба инфраструктуре.

3. Игровая консоль: производительность на Golang
Для игрового сервера мы выбрали Golang, что позволило обеспечить высокую скорость обработки, эффективную работу с конкурентностью через горутины и экономное потребление памяти. Взаимодействие с фронтендом реализовано через Centrifugo (WebSockets), что позволяет одному серверу беспрепятственно обслуживать сотни команд.
Фронтенд на Vue.js обзавелся расширенным функционалом:
-
встроенным аудиочатом (PION Ion SDK) с режимами командных обсуждений и тренерского стриминга;
-
гибкой системой авторизации;
-
функцией «открытых игр» для автоматического формирования команд;
-
интерактивной визуализацией геймборда, где состояние объектов (угроза/безопасность) отображается динамической подсветкой;
-
возможностью отмены последнего действия в ограниченный промежуток времени.

Аналитический блок
Выделенный сервер статистики обеспечивает детальный сбор данных: от индивидуальных достижений команд до глобальных сводок по сценариям, индустриям и временным периодам. Это позволяет администраторам и тренерам видеть реальную эффективность обучения и сравнивать прогресс участников.
Технологический стек
-
Бизнес-логика (Symfony): основа для тренерской и редакторской панелей.
-
Игровой сервер (Golang): высокая производительность при работе с состоянием игры в оперативной памяти.
-
Real-time коммуникация (Centrifugo): масштабируемость для тысяч одновременных пользователей.
-
Фронтенд (Vue.js): унификация для упрощения поддержки проекта.
Итоговая система стабильно функционирует в трех геозонах, поддерживая свыше 500 команд одновременно без использования сложных кластерных конфигураций.
Заключение
Разработка MVP заняла восемь месяцев, полный цикл внедрения — около двух лет силами команды из пяти человек. Мы превратили простую симуляцию в масштабируемый обучающий продукт, который отвечает самым высоким требованиям к гибкости и технологичности.

