Гайды

Паттерны микросервисной архитектуры

Database per service, Saga, BFF, strangler fig; API Gateway, очереди, observability и когда оставаться с монолитом.

~11 мин чтения

Паттерны микросервисной архитектуры

Микросервисы — независимые деплой сервисы с границами по бизнес-способностям. Паттерны: API Gateway, Saga для распределённых транзакций, CQRS, Strangler Fig для миграции. Коммуникация — gRPC на Python и Go; очереди — Kafka: топики, RabbitMQ. Шлюз и discovery — API Gateway и Consul/etcd.


1. Database per service

Каждый сервис владеет своей БД; нет общих таблиц через «заднюю дверь». Консистентность — Saga (оркестрация/хореография) и eventual consistency.


2. Anti-Corruption Layer

Защита домена от «легаси» моделей внешней системы через переводной слой.


3. BFF

Backend for Frontend — отдельный API под web/mobile, агрегирующий вызовы.


4. Observability

Коррелированные логи/трейсы — OpenTelemetry; устойчивость — Circuit breaker и retry.


5. Когда не дробить

Маленькая команда и домен — модульный монолит часто дешевле.


6. Синхрон vs асинхрон

REST/HTTP и gRPC для запрос/ответ; очереди (Kafka, RabbitMQ) для развязки по времени и буферизации пиков. Смешение в одном флоу без явных таймаутов и идемпотентности ведёт к каскадным сбоям — см. Circuit breaker.


7. Версионирование API и деплой

Parallel run двух версий за балансировщиком, header-based versioning или путь /v2/ — договоритесь в команде. Blue/green и canary на уровне mesh или ingress снижают риск; связка с GitOps даёт воспроизводимые манифесты.


8. Transactional Outbox

Чтобы не терять доменное событие при сбое сразу после коммита в БД, пишите событие в таблицу outbox в той же транзакции, что и бизнес-данные. Отдельный relay (процесс или CDC) читает outbox и публикует в брокер (Kafka, RabbitMQ). Так вы избегаете «двойной записи» без распределённых транзакций и сохраняете at-least-once доставку при идемпотентных потребителях.


9. Чек-лист

  • Контракты версионируются (consumer-driven contracts).
  • Автономные команды ↔ сервисы (Conway).
  • План отката и feature flagsFeature flags.
  • SLO/SLI на границах сервисов и бюджеты ошибок.
  • Единый correlation id по цепочке вызовов.

Дальше: тег «Микросервисы»