❌ Недостатки микросервисной архитектуры
Микросервисная архитектура (MSA) — подход, когда система разбивается на небольшие независимые сервисы
У MSA есть недостатки, которые важно учитывать при проектировании
1️⃣ Сложность управления распределёнными транзакциями
В монолите транзакции управляются на уровне БД (ACID). В MSA данные распределены, и обеспечение согласованности требует сложных решений
➡️пример: заказ оформлен, платёж прошёл, но товар не списался — пользователь заплатил за несуществующий товар.
Практики:
🤩 Saga-паттерны: реализуют оркестрацию или хореографию транзакций с локальными шагами и компенсациями
🤩 Outbox-паттерн: позволяет гарантировать отправку событий в шину сообщений после успешной локальной транзакции
2️⃣Задержки из-за сетевых вызовов
Межсервисные вызовы (HTTP, gRPC и тд) добавляют сетевые задержки, что может привести к ухудшению UX
➡️пример: открытие страницы профиля пользователя требует вызовов к 10 сервисам — итого 1+ секунда задержки.
Практики:
🤩Кеширование на уровне API Gateway или Edge Cache
🤩 Асинхронная обработка через сообщения и очереди
3️⃣ Оверхеды мониторинга и трассировки
При десятках и сотнях сервисов сложно локализовать источник ошибки и собрать полную картину работы
➡️пример: пользователь видит ошибку при оформлении заказа — неизвестно, виноват Cart, Orders или Payments
Практики:
🤩Distributed Tracing (Jaeger, Zipkin, OpenTelemetry)
🤩Централизованные логи (ELK Stack, Loki)
🤩Метрики и алерты (Prometheus + Grafana)
4️⃣Сложность тестирования и развёртывания
Каждый сервис может иметь свою БД, конфигурацию и зависимости. Интеграционное тестирование всей системы требует поднятия множества сервисов
➡️пример: тест Cart Service требует запуска Users, Products и Discounts — иначе тесты падают
Практики:
🤩Контракты (Contract Testing): Pact, Spring Cloud Contract
🤩 Mock-сервисы и виртуализация (WireMock, Hoverfly)
🤩Изолированные сценарии на уровне эндпоинтов
5️⃣ Дублирование данных и согласованность
Каждый сервис хранит свою копию данных → возможны расхождения
➡️пример: пользователь обновил email, но в Order History отображается старый адрес.
Практики:
🤩 Event Sourcing и CQRS: разделяют чтение и запись и обеспечивают последовательность событий
🤩 Change Data Capture (CDC): синхронизирует данные между БД через Kafka Connect или Debezium
📎 Материалы
1. Микросервисная архитектура в разработке приложений: преимущества и недостатки
2. Микросервисная архитектура
3. Аутентификация и авторизация в проекте с микросервисной архитектурой: стратегии, практический пример
4. Микросервисная архитектура, ее паттерны проектирования и особенности
5. Микросервисы: плюсы, минусы, когда и зачем внедрять
📚 Книги
1. Крис Ричардсон. Микросервисы. Паттерны разработки и рефакторинга
2. Сэм Ньюмен. Создание микросервисов
3. Микросервисы. От архитектуры до релиза(Ронни Митра, Иракли Надареишвили)
4. Изучаем OpenTelemetry: современный мониторинг систем (2025) - Паркер Остин, Янг Тед
#микросервисы #архитектура
➿➿➿➿➿➿➿➿
🧑🎓 Больше полезного в базе знаний по системному анализу
Post #619
21.1K
- 🔥 29
- ❤ 21
- 👍 10
- 👏 2