Аладдин Биябангерд
ТекстыАрхитектура backend

Не всё обязано быть микросервисом

Автор:Аладдин БиябангердОпубликовано:4 мин чтения

Какое-то время, пока я учил backend, микросервисы казались автоматически более правильной архитектурой. Отдельные сервисы, отдельные базы, Feign-клиенты, Docker-контейнеры — на схеме всё выглядит солиднее.

Потом, работая с реальными системами, я увидел другую сторону. Отдельный сервис — это ещё и отдельный деплой, сетевое взаимодействие, сценарии отказов, логирование и мониторинг.

Граница сервиса — вопрос не технический

Самый сложный вопрос не «сколько сервисов сделать». Он звучит иначе: «почему эти две части должны жить отдельно?»

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

Верно и обратное: когда граница найдена правильно, разделение себя оправдывает. Каждый сервис несёт свою ответственность и не обязан знать внутренности соседнего.

Как я подхожу к этому сейчас

Сначала разбираюсь в системе. Потом разделяю модули. И только после этого думаю, какую часть имеет смысл выносить в отдельный сервис.

Потому что хорошая архитектура — не та, где использовано больше всего технологий. А та, которой меньше всего больно, когда приходят изменения.