Микросервисы

Микросервисы не лечат плохую архитектуру. Они делают ее распределенной

Иногда микросервисы продают как лекарство от монолита.

Но если в монолите были плохие границы, неясная ответственность и хаос в данных, после миграции это не исчезнет.

Просто теперь хаос будет ходить по сети, падать по timeout, ретраиться три раза и писать в пять разных логов.

Поэтому для меня микросервисы начинаются не с Kubernetes и не с количества репозиториев.

Они начинаются с вопросов:

1. Где реальные bounded contexts. 2. Кто владеет данными. 3. Можно ли сервис деплоить независимо. 4. Что происходит при partial failure. 5. Как система живет без синхронного ответа соседнего сервиса. 6. Кто отвечает за наблюдаемость, алерты и rollback. 7. Где нужна eventual consistency, а где она сломает бизнес.

Из паттернов, которые чаще всего оказываются полезными:

Database per service - когда сервис реально владеет своими данными, а не просто ходит в общую базу под другим именем.

API Gateway / BFF - чтобы клиенты не знали всю внутреннюю карту сервисов.

Outbox + messaging - чтобы события не терялись между записью в БД и отправкой в брокер.

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

Circuit breaker, timeouts, bulkhead - чтобы один умирающий сервис не утянул за собой весь backend.

Strangler Fig - когда монолит не переписывают героически за год, а постепенно выносят куски за понятные границы.

Но главный паттерн, как ни странно, не технический.

Главный паттерн - не делать микросервис там, где команда еще не понимает доменную границу.

Потому что монолит с плохой архитектурой больно поддерживать.

А микросервисы с плохой архитектурой больно поддерживать, деплоить, дебажить, мониторить и объяснять бизнесу, почему "просто добавить поле" заняло неделю.

Мой вывод простой:

микросервисы имеют смысл, когда сложность уже есть в бизнесе и команде нужна независимость.

Если сложности пока нет, микросервисы часто создают ее сами.

А вы где проводите границу: когда монолит уже пора резать, а когда это еще архитектурный театр?

#dotnet #backend #архитектура #microservices

Микросервисы | Сетка — социальная сеть от hh.ru