Booking Microservices — готовый шаблон для сложных распределённых систем
Представьте, что вам нужно разработать систему бронирования билетов с высокой нагрузкой, где разные команды работают над отдельными сервисами, а бизнес-логика постоянно меняется. Именно для таких случаев Meysam Hadeli создал booking-microservices — готовый шаблон, который сочетает в себе лучшие практики построения микросервисных приложений.
Почему этот проект стоит внимания?
Это не просто демо-приложение, а полноценный шаблон, который:
- Использует последнюю версию .NET 9
- Включает все современные архитектурные подходы: CQRS, Event Sourcing, DDD
- Предлагает готовые решения для распространённых проблем микросервисов
- Позволяет сразу начать разработку, а не тратить время на настройку инфраструктуры

Ключевые возможности
1. Вертикальные срезы вместо горизонтальных слоёв
Автор отказался от традиционного разделения на контроллеры/сервисы/репозитории в пользу вертикальных срезов (Vertical Slice Architecture). Каждая бизнес-функция (например, "создать бронь") содержит всё необходимое в одном месте:
// Пример структуры для функции бронирования
Features/
BookFlight/
BookFlightEndpoint.cs // API endpoint
BookFlightCommand.cs // Команда
BookFlightHandler.cs // Обработчик
BookFlightValidator.cs // Валидация
BookFlightResponse.cs // Ответ
Такой подход упрощает добавление новых функций и снижает вероятность побочных эффектов при изменениях.
2. Готовая инфраструктура для микросервисов
Проект включает всё необходимое для работы распределённой системы:
- Межсервисное взаимодействие: gRPC для синхронных вызовов, RabbitMQ через MassTransit для асинхронных событий
- Отказоустойчивость: Retry/Circuit Breaker через Polly
- Мониторинг: OpenTelemetry + Prometheus + Grafana
- Логирование: Serilog + Kibana
- Безопасность: IdentityServer для аутентификации
3. Разные подходы к хранению данных
В зависимости от потребностей сервисы используют:
- PostgreSQL для записи (write side)
- MongoDB для чтения (read side)
- EventStore для хранения истории изменений в Booking Service
Технические детали
Архитектурные решения
- CQRS: Чёткое разделение на команды (изменение данных) и запросы (получение данных)
- Event Sourcing: Все изменения агрегатов сохраняются как последовательность событий
- DDD: Бизнес-логика изолирована в доменных моделях
Основные технологии
- .NET 9
- ASP.NET Core Minimal APIs
- Entity Framework Core
- MediatR
- MassTransit
- gRPC
- Docker + Kubernetes

Как начать использовать
Проект можно запустить несколькими способами:
- Через Aspire (для локальной разработки):
aspire run
- Через Docker Compose:
docker-compose -f ./deployments/docker-compose/docker-compose.yaml up -d
- В Kubernetes (с TLS через cert-manager):
kubectl apply -f ./deployments/kubernetes/booking-microservices.yml
Кому будет полезен этот проект?
- Командам, начинающим разработку микросервисного приложения на .NET
- Разработчикам, желающим изучить современные архитектурные подходы
- Инженерам, которым нужен готовый шаблон с настроенной инфраструктурой
Booking Microservices — это отличная отправная точка для тех, кто:
- Хочет избежать типичных ошибок при проектировании микросервисов
- Ищет пример правильного применения CQRS и Event Sourcing
- Нуждается в готовом шаблоне с настроенным CI/CD и мониторингом
Проект активно развивается и уже собрал более 1200 звёзд на GitHub. Если вы работаете с .NET и микросервисами, определённо стоит изучить его внимательнее.
