Какие недостатки микросервисной архитектуры существуют кроме сложности согласованности данных
Что проверяют
Видели ли вы микросервисы в эксплуатации, а не только на схеме. Согласованность данных уже названа, поэтому ждут остальное: сеть, наблюдаемость, тестирование, инфраструктуру и цену для команды. Следом почти всегда просят к каждой проблеме назвать приём, которым её гасят.
Как отвечать
Стройте ответ парами «проблема и чем её лечат» на стеке Spring:
- сеть вместо вызова метода: задержки, таймауты, частичные отказы. Нужны таймауты на каждом клиенте, ретраи с backoff и circuit breaker, сейчас это Resilience4j. Без них один медленный сервис роняет всю цепочку;
- распределённая отладка: запрос проходит пять сервисов, и лог в каждом свой. Спасают сквозной trace id через OpenTelemetry или Micrometer Tracing в Spring Boot 3, централизованные логи и метрики;
- тестирование: интеграционный прогон требует поднять соседей. Помогают контрактные тесты (Spring Cloud Contract, Pact) и Testcontainers;
- совместимость API: сервисы выкатываются независимо, значит, любое изменение контракта должно быть обратно совместимым;
- накладные расходы: каждый сервис это своя JVM, пул соединений, пайплайн и дашборд. Часть памяти возвращает GraalVM native image, но оркестрация в Kubernetes всё равно нужна;
- запросы через границы: отчёт, который в монолите был одним
JOIN, теперь собирается из нескольких API или отдельной витрины; - безопасность: межсервисная аутентификация, передача токена, mTLS.
Закончите организационной ценой: микросервисы окупаются, когда несколько команд должны деплоиться независимо. Для одной команды из пяти человек модульный монолит часто честнее.
Где спотыкаются
Перечисляют минусы без решений. Список проблем знают все, кандидата отличает именно вторая половина пары.
Не упоминают распределённый монолит: сервисы разнесены, но синхронно зовут друг друга и выкатываются только вместе. Это худшее из обоих миров.
Говорят про «сложность» абстрактно. Сильнее звучит практика: сколько было сервисов, что ломалось, как искали причину инцидента.