Пара мыслей про микросервисы vs монолит.



Имхо к микросервисам надо переходить в тот момент, когда команда становится слишком большой, и приходит мысль разбить её на две части.



В этот момент надо во-первых, разбить команду правильно, т.е. не по технологиям (а ля бекенд и фронтенд), а согласно логике бизнеса.



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



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



Еще раз, это не технологическое решение, а процессное. Монолит vs микросервисы надо рассматривать с точки зрения ускорения работы бизнеса, а не "в кубере это удобно, а это нет".



Разумеется, спагетти-код разделить сложно, поэтому и монолит внутри себя с самого начала должен состоять из более менее отдельных модулей. Об этом, кстати, говорили на Highload, но там подход был имхо довольно упоротый - сразу городить по БД на каждый модуль. Имхо это чересчур для стартапа на уровне проверки гипотезы.