Проект ОЭЗ «Алабуга»

ОЭЗ «Алабуга»

Особая экономическая зона промышленно-производственного типа в России.

ОЭЗ «Алабуга» — является крупнейшей особой экономической зоной промышленно-производственного типа в России, а так же признана лучшей в Европе (по версии Financial Times).

Задача

Перед нами стояла сложная задача, за 3 месяца разработать масштабный проект, федерального уровня с нагрузкой 200 000 человек одновременно и 3 миллиона уникальных пользователей, все расчеты должны быть корректны, а платформа должна работать стабильно без перебоев. В дальнейшем проект будет масштабироваться еще больше.

Выбор подрядчика осуществлялся на основе выполнения тестового задания с которым команда SatvaSpace справилась наилучшим образом.

Для собственного колледжа ОЭЗ «Алабуга» нуждалась в студентах с высоким потенциалом для последующего обучения с дальнейшим трудоустройством. Для эффективного поиска и отбора студентов по всей России ОЭЗ «Алабуга» разработала техническое задание. Интерактивной средой для работы HR-специалистов и отбора соискателей станет HR-портал, аккумулирующий информацию по каждому претенденту, отслеживающий динамику и уровень развития его soft-компетенций. Мы уверены, столь эффективный кадровый инструмент, не ограниченный географическими рамками, будет полезен не только ОЭЗ «Алабуга», но и многим корпорациям.

Одним из инструментов ассессмента на платформе будет являться бизнес-симуляция в жанре экономическая стратегия под названием «Business Cats». Бизнес-симуляция Business Cats — это долгосрочный проект федерального масштаба. Качественная реализация игры критически важна для выполнения её роли — обучения более миллиона пользователей финансовой грамотности в игровой форме. Так же было привлечено дополнительное государственное финансирование с целью дальнейшего масштабирования. Поддержку концепту игры осуществили федеральные профильные министерства. Выбор подрядчика для реализации игры — для ОЭЗ «Алабуга» не просто один из этапов, а решение, которое во многом определит успешность и эффективность продукта. ОЭЗ «Алабуга» строит далеко идущие планы не только на создание готового продукта, но и на его последующее развитие: сейчас ведется разработка новой версии игры и расширение ее функционала (командной версии игры, где у каждой роли свой функционал). Именно поэтому выбор был очевиден, компания SatvaSpace приступила к работе над проектом.

Решение

После полного аудита технического задания, наши разработчики быстро определили инструменты для создания бизнес симуляции на основе концепции, разработанной в ОЭЗ «Алабуга». Команда SatvaSpace смогла эффективно запрограммировать логику рейтинга сотен соискателей. За основу взят следующий стек технологий: Python, React.

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

Команда проекта

  • Mobile разработчик
  • 3 Backend разработчика
  • Backend архитектор
  • Frontend разработчик
  • Frontend архитектор
  • Аналитик
  • Руководитель проекта
  • 2 Инженера QA
  • Project менеджер
  • UX\UI designer
  • DevOps

Технологии

Backend

Python

Python 3.8 — виртуальная машина быстрее чем 3.6, в нем более взрослая реализация asyncio по сравнению с 3.7 (имена задач, более информативный stack trace).

Sanic framework

простой async сервер, поддерживающий вебсокеты.

Asyncio

Asyncio — для обработки каждой игры требуется поддерживать до 25 постоянных websocket-соединений. Без этого асинхронного фреймворка мы получили бы кучу overhead'а, а его async/await синтаксис позволил разработчикам не погрязнуть в callback hell.

Pydantic

Pydantic - позволил нам оформить наши JSON-сообщения в виде классов, отличается от встроенных в python dataclasses поддержкой вложенности.

Архитектурные особенности

Раздельные боты и игровой сервер — боты используют для игры то же самое API, что и обычные игроки, это позволяет выносить их в отдельные процессы (или даже отдельные хосты), тестировать игровое API ботами и уменьшить объем тестирования для игровых серверов.

Парк выделенных серверов без координатора — пользователям при создании игры выдается путь к серверу, на котором они будут играть. Это позволяет устранить единую точку нагрузки и масштабировать серверы до бесконечности без накладных расходов.

Отсутствие единой базы данных — позволяет снизить до нуля затраты времени на запросы к базе данных, необходимость продумывать блокировки таблиц чтобы соседние игры не замедляли друг друга и мигрировать данные при обновлении версий backend'а.

Frontend

ReactJSMobXMobX Router

Типизация в виде TypeScript не использовали, так как проект необходимо было сдать в сжатые сроки. Поэтому, уделялось чуть больше времени описанию методов.

На проекте нужна была реактивность и, в основном, только эта фича React'а используется. В меньшей степени — некоторые эффекты для удобства.

Нужен был простой store для управления состоянием (хранение и изменение). Поэтому выбор пал на mobX, а не Redux, настройка которого, увеличила бы время разработки.

  • Считаю SatvaSpace профессионалами своего дела, которые понимают заказчика, особое спасибо за это техническому директору Дмитрию Голикову. Всем рекомендую.

Вадим

Руководитель проекта Business Cats