«Если ты не можешь загуглить это, то не используй»: про разработку EVE Online

Неплохой доклад про бекенд EVE Online с GDC. Больше про то, как меняли подход к сервисам и культуру в команде.

Несколько моментов отметил в Твиттере:

  • 7k C++ файлов, 12к SQL файлов, 20k на Питоне и...260к+ файлов и 50+ миллионов строк YAML'а 🤯
  • Начинали с кучи сервисов, которые, по сути, меш организовывали. Из-за этого сложно вводить/выводить новые подсистемы. Одна жирная БД. Для выкатки обновлений нужна вся команда, Монолит.
  • Потом сделали xml поверх http апишку с агрессивным кешированием.- Переехали на k8s (когда он ещё был в превью).
  • Взаимодействие сверисов сделали через message bus, что позволило кучу технического долга сбросить. Начали с Google pub/sub, потом пересели на Rabbit.
  • Ранее гоняли json'чики, потом переехали на протобаф, который органически помог выделить домейны и структурировать данные, т. к. с json'ами такой надобности не было, а тут прям протокол, по сути, форсит это делать.
    Ещё одна причина выбора протобафа — работа с gRPC. На базе моделей генерили C++ и Питоновский код. И...питоновский код использовал маршалинг в сишечку, что ещё и ускорило всё.
  • 30% времени уходило на 3 вещи: сериализация, передача данных, мультиплекс (например, когда игрок стреляет, то это сообщение нужно прокинуть сотням других игроков). И третье практически бесплатно получается с message bus. А вот с сериализацией и передачей проблемки.
    Даже не смотря на быструю сериализацию, всё равно нужно ждать глобального лока, который ждёт результата от C++ кода. Тут я не совсем понял, что он имел ввиду, но, судя по всему, они ВСЁ связанное с gRPC вынесли из Питона в C++ часть и там в отдельных тредах обрабатывали

Новые технологии не особо сложны, большая проблема в команде была именно в культурном плане. Когда столько лет работаешь с легаси и монолитом, то мыслишь определённым образом.

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

Из забавного. В команде в первые годы был принцип: если ты не можешь загуглить это, то не используй 😅

P. S. держите в уме, что в первые годы разработки игры не было ни gRPC, ни Кубера, ни многих ныне популярных подходов.

6969
23 комментария

нихуя не понял

17
Ответить

Спасибо за выжимку, всегда интересно почитать про бэкенд старых ММОшек вроде EVE или WoW - там часто много разных необычных подходов.

9
Ответить
11
Ответить

Даже не смотря на быструю сериализацию, всё равно нужно ждать глобального лока, который ждёт результата от C++ кода.

идея похоже в том, что чтобы потрогать из C кода питонячьи объекты при сериализации/десериализации последних они внутри этого C кода берут GIL, который как раз и предназначен для того чтобы защищать от одновременного доступа питонячьи объекты.

3
Ответить

Комментарий недоступен

2
Ответить

Продолжается тенденция про то что про EVE Online интересно слушать и смотреть, но не играть

2
Ответить

в видосе много визуальной информации? лучше посмотреть, или можно как подкаст послушать?

1
Ответить