Index
Архитектурные стили и инструменты - примеры ->

Архитектурные стили и инструменты

1. Event-Driven Architecture (EDA)

Система реагирует на события (сообщения), а не на прямые вызовы. Компоненты взаимодействуют асинхронно через брокер сообщений.

Паттерны

Плюсы

  • Высокая масштабируемость.
  • Слабая связанность компонентов.
  • Устойчивость к нагрузкам.

Минусы

  • Сложность отладки.
  • Риск дублирования событий.

Инструменты

Назначение Инструменты
Брокеры сообщений Kafka, RabbitMQ, AWS SNS/SQS, NATS
Фреймворки Spring Cloud Stream (Java), MassTransit (.NET), NestJS (TS)
Базы данных для Event Sourcing EventStoreDB, Axon Server, MongoDB (с кастомной реализацией)
Пример: Микросервис уведомлений обрабатывает событие PaymentReceived из Kafka и отправляет email.

Сравнение архитектур

Архитектура Где использовать Сложность Инструменты
Event-Driven Высоконагруженные системы, IoT Высокая Kafka, RabbitMQ
Microservices Крупные enterprise-приложения Очень высокая Kubernetes, Istio
Monolithic MVP, небольшие проекты Низкая Django, Spring Boot
Serverless Событийные задачи, обработка файлов Средняя AWS Lambda, Azure Functions

Критерии выбора

  1. Масштаб проекта:
    • Для стартапа подойдет монолит или serverless.
    • Для enterprise — микросервисы + EDA.
  2. Команда:
    • Микросервисы требуют DevOps-культуры.
    • Event-Driven — знаний о message brokers.
  3. Бюджет:
    • Serverless уменьшает затраты на инфраструктуру.
    • Kubernetes увеличивает операционные расходы.
Совет: Комбинируйте подходы. Например, микросервисы + Event-Driven для ядра системы и Serverless для вспомогательных задач.
Примеры