Index
Архитектурные стили и инструменты - примеры ->
Архитектурные стили и инструменты
1. Event-Driven Architecture (EDA)
Система реагирует на события (сообщения), а не на прямые вызовы. Компоненты взаимодействуют асинхронно через брокер сообщений.
Паттерны
- Event Notification — уведомления о изменениях (например, «заказ создан»).
- Event Sourcing — хранение состояния как последовательности событий.
- CQRS — разделение на команды (запись) и запросы (чтение).
Плюсы
- Высокая масштабируемость.
- Слабая связанность компонентов.
- Устойчивость к нагрузкам.
Минусы
- Сложность отладки.
- Риск дублирования событий.
Инструменты
Назначение |
Инструменты |
Брокеры сообщений |
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 |
Критерии выбора
- Масштаб проекта:
- Для стартапа подойдет монолит или serverless.
- Для enterprise — микросервисы + EDA.
- Команда:
- Микросервисы требуют DevOps-культуры.
- Event-Driven — знаний о message brokers.
- Бюджет:
- Serverless уменьшает затраты на инфраструктуру.
- Kubernetes увеличивает операционные расходы.
Совет: Комбинируйте подходы. Например, микросервисы + Event-Driven для ядра системы и Serverless для вспомогательных задач.
Примеры