02 Микросервисная архитектура и деплой - egorov-ma/aquastream GitHub Wiki

Микросервисная архитектура и деплой

Архитектурное решение

Система построена на микросервисной архитектуре с разделением ответственности между отдельными компонентами:

  • API Gateway: Выполняет маршрутизацию запросов, аутентификацию (JWT) и балансировку.
  • Микросервисы: Каждый сервис (backend-planning, backend-user, backend-crew, backend-notification) регистрируется в Eureka и взаимодействует через Gateway.
  • Сервис Discovery: Использование Eureka для динамической регистрации и обнаружения доступных экземпляров.
  • Асинхронная коммуникация: Kafka используется для обмена событиями между сервисами.

CI/CD и Деплой

  • 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) для оперативного анализа инцидентов.

Пример диаграммы архитектуры (PlantUML)

@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, которая обеспечивает динамическую маршрутизацию и асинхронную обработку бизнес-событий.
⚠️ **GitHub.com Fallback** ⚠️