В поддержку прерыдущего поста лишь небольшой список недостастков микросервисов в сравнении с монолитом от участников моих курсов (ничего не додумывал, большинство кейсов связаны с попыткой резкого перехода на MSA). Обратите внимание, что немало недостатков таковыми не являются в сильной DevOps-культуре, однако и в области проектирования явно наблюдается skill gap, требующий повышения навыков (может потому, что микросервисы — это архитектурный стиль, а не «практика разработки?» 🙂 ):



Сложность управления и мониторинга транзакций

Сложность сопровождения

Сложность проектирования

Сложный вход, так как толстый технологический стек

Дублирование данных (но не доменных сущностей)

Проблемы с целостностью межсервисных операций

Сквозное логирование бизнес-процесса

Дорогие специалисты

Сложность отладки

Сложность в поиске специалистов и обучении команд

Отсутствует качественная "теория" по моделированию распределенных асинхронных процессов - BPMN и прочие UML не эффективны

Хайп

Сложность диагностики

Сложность проектирования и разработки

У каждой успешной компании в MSA свой "опыт" и "заплатки" трудно обобщать

Сложно всем этим зоопарком управлять

Сложность управлением памятью

Сложность системы в целом

Дольше разрабатывать

Сложнее определить требования к ресурсам

Стоимость владения может оказаться выше

Высокие затраты на входе

Производительность массовых операций из-за межсетевых вызовов

Поиск ошибок среди всего множества сервисов

Сложность использования общих библиотеки

Необходимость наличия культуры в организации

Сложность декомпозиции

Наличие множества БД и их поддержки

Необходимость в большом количестве инфраструктурных ресурсов

Требуется организация взаимосвязи между микросервисами

Больше оборудования чем в монолите

Без должно автоматизации деплой сложнее