Неплохой доклад про бекенд 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++ часть и там в отдельных тредах обрабатывали 🤔
Новые технологии не особо сложны, большая проблема в команде была именно в культурном плане. Когда столько лет работаешь с легаси и монолитом, то мыслишь определённым образом. Николас говорит, что именно этот аспект работы и культуры было тяжелей всего переломить и изменить.
Из забавного. В команде в первые годы был принцип: если ты не можешь загуглить это, то не используй 😅
https://www.youtube.com/watch?v=RR0YTEEMLFg
P. S. держите в уме, что в первые годы разработки игры не было ни gRPC, ни Кубера, ни многих ныне популярных подходов.
#eve #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++ часть и там в отдельных тредах обрабатывали 🤔
Новые технологии не особо сложны, большая проблема в команде была именно в культурном плане. Когда столько лет работаешь с легаси и монолитом, то мыслишь определённым образом. Николас говорит, что именно этот аспект работы и культуры было тяжелей всего переломить и изменить.
Из забавного. В команде в первые годы был принцип: если ты не можешь загуглить это, то не используй 😅
https://www.youtube.com/watch?v=RR0YTEEMLFg
P. S. держите в уме, что в первые годы разработки игры не было ни gRPC, ни Кубера, ни многих ныне популярных подходов.
#eve #GDC
YouTube
Quasar, Brightest in the Galaxy: Expanding 'EVE Online's' Server Potential with gRPC
In this 2022 Online Game Technology Summit session, CCP Games’ Nicholas Herring explores why CCP is using gRPC as a solution to enhance EVE Online's massive player battles, how gRPC works within EVE's server architecture, and the opportunities this independent…
А, между тем, на Хабре вышел занимательный пост про создание графического бота для EVE Online на C# в WinForm.
https://habr.com/ru/post/685798/
#eve
https://habr.com/ru/post/685798/
#eve