This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Микросервисная архитектура для сервера

iuvis

Начинающий специалист
6 Мар 2022
139
50
91
Салют. Мылся я сегодня в душе, и посетила меня идея о том, чтобы вынести всю бизнесовую, или просто отделяемую логику с основного модуля бэкэнда, и запустить где-нибудь отдельно, обеспечив связь с оставшимся куском кода посредством HTTP/gRPC.

То есть основной "игровой" бэк будет выступать в качестве некого гейтвея, и по совместительству игрового сервиса для взаимодействия с игровым пространством, а всё остальное, что может обойтись и без непосредственной связи с игрой - отдельными модулями. Какие у этого могут быть плюсы и минусы?
 

iuvis

Начинающий специалист
6 Мар 2022
139
50
91
Из плюсов я вижу то, что обычно и выделяют в микросервисах - повышение отказоустойчивости, легче расширять инфраструктуру. Из минусов - вероятно достаточно высокую нагрузку на мосты между сервисами (что будет критично лишь для HTTP, пожалуй).
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
3,799
1,858
208
35
почему именно бизнес-логику а не инфраструктурный слой? (ну например)

http rest - слишком медленно
даже грписи - всё ещё добавляет оверфлоу в микросекундах
для игровых процессов, особенно если игроков много - задержка может быть ощутимой

в монолите процессы синхронны (ну типа), в микросервисах ты можешь начать проёбывать что-то из за ошибок если не использовать распределённые транзакции
чел купил тачку - из за ошибки сети тачка не заспавнилась
  • оркестрация (если это что то сложнее чем гдокер+рпс)
  • потенциально сложная синхронизация, что будет сильно заметно на игровых механиках типа обработки урона и прочих, требующих мгновенного отклика

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

прикольно использовать микросервисы в каком-то функционале, который типа ЛОГИЧНО отделять
статистику например, обработку платежей там донатных
ещё че то такое
но всю блогику
ты как будто хочешь в микросервис вытащить практически то единственное, что по моему выносить туда точно не стоит
 
Реакции: XDeveluxe

Amazingevich

Гений
BackEnd developer
27 Апр 2021
841
480
164
Я даже сейчас не понял что тс хочет вынести туда) В силу своей неопытности в этом вопросе
Ну я могу предположить, что продукт на раге
Будто бы тут в целом смысла то особо нет
Я когда прочитал - у меня сразу в голове промелькнул донат, но что еще выносить?
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
3,799
1,858
208
35
сама логика работы сервера
доменный слой - это доменные модели например, например сам Player и прочие сущности + минимальные базовые методы работы с ними, не завязанные на инфраструктуру. просто модели под данные.
инфраструктурный - базы данных, апишки какие нибудь, ну всё что вовне (например репозитории)
юайки (ну вернее обращение к ним, к клиентке) и рейджмп апи можно по желанию мне кажется что туда же частично прихуячить, что назвать интерфейсным слоем
а вот всё остальное, что работает с доменной логикой и вот этим всем остальным заодно - это бизнес-логика. все игровые процессы без привязки к клиенту или апи.

попросил нейросетку накидать табличку по описанию, хз может так понятнее))




это в целом про логику нормального кодинга внутри твоего приложения
слой - проект.

но вытаскивать слой целиком, тем более бизнеслогики наружу и базарить с ним как с апи
мб я тоже как бы не пиздец опытный, но звучит оч странно
 
Реакции: Amazingevich

Amazingevich

Гений
BackEnd developer
27 Апр 2021
841
480
164
Принял, спасибо
 

FireFeed

⚡️Frontend Developer
Команда форума
Moderator
17 Дек 2020
200
66
127
20
У нас на одном проекте на altv так было 1 фронт часть и 2 бэка(бэк altv и всяческая логика с бд и тп на втором бэке) с использованием grpc
 

iuvis

Начинающий специалист
6 Мар 2022
139
50
91
если падает сервер, какой смысл в том что блогика продолжает жить?
Финансовые модули (донат), туда же какие-нибудь кроны вроде внутриигровых налогов, зарплат. И да, изначально под бизнес-логикой я всё таки подразумевал именно инфру, ошибочка.
 
Реакции: Inoi

iuvis

Начинающий специалист
6 Мар 2022
139
50
91
Ну вот примерно о том и речь. И как показала себя архитектура?
 

FireFeed

⚡️Frontend Developer
Команда форума
Moderator
17 Дек 2020
200
66
127
20
Ну вот примерно о том и речь. И как показала себя архитектура?
с точки зрения разработки оно подольше, плюс некоторые конфликты с типами но это редко, к сожалению я ушел с проекта до его запуска и что там по эффективности не знаю, но думаю такая архитектура дает некоторые преимущества в нагрузке
 

enotit

Гений
High developer
BackEnd developer
13 Ноя 2020
1,531
488
187
21
Это как будто не полное понятие "микросервисной архитектуры", как по мне, скорее выносишь функционал вовне, чтобы сохранить ресурсы в пиковые моменты.
Как будто, это не шибко спасёт ситуацию. Если говорить про финансовую составляющую, покупка ещё одного сервера, который "пашет" 1 минуту (AA:59-> BB:00), остальное время в спячке.

Автономность держать смысла нет, кроме если у тебя несколько интерфейсов игры (сервера связаны, есть механизмы в вебе / телееграм боте etc). Ну дропнулся сервер, ну и че бухтеть. Другой вариант, если дропнулись механизмы, то тогда у тебя должна быть обратная совместимость, то есть накатить изменения после поднятия сервиса. Но нарисовать её, реализовать,уйдёт больше времени, чем оптимизировать узкие места твоего проекта.

Кул стори из жизни, пару лет назад меня собеседовал проект, показал проект, который делал и такой "вот у меня микросервисная технология" (на самом деле нет, просто всё по папочкам кое как разложил и не более. Но слабо помню), я говорю "а зачем?", "А это круто" поступил мне ответ, "с чего бы?" не сдержал эмоций. Так и не смог мне защитить идею, сославшись на мою колхозность и тугость мышления. В итоге, почему-то ворк мне не предложили (или если и предложили, что то на уровне 30 косых за месяц пару лет назад).
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
3,799
1,858
208
35
ну я бы поспорил
есть куча вещей которые можно реализовать как микросервисы - логи событий и сообщений, авторизация, обработка админ-команд например, аналитика, какой нибудь матчмейкинг если у тебя есть ранговые какие-то игры, система каких-нибудь достижений, квестов там хз
ну и естественно всякие боты в тележке, дискиче, донат на сайтике, личный кабинет там
зачем покупка ещё одного сервера, если существует контейнеризация

вопрос конечно ну, а надо ли оно
насколько должен быть ебать его рот проект
но так делать это круто конечно
и заёбно, пизда
 
Реакции: iuvis

enotit

Гений
High developer
BackEnd developer
13 Ноя 2020
1,531
488
187
21
Могу протупить, было два часа тех собеса + рабочий день

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

а кой смысл? у тебя оба эти процесса зависимы. отлетит одно = отлетит другое. При чём если потребляют одни и те же ресурсы.

аналитика, какой нибудь матчмейкинг
тут соглашусь, однако а) сколько серверов себя такое позволят б) ради этого всю архитектуру ставить микросервисной. Если монолит с сервисами, то ясен красен иначе никак, тем более если подобные аналитики или ml.

зачем покупка ещё одного сервера, если существует контейнеризация
тогда вообще весь смысл пропадает, у тебя одно и тоже железо, которое всегда потребляет 40% cpu условно, в 00:00 99%, платишь n-рубликов за малонагруженный сервер.
Но я слаб в серверах, потому скорее всего неправ.

В остальном, мне кажется вы про монолит с интеграциями имеете ввиду,
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
3,799
1,858
208
35
кхм

извиняю

логи на хдд?)) в 2к24?)) ы
это же не просто текстовики, это ротация, их агрегация, быстрый доступ к данным, какой нибудь ЕЛК или аналоги
можно агрегировать с разных серверов, можно хранить в нормальной бд или там пулять в кафку я хз
ну ты же если уже думаешь про микросервисы, нужно ну не масштабами майнкрафт-сервера из 2015 думать

насчёт авторизации и именно рейджа - надо сесть и думать, но мне кажется можно попробовать заставить её жить отдельно
я не уверен, и больше про в целом похожие механики рассуждаю
ну допустим сервер может крашнуться, но может работать авторизация - тогда ты можешь поддерживать другие сервисы которые валидируют юзера, или хотя бы отдавать внятную ошибку

контейнеризация - это вообще не про разные железки, а про изоляцию процессов, гибкость и оптимизацию ресурсов
ты можешь сам балансировать выделяемые ресурсы под сервисы, можешь в целом в любой момент любой сервис перенести куда угодно - подключить дев ветку, подключить облако, просто запустить несколько инстансов, можешь сам поднимать-убивать контейнеры динамически, в зависимости от нагрзуки
нагрузка растёт - распределяешь по нескольким инстансам

"монолит с сервисами" - справедливый тейк, но никто и не говорит что нужно дробить всё на сервисы
просто ну, вынести то что звучит разумным - да хули бы и нет, это точно не плохое решение
 

iuvis

Начинающий специалист
6 Мар 2022
139
50
91
Авторизацию имеет смысл выносить в отдельный сервис, когда у тебя одинаковыми алгоритмами она производится в игре и на сайте в кабинете, условно.
 
Реакции: JJIGolem

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
3,799
1,858
208
35
так ну в этом и суть
ты пишешь 1 сервис - который будешь использовать везде потом)
и в телеге например валидировать чела, и в дискорд боте и на сайте и при донате откуда-нибуь и в игре через этот же сервис проходить

это буквально как написать функцию, которую ты будешь переиспользовать, когда пишешь программу
в этом отчасти и есть смысл сервисов, это чем то похоже на архитектуру кода
 

iuvis

Начинающий специалист
6 Мар 2022
139
50
91
Да, я перепутал) Там @enotit писал о том, что не видит смысла выносить авторизацию отдельно. Я и сделал своё предположение, зачем оно может быть.
 
Реакции: Inoi

enotit

Гений
High developer
BackEnd developer
13 Ноя 2020
1,531
488
187
21
Смотрю в сторону удешевления производства, потому и говорю про хдд. Понятно круто классно перевесить везде докеры, иметь ссд, нанять сеньоров не ниже 10 лет опыта, проектирование на уровне тз, а не в работе. Короче, не вижу смысла в «только ссд», у тебя несколько десятков Тб стринг, ибо кой смысл от лог ещё? Помощь админам и команде разработки, аналитика… и? Ни там, ни там скорость особо не раляет, потребитель не то чтобы лояльный, а скорость чтения не шибко то и выше у ссд.
Брокер поставить соглашусь, было бы хорошо, но тоже нужно продумать, чтоб это не болванка была с утяжелением в поддержке.
Заставить жить отдельно можно почти кого - угодно, кроме как соседа от мамы))
Вопрос в «необходимости» и «резоне».
валидировать вовне мой колхозный мозг не понимает смысла, например, хотфиксом запушивать «новые проверки», но тоже… иметь внешнюю авторизацию, имея сошлклаб, отпадает желание.
Делать ЛК на той же бд игрового сервера как будто бы опасно: а) параллельная разработка должна идти, хотя лк и прилегающие - просто плюс одна страница в интернетике с кнопкой «донат»
б) добавляется публичный интерфейс обращения к БД*, если сделать один лишний шаг, то и игровой сервер окажется в перде.
в) плюс сюда же, ты теряешь несколько мс у игрового сервера, хотя может быть пик загруженности, так ещё вы даете доступ из вне.

* - чубриков, которые смогут сделать это грамотно в рейдже нет, в вебе их очень мало. Вчера вот на собесе был на мидл / сениор (я к первым себя ближе отношу) и когда я рассказал про подобие mvc в нормальном, а не википедии, виде да ещё про реализацию кеширования, то мне, на удивление, сказали, что я первый из десятка кандидатов рассказал про это всё и нормально поддержал. Правда протормозил на внутреннем устройстве cms-ки, но да ладно)


Так это круто классно, я против контейнеров ни слова не сказал. Я только про то что, вот у тебя есть «торт», ты его режешь на куски, какая разница как ты режешь, но больше 100% торта у тебя не будет. Балансировать да, прикольно. Но как по мне это не вопрос ТС про микросервисную архитектуру, я тут про защиту «монолита» хех


Так возвращаемся к старт топику, я высказал мнение, что «микросервисная» бесполезна в рейдже/игровых серверах.
Поддержка всего этого ну больно дороже становится, а вставив басфактор, то кто это будет поддерживать? Ты ещё год потратишь на поиск коллеги или не дай Бог исполнителя.
Дробить точно нет, также как р искусственно вытаскивать «сервисы ради сервисов». А просто интеграции, как это ну в любом моде сделано (тот же донат, да же? Да???).

Тут главный поинт, что «игровой сервер» мастер система и единственный источник баблишка бизнеса. Остальное галимая замануха для игрока - лк, интеграции с тг/дс/одноклассники. Именно игровой сервер должен иметь пинг 0 (для диванных критиков, то 0 это синекдоха), если больше - плохо и чем больше, тем хуже. Всё, это аксиома, дальше нужно думать о «дополнении», а не «расширении».
 

iuvis

Начинающий специалист
6 Мар 2022
139
50
91
Немного офтопа, а расскажи про приведённый тобой пример MVC. Интересно стало.