A
Analyst Quick
@analystquick1.8K подп.
754просмотров
41.7%от подписчиков
7 февраля 2026 г.
Score: 829
Недостатки микросервисной архитектуры Микросервисная архитектура (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
754
просмотров
2336
символов
Нет
эмодзи
Нет
медиа

Другие посты @analystquick

Все посты канала →
Недостатки микросервисной архитектуры Микросервисная архитек — @analystquick | PostSniper