Booking Microservices — готовый шаблон для сложных распределённых систем

26 Feb, 2026

Представьте, что вам нужно разработать систему бронирования билетов с высокой нагрузкой, где разные команды работают над отдельными сервисами, а бизнес-логика постоянно меняется. Именно для таких случаев 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

Схема вертикальных срезов

Как начать использовать

Проект можно запустить несколькими способами:

  1. Через Aspire (для локальной разработки):
aspire run
  1. Через Docker Compose:
docker-compose -f ./deployments/docker-compose/docker-compose.yaml up -d
  1. В Kubernetes (с TLS через cert-manager):
kubectl apply -f ./deployments/kubernetes/booking-microservices.yml

Кому будет полезен этот проект?

  1. Командам, начинающим разработку микросервисного приложения на .NET
  2. Разработчикам, желающим изучить современные архитектурные подходы
  3. Инженерам, которым нужен готовый шаблон с настроенной инфраструктурой

Booking Microservices — это отличная отправная точка для тех, кто:

  • Хочет избежать типичных ошибок при проектировании микросервисов
  • Ищет пример правильного применения CQRS и Event Sourcing
  • Нуждается в готовом шаблоне с настроенным CI/CD и мониторингом

Проект активно развивается и уже собрал более 1200 звёзд на GitHub. Если вы работаете с .NET и микросервисами, определённо стоит изучить его внимательнее.

🔗 Перейти к проекту на GitHub