Паттерны интеграций
Виды (стили) интеграций
- Пользователи
- Данные
- ETL (Extract, Transform, Load)
- ELT (Extract, Load, Transform)
- Shared Database\Table Шлюзовая БД (ШБД)
- Файловый обмен
- Распределенные файловые системы
- Upload File
- Download File
- CDN реализует паттерн Static content hosting
- Протокол WebDAV HTTP API (IIS, Apache support) для подключения сайтов как сетевых дисков
- Приложения
- Direct
- Remote Procedure Invocation (RPC)
- Двунаправленная связь для обмена сообщениями между клиентом и сервером
- протокол WebSocket
- Однонаправленная связь
- HTML спецификация Server Sent Events
- gRPC
- Двунаправленная связь для обмена сообщениями между клиентом и сервером
- Middleware
- Message-oriented
- Advanced transient messaging
- Message-oriented persistent
- log-based message queue
- API Gateway
- SOA
- Message-oriented
Критерии выбора
Способа интеграции:
- Производительность (RPS)?
- менее 10? RPS
- RPC + LB (API GW)
- более Х RPS?
- MessageBus
- RMQ 20k RPS
- MessageBus
- менее 10? RPS
- Схема интеграции
- Точка-точка Point2Point
- Издатель-Подписчики Pub-Sub
- Возможность использовать выбранный способ интеграции для всех приложений, участвующих в интеграции
- Возможность внесения изменений в приложения
- Требования к обеспечению надежности
- Уровень связанности приложений
- Временные задержки доставки данных (Latency)
- Требования к защите данных
Паттерны
- Messaging Patterns
- RPC Команды\Запросы
- Request-Reply
- Async Request-Reply
- Обработка сбоев: Retry Policy, Rate Limit, Circuit Breaker
- Sidecar - паттерн интеграции между приложением и сервисом, развернутый на стороне приложения
- Отвечает за развертывание компонентов приложения в отдельном процессе или контейнере для обеспечения изоляции и инкапсуляции
- Сквозная функциональность
- Ambassador Посредник
- nginx
- Anti-Corruption Layer
- DbC - Design by contract
- Fault Tolerance: Retry Policy, Circuit Breaker, Rate Limit
TODO
- см. EIP https://www.enterpriseintegrationpatterns.com/patterns/messaging/
- https://medium.com/nuances-of-programming/краткий-обзор-10-популярных-архитектурных-шаблонов-приложений-81647be5c46f
- TODO https://github.com/Sairyss/distributed-systems-topics
Технологии
- SOA
- Распределенные файловые системы
- GraphQL
- SOAP
- RPC