На что обращать внимание при разбиении монолита на микросервисы, какие проблемы могут возникнуть и какие подходы к нарезке
Что проверяют
Отличаете ли вы нарезку по бизнесу от нарезки по слоям и понимаете ли цену распределённости. Ответ «разделим на сервисы и будем деплоить независимо» без разговора про данные и согласованность закрывает вопрос сразу.
Как отвечать
Начать с причины. Микросервисы решают организационную проблему и проблему независимого масштабирования, а не делают код чище. Одна команда и один релизный поезд дешевле обслуживаются модульным монолитом, и сказать это вслух не минус.
Нарезка идёт по ограниченным контекстам, то есть по областям данных и правил, которые меняются вместе. Практический критерий владения: сервис держит свои таблицы, и никто не ходит в них напрямую. Помогает посмотреть, какие изменения исторически приходят одним коммитом и какие таблицы джойнятся в каждом запросе: такие куски резать нельзя.
Метод миграции: strangler fig. Ставим фасад на входе, выносим один кусок, переводим на него трафик, старый код удаляем. Переписывание целиком до конца обычно не доживает.
Данные: своя база на сервис, @Transactional через границу больше не работает. Вместо неё сага с компенсациями и transactional outbox, чтобы запись в базу и событие в брокер не разъехались, плюс идемпотентные потребители.
Проблемы называют сами: сквозная трассировка, версионирование контрактов, каскадные отказы (таймауты, circuit breaker), контрактные тесты и Testcontainers, рост задержек на сетевых вызовах.
Где спотыкаются
Режут по слоям: сервис API, сервис бизнес-логики, сервис доступа к данным. Получается распределённый монолит, где любая фича трогает три сервиса и требует согласованного релиза, а сеть добавлена бесплатно только на схеме.
Второе: оставляют общую базу «на время». Время не кончается, схема остаётся точкой связности, и независимый деплой, ради которого всё затевалось, невозможен.
Третье: не отвечают про согласованность вообще или предлагают двухфазный коммит. Он плохо живёт поверх HTTP и брокеров, и интервьюер ждёт разговора про итоговую согласованность.