Содержание курса
Старт
4 урока
1.
Приветствие
↗
2.
Описание проекта
↗
3.
Дополнение
↗
4.
Начало разработки
↗
Создание и публикация шаблона микросервиса
12 уроков
1.
Введение в создание шаблона микросервиса
↗
2.
Создание структуры проекта с уточнением по файлу решения
↗
3.
Настройка зависимостей
↗
4.
Настройка Swagger для API документации
↗
5.
DependencyInjection для API слоя
↗
6.
DependencyInjection для остальных слоев
↗
7.
Настройка global usings директив
↗
8.
Создание GitHub Action workflow для автоматизации
↗
9.
Публикация пакета шаблона
↗
10.
Установка созданного шаблона
↗
11.
Использование шаблона для создания проектов
↗
12.
Публикация документации на GitHub Pages
↗
Создание и настройка микросервиса каталога
14 уроков
1.
Инициализация проекта и создание первого микросервиса каталога
↗
2.
Настройка портов для микросервиса каталога
↗
3.
Создание сущностей BaseEntity, Brand, Category, CatalogItem
↗
4.
Добавление репозитория IBrandRepository
↗
5.
Добавление репозитория ICategoryRepository
↗
6.
Добавление репозитория ICatalogItemRepository
↗
7.
Обновление конфигурации подключения
↗
8.
Настройка Docker Compose для БД и DBeaver
↗
9.
Тестовые данные и интеграция библиотеки Marten с PostgreSQL
↗
10.
Класс для инициализации и наполнения БД тестовыми данными
↗
11.
Интеграция Marten и инициализация БД в DI контейнер
↗
12.
Реализация CatalogRepository с методами работы через Marten
↗
13.
Добавление пакета MediatR в проект
↗
14.
Запрос, обработчик и ответ для получения списка брендов
↗
CQRS и MediatR в каталога
12 уроков
1.
BrandsController для получения брендов через MediatR
↗
2.
Регистрация MediatR и контроллеров в DI с MapControllers
↗
3.
Поддержка лицензии MediatR с ключом из конфигурации
↗
4.
Рефакторинг BrandsController на базовый ApiController
↗
5.
Исправление возврата результата в BrandsController
↗
6.
Версионирование API и обновление конфигурации Swagger
↗
7.
CQRS: запрос для получения категорий с техническим заданием
↗
8.
CQRS: запрос для получения товаров каталога
↗
9.
CQRS: запрос для получения товара по ID
↗
10.
CQRS: запрос для поиска товаров по названию
↗
11.
CQRS: запрос для получения товаров по бренду
↗
12.
Создание CatalogItem через CQRS с размышлениями о валидации
↗
Расширение и Production‑ready
12 уроков
1.
CQRS: команда для обновления товара
↗
2.
ТЗ CQRS: команда для удаления товара с техническим заданием
↗
3.
Универсальная модель пагинации Pagination
↗
4.
CQRS: запрос для получения товаров с пагинацией v2
↗
5.
CatalogItemControllerV2 для v2 API с Swagger аннотациями
↗
6.
Поддержка Swagger: документации и UI для v2 API
↗
7.
Модель QueryArgs с поддержкой фильтрации, поиска и сортировки
↗
8.
Рефакторинг для повышения производительности с техническим задан
↗
9.
XML: документирование для Swagger и описание сортировки
↗
10.
Конфигурация appsettings.json и Dockerfile
↗
11.
Production docker - compose
↗
12.
Weekly и беклог
↗
Микросервис корзины: CQRS, кэширование и продакшн‑подготовка
16 уроков
1.
Создание проекта Common.Kernel с интеграцией MediatR
↗
2.
Базовые интерфейсы CQRS: команд и запросов в Common.Kernel
↗
3.
Создание микросервиса Basket.API с базовой структурой проекта
↗
4.
Настройка basket_db для разработки и подключение NuGet—пакетов
↗
5.
Базовая интеграция Carter, Marten, MediatR и Swagger
↗
6.
Базовые модели ShoppingCart и ShoppingCartItem
↗
7.
Реализация ICartRepository и CartRepository с настройкой Marten
↗
8.
CQRS: команда для сохранения корзины с Mapster и Swagger
↗
9.
CQRS: запрос для получения корзины
↗
10.
Кастомный обработчик исключений
↗
11.
Интеграция FluentValidation
↗
12.
CQRS: команда для удаления корзины по accountName
↗
13.
Интеграция Redis кэширования с декоратором и Scrutor
↗
14.
Конфигурация подключений и Dockerfile для Basket.API
↗
15.
Production docker — compose
↗
16.
Weekly и беклог
↗
Микросервис промоакций на gRPC: CQRS, Dapper, MySQL и продакшн
16 уроков
1.
Создание микросервиса с базовой структурой проект
↗
2.
Настройка gRPC reflection и интеграция с БД
↗
3.
Рефакторинг Program.cs с DependencyInjection и global usings
↗
4.
Интеграция MediatR для CQRS — паттерна с Common.Kernel
↗
5.
Настройка MySQL базы данных с Dapper ORM
↗
6.
Доменная модель Promo для промоакций
↗
7.
Инфраструктура инициализации БД с тестовыми данными
↗
8.
Полная инициализация БД с созданием таблицы и заполнением данных
↗
9.
Замена GreeterService на PromoGrpcService с тестированием
↗
10.
Реализация получения промоакций для gRPC сервиса
↗
11.
Реализация создания промоакций для gRPC сервиса
↗
12.
Полный CQRS: цикл для обновления промоакций с техническим задани
↗
13.
Конфигурация Mapster для автоматического маппинга proto — моделе
↗
14.
Полный CQRS: цикл для удаления промоакций + ТЗ ∙
↗
15.
Dockerfile для контейнеризации Promotion gRPC сервиса ∙
↗
16.
Production docker: compose для Promotion gRPC с MySQL ∙
↗
Интеграция промосервиса и корзины
8 уроков
1.
Интеграция gRPC клиента для получения промоакций в корзине ∙
↗
2.
Dev-окружение: добавление Promotion gRPC сервиса с MySQL ∙
↗
3.
Интеграция применения промоскидок ∙
↗
4.
Рефакторинг SaveCartCommandHandler ∙
↗
5.
Исправление обработки отсутствующих промоакций + ТЗ ∙
↗
6.
Production конфигурация ∙
↗
7.
Логика для инициализации БД ∙
↗
8.
Weekly и беклог
↗
Микросервис заказов
21 урок
1.
Создание микросервиса с базовой структурой и настройкой БД ∙
↗
2.
Базовый класс BaseEntity с системой аудита ∙
↗
3.
Создание доменной модели ∙
↗
4.
Подключение Entity Framework Core с PostgreSQL ∙
↗
5.
Настройка DbContext и конфиг маппинга ∙
↗
6.
Создание тестовых данных и автоматическое заполнение БД ∙
↗
7.
Автоматические миграции и seed при старте приложения ∙
↗
8.
Первая миграция InitialCreate и загрузка тестовых данных ∙
↗
9.
Реализация интерфейсов репозиториев с CQRS разделением ∙
↗
10.
Базовый репозиторий BaseRepository с CRUD операциями ∙
↗
11.
Рефакторинг Repository и реализация Repository ∙
↗
12.
Автоматический аудит в DbContext с перехватом SaveChanges ∙
↗
13.
Интеграция MediatR и Carter для API организации ∙
↗
14.
Функционал получения заказов с Mapster маппингом и валидацией ∙
↗
15.
Исправление ValidationBehavior для поддержки Query — запросов ∙
↗
16.
Глобальный обработчик исключений и исправление валидации ∙
↗
17.
Реализация команды создания заказа с DTO и валидацией ∙
↗
18.
Функционал удаления заказа ∙
↗
19.
Функционал обновления заказа с частичным обновлением ∙
↗
20.
Контейнеризация микросервиса Checkout с Docker ∙
↗
21.
Production docker — compose для Checkout.API с PostgreSQL ∙
↗
Событийная интеграция с RabbitMQ: MassTransit
9 уроков
1.
Настройка RabbitMQ в Dev-окружении
↗
2.
Интеграция MassTransit.RabbitMQ
↗
3.
Базовые классы событий для межсервисного взаимодействия
↗
4.
Extension методы для конфигурации MassTransit с RabbitMQ
↗
5.
Интеграция брокера сообщений и настройка маппинга
↗
6.
Реализация функционала корзины и публикация событий ∙
↗
7.
Обработка заказов через RabbitMQ ∙
↗
8.
Docker инфраструктура для production окружения
↗
9.
Weekly и беклог
↗
Инфраструктура
14 уроков
1.
Построение инфраструктуры ∙
↗
2.
Структурированное логирование HTTP — запросов ∙
↗
3.
Централизованная настройка системы логирования ∙
↗
4.
Конфигурирование Serilog от консоли до файлов ∙
↗
5.
Логирование gRPC коммуникации ∙
↗
6.
Централизованное логирование с ELK Stack ∙
↗
7.
Production — ready ELK инфраструктура ∙
↗
8.
Нагрузка с k6 ∙
↗
9.
Мониторинг производительности Prometheus + Grafana ∙
↗
10.
Библиотека метрик Common.Metrics ∙
↗
11.
Библиотека метрик Common.Metrics ∙
↗
12.
Дашборды Grafana для микросервисов ∙
↗
13.
Управление контейнерами с Portainer ∙
↗
14.
Финал
↗