Эксперт: интеграции и надежность¶
Как проектировать интеграции так, чтобы они переживали сбои.
Принципы¶
- Контракты явные: схема, версии, политика изменений.
- Идемпотентность: повторный запрос не ломает данные.
- Наблюдаемость: trace-id, метрики, алерты на ошибки и задержки.
Синхронные интеграции (REST/gRPC)¶
- Когда нужен быстрый ответ и транзакционность.
- Защита: таймауты, ретраи с backoff, circuit breaker, ограничение очереди запросов.
- Версионирование:
/v1/..., договор по депреку.
Асинхронные интеграции (события/очереди)¶
- Когда нужна устойчивость и слабая связанность.
- Обязательные элементы: DLQ, ретраи, дедупликация (event id), порядок, TTL.
- События — факты, не команды. Команды — целевому получателю.
Работа с ошибками¶
- Категоризируйте: бизнес-ошибка (не ретраим), техническая (ретраи), фатальная (DLQ/алерт).
- Частичные сбои: саги/компенсации, outbox для надёжной доставки.
Данные и совместимость¶
- Схема в сообщениях: версия, обязательные поля, backward compatibility.
- Контрактные тесты между системами: provider/consumer.
- Маскирование чувствительных данных, шифрование в транзите.
Производительность¶
- Batch/stream: меньше чатов, больше throughput.
- Кеширование ответов, если данные неизменны.
- Rate limiting и защита от бурста.
Чек-лист интеграции¶
- [ ] Контракт описан и версионирован.
- [ ] Идемпотентность и корреляция (trace id/event id) обеспечены.
- [ ] Таймауты, ретраи, circuit breaker настроены.
- [ ] DLQ и алерты есть, правила обработки определены.
- [ ] Тесты на совместимость/контракты проходят.
Last update:
November 18, 2025