02 Микросервисная архитектура и деплой - egorov-ma/aquastream GitHub Wiki
Система построена на микросервисной архитектуре с разделением ответственности между отдельными компонентами:
- API Gateway: Выполняет маршрутизацию запросов, аутентификацию (JWT) и балансировку.
- Микросервисы: Каждый сервис (backend-planning, backend-user, backend-crew, backend-notification) регистрируется в Eureka и взаимодействует через Gateway.
- Сервис Discovery: Использование Eureka для динамической регистрации и обнаружения доступных экземпляров.
- Асинхронная коммуникация: Kafka используется для обмена событиями между сервисами.
- Pipeline: При деплое применяются манифесты (kubectl apply или Helm чарты).
- GitOps: Рассмотрено использование ArgoCD или Flux – CI пушит новые образы, а система CD самостоятельно синхронизирует изменения в инфраструктуре.
- Kubernetes: Обеспечивает горизонтальное масштабирование, отказоустойчивость и управление контейнерами.
- Prometheus Operator: Сбор метрик (количество регистраций в минуту, ошибки 5xx, использование CPU/RAM, активные подключения к БД).
- Grafana: Визуализация метрик через дашборды.
- Alertmanager: Отправка алертов в Slack или на почту при сбоях или превышении ошибок.
- Spring Cloud Sleuth + Zipkin: Отслеживание цепочки вызовов между сервисами с использованием уникального trace-id.
- EFK Stack: Сбор логов (Filebeat, Elasticsearch, Kibana) для оперативного анализа инцидентов.
@startuml
skinparam rectangle {
BackgroundColor LightBlue
BorderColor Black
}
rectangle "API Gateway" as Gateway
rectangle "backend-planning" as Planning
rectangle "backend-user" as User
rectangle "backend-crew" as Crew
rectangle "backend-notification" as Notification
rectangle "Eureka" as Eureka
rectangle "Kafka" as Kafka
Gateway --> Planning : Запросы (JWT, Retry, Circuit Breaker)
Gateway --> User : Аутентификация и запросы
Gateway --> Crew : Распределение экипажей
Gateway --> Notification : Отправка уведомлений
Planning --> Eureka : Регистрация сервиса
User --> Eureka : Регистрация сервиса
Crew --> Eureka : Регистрация сервиса
Notification --> Eureka : Регистрация сервиса
Gateway --> Eureka : Получение списка сервисов
Planning --> Kafka : Публикация событий
Notification --> Kafka : Обработка событий
@enduml
Важно: Обратите внимание на интеграцию через Eureka и Kafka, которая обеспечивает динамическую маршрутизацию и асинхронную обработку бизнес-событий.