Содержание курса
1. Старт
4 урока
305
240
11м
30
Закрытый
1.1
Приветствие
↗
51
51
1м 53с
5
Открытый
1.2
Описание проекта
↗
103
52
2м 15с
5
Закрытый
1.3
Дополнение
↗
42
36
6м 11с
5
Закрытый
1.4
Начало разработки
↗
109
101
1м 12с
15
2. Создание и публикация шаблона микросервиса
12 уроков
503
490
35м
51
Закрытый
2.1
Введение в создание шаблона микросервиса
↗
64
64
2м 52с
4
Закрытый
2.2
Создание структуры проекта с уточнением по файлу решения
↗
53
44
6м 38с
5
Закрытый
2.3
Настройка зависимостей
↗
45
45
2м 30с
5
Закрытый
2.4
Настройка Swagger для API документации
↗
41
41
3м 4с
2
Закрытый
2.5
DependencyInjection для API слоя
↗
40
40
3м 22с
3
Закрытый
2.6
DependencyInjection для остальных слоев
↗
38
38
3м 26с
6
Закрытый
2.7
Настройка global usings директив
↗
38
38
2м 50с
3
Закрытый
2.8
Создание GitHub Action workflow для автоматизации
↗
38
36
3м 2с
5
Закрытый
2.9
Публикация пакета шаблона
↗
38
38
3м 41с
4
Закрытый
2.10
Установка созданного шаблона
↗
35
35
3м 43с
4
Закрытый
2.11
Использование шаблона для создания проектов
↗
37
37
3м 18с
6
Закрытый
2.12
Публикация документации на GitHub Pages
↗
36
34
2м 41с
4
3. Создание и настройка микросервиса каталога
14 уроков
420
405
30м
77
Закрытый
3.1
Инициализация проекта и создание первого микросервиса каталога
↗
31
31
2м 41с
6
Закрытый
3.2
Настройка портов для микросервиса каталога
↗
31
31
1м 40с
4
Закрытый
3.3
Создание сущностей BaseEntity, Brand, Category, CatalogItem
↗
30
30
2м 49с
5
Закрытый
3.4
Добавление репозитория IBrandRepository
↗
30
30
1м 2с
4
Закрытый
3.5
Добавление репозитория ICategoryRepository
↗
30
30
0м 30с
4
Закрытый
3.6
Добавление репозитория ICatalogItemRepository
↗
30
30
1м 48с
5
Закрытый
3.7
Обновление конфигурации подключения
↗
30
30
1м 42с
5
Закрытый
3.8
Настройка Docker Compose для БД и DBeaver
↗
30
16
4м 46с
6
Закрытый
3.9
Тестовые данные и интеграция библиотеки Marten с PostgreSQL
↗
30
30
2м 52с
7
Закрытый
3.10
Класс для инициализации и наполнения БД тестовыми данными
↗
30
30
3м 32с
5
Закрытый
3.11
Интеграция Marten и инициализация БД в DI контейнер
↗
30
30
3м 8с
5
Закрытый
3.12
Реализация CatalogRepository с методами работы через Marten
↗
30
29
8м 42с
7
Закрытый
3.13
Добавление пакета MediatR в проект
↗
29
29
1м 38с
7
Закрытый
3.14
Запрос, обработчик и ответ для получения списка брендов
↗
29
29
4м 38с
7
4. CQRS и MediatR в каталога
12 уроков
322
320
42м
70
Закрытый
4.1
BrandsController для получения брендов через MediatR
↗
30
30
1м 58с
6
Закрытый
4.2
Регистрация MediatR и контроллеров в DI с MapControllers
↗
28
28
2м 54с
6
Закрытый
4.3
Поддержка лицензии MediatR с ключом из конфигурации
↗
28
28
4м 19с
6
Закрытый
4.4
Рефакторинг BrandsController на базовый ApiController
↗
27
27
3м 5с
5
Закрытый
4.5
Исправление возврата результата в BrandsController
↗
28
28
0м 24с
6
Закрытый
4.6
Версионирование API и обновление конфигурации Swagger
↗
27
27
4м 57с
6
Закрытый
4.7
CQRS: запрос для получения категорий с техническим заданием
↗
26
26
4м 15с
6
Закрытый
4.8
CQRS: запрос для получения товаров каталога
↗
26
26
4м 30с
6
Закрытый
4.9
CQRS: запрос для получения товара по ID
↗
26
26
4м 55с
6
Закрытый
4.10
CQRS: запрос для поиска товаров по названию
↗
26
26
4м 16с
6
Закрытый
4.11
CQRS: запрос для получения товаров по бренду
↗
25
25
2м 53с
5
Закрытый
4.12
Создание CatalogItem через CQRS с размышлениями о валидации
↗
25
23
9м 14с
6
5. Расширение и Production‑ready
12 уроков
281
270
122м
64
Закрытый
5.1
CQRS: команда для обновления товара
↗
24
24
3м 49с
6
Закрытый
5.2
ТЗ CQRS: команда для удаления товара с техническим заданием
↗
24
24
2м 7с
6
Закрытый
5.3
Универсальная модель пагинации Pagination
↗
24
24
2м 43с
6
Закрытый
5.4
CQRS: запрос для получения товаров с пагинацией v2
↗
24
24
2м 24с
6
Закрытый
5.5
CatalogItemControllerV2 для v2 API с Swagger аннотациями
↗
24
24
4м 59с
5
Закрытый
5.6
Поддержка Swagger: документации и UI для v2 API
↗
23
23
3м 58с
5
Закрытый
5.7
Модель QueryArgs с поддержкой фильтрации, поиска и сортировки
↗
23
20
7м 9с
5
Закрытый
5.8
Рефакторинг для повышения производительности с техническим задан
↗
23
23
2м 25с
5
Закрытый
5.9
XML: документирование для Swagger и описание сортировки
↗
23
23
3м 27с
5
Закрытый
5.10
Конфигурация appsettings.json и Dockerfile
↗
23
23
6м 30с
4
Закрытый
5.11
Production docker - compose
↗
23
23
2м 15с
4
Закрытый
5.12
Weekly и беклог
↗
23
15
85м 53с
7
6. Микросервис корзины: CQRS, кэширование и продакшн‑подготовка
16 уроков
327
308
89м
66
Закрытый
6.1
Создание проекта Common.Kernel с интеграцией MediatR
↗
21
21
2м 13с
5
Закрытый
6.2
Базовые интерфейсы CQRS: команд и запросов в Common.Kernel
↗
21
21
2м 7с
5
Закрытый
6.3
Создание микросервиса Basket.API с базовой структурой проекта
↗
21
21
3м 37с
5
Закрытый
6.4
Настройка basket_db для разработки и подключение NuGet—пакетов
↗
21
21
2м 55с
4
Закрытый
6.5
Базовая интеграция Carter, Marten, MediatR и Swagger
↗
21
21
2м 33с
3
Закрытый
6.6
Базовые модели ShoppingCart и ShoppingCartItem
↗
21
21
2м 49с
3
Закрытый
6.7
Реализация ICartRepository и CartRepository с настройкой Marten
↗
21
21
3м 16с
4
Закрытый
6.8
CQRS: команда для сохранения корзины с Mapster и Swagger
↗
21
21
9м 53с
4
Закрытый
6.9
CQRS: запрос для получения корзины
↗
21
8
3м 9с
4
Закрытый
6.10
Кастомный обработчик исключений
↗
20
19
17м 38с
4
Закрытый
6.11
Интеграция FluentValidation
↗
19
19
13м 16с
5
Закрытый
6.12
CQRS: команда для удаления корзины по accountName
↗
19
19
4м 33с
4
Закрытый
6.13
Интеграция Redis кэширования с декоратором и Scrutor
↗
20
19
16м 45с
5
Закрытый
6.14
Конфигурация подключений и Dockerfile для Basket.API
↗
20
20
5м 43с
3
Закрытый
6.15
Production docker — compose
↗
20
20
5м 45с
4
Закрытый
6.16
Weekly и беклог
↗
20
16
3м 35с
4
7. Микросервис промоакций на gRPC: CQRS, Dapper, MySQL и продакшн
16 уроков
277
273
49м
66
Закрытый
7.1
Создание микросервиса с базовой структурой проект
↗
19
19
5м 2с
5
Закрытый
7.2
Настройка gRPC reflection и интеграция с БД
↗
18
18
6м 30с
5
Закрытый
7.3
Рефакторинг Program.cs с DependencyInjection и global usings
↗
17
17
3м 50с
4
Закрытый
7.4
Интеграция MediatR для CQRS — паттерна с Common.Kernel
↗
17
17
1м 52с
4
Закрытый
7.5
Настройка MySQL базы данных с Dapper ORM
↗
17
17
3м 53с
5
Закрытый
7.6
Доменная модель Promo для промоакций
↗
17
17
1м 48с
4
Закрытый
7.7
Инфраструктура инициализации БД с тестовыми данными
↗
17
17
2м 3с
4
Закрытый
7.8
Полная инициализация БД с созданием таблицы и заполнением данных
↗
17
17
3м 5с
5
Закрытый
7.9
Замена GreeterService на PromoGrpcService с тестированием
↗
17
17
5м 32с
5
Закрытый
7.10
Реализация получения промоакций для gRPC сервиса
↗
17
17
5м 17с
4
Закрытый
7.11
Реализация создания промоакций для gRPC сервиса
↗
17
17
5м 34с
4
Закрытый
7.12
Полный CQRS: цикл для обновления промоакций с техническим задани
↗
17
17
4м 34с
4
Закрытый
7.13
Конфигурация Mapster для автоматического маппинга proto — моделе
↗
16
14
6м 47с
4
Закрытый
7.14
Полный CQRS: цикл для удаления промоакций + ТЗ ∙
↗
19
19
-
3
Закрытый
7.15
Dockerfile для контейнеризации Promotion gRPC сервиса ∙
↗
19
19
-
3
Закрытый
7.16
Production docker: compose для Promotion gRPC с MySQL ∙
↗
16
14
2м 56с
3
8. Интеграция промосервиса и корзины
8 уроков
126
119
115м
24
Закрытый
8.1
Интеграция gRPC клиента для получения промоакций в корзине ∙
↗
17
17
-
3
Закрытый
8.2
Dev-окружение: добавление Promotion gRPC сервиса с MySQL ∙
↗
15
15
-
3
Закрытый
8.3
Интеграция применения промоскидок ∙
↗
15
15
-
3
Закрытый
8.4
Рефакторинг SaveCartCommandHandler ∙
↗
15
15
-
3
Закрытый
8.5
Исправление обработки отсутствующих промоакций + ТЗ ∙
↗
15
15
-
3
Закрытый
8.6
Production конфигурация ∙
↗
15
15
-
3
Закрытый
8.7
Логика для инициализации БД ∙
↗
15
15
-
3
Закрытый
8.8
Weekly и беклог
↗
19
12
115м 29с
3
9. Микросервис заказов
21 урок
293
290
2м
63
Закрытый
9.1
Создание микросервиса с базовой структурой и настройкой БД ∙
↗
15
15
-
3
Закрытый
9.2
Базовый класс BaseEntity с системой аудита ∙
↗
15
15
-
3
Закрытый
9.3
Создание доменной модели ∙
↗
15
15
-
3
Закрытый
9.4
Подключение Entity Framework Core с PostgreSQL ∙
↗
15
15
-
3
Закрытый
9.5
Настройка DbContext и конфиг маппинга ∙
↗
15
15
-
3
Закрытый
9.6
Создание тестовых данных и автоматическое заполнение БД ∙
↗
14
14
-
3
Закрытый
9.7
Автоматические миграции и seed при старте приложения ∙
↗
14
14
-
3
Закрытый
9.8
Первая миграция InitialCreate и загрузка тестовых данных ∙
↗
14
14
-
3
Закрытый
9.9
Реализация интерфейсов репозиториев с CQRS разделением ∙
↗
14
14
-
3
Закрытый
9.10
Базовый репозиторий BaseRepository с CRUD операциями ∙
↗
14
14
-
3
Закрытый
9.11
Рефакторинг Repository и реализация Repository ∙
↗
14
14
-
3
Закрытый
9.12
Автоматический аудит в DbContext с перехватом SaveChanges ∙
↗
14
14
-
3
Закрытый
9.13
Интеграция MediatR и Carter для API организации ∙
↗
14
14
-
3
Закрытый
9.14
Функционал получения заказов с Mapster маппингом и валидацией ∙
↗
14
14
-
3
Закрытый
9.15
Исправление ValidationBehavior для поддержки Query — запросов ∙
↗
13
13
-
3
Закрытый
9.16
Глобальный обработчик исключений и исправление валидации ∙
↗
13
13
-
3
Закрытый
9.17
Реализация команды создания заказа с DTO и валидацией ∙
↗
13
13
-
3
Закрытый
9.18
Функционал удаления заказа ∙
↗
13
13
-
3
Закрытый
9.19
Функционал обновления заказа с частичным обновлением ∙
↗
13
13
-
3
Закрытый
9.20
Контейнеризация микросервиса Checkout с Docker ∙
↗
13
13
-
3
Закрытый
9.21
Production docker — compose для Checkout.API с PostgreSQL ∙
↗
14
11
2м 34с
3
10. Событийная интеграция с RabbitMQ: MassTransit
9 уроков
121
116
25м
24
Закрытый
10.1
Настройка RabbitMQ в Dev-окружении
↗
14
14
3м 24с
3
Закрытый
10.2
Интеграция MassTransit.RabbitMQ
↗
14
14
3м 33с
3
Закрытый
10.3
Базовые классы событий для межсервисного взаимодействия
↗
14
14
4м 37с
3
Закрытый
10.4
Extension методы для конфигурации MassTransit с RabbitMQ
↗
14
14
3м 35с
3
Закрытый
10.5
Интеграция брокера сообщений и настройка маппинга
↗
14
14
3м 42с
3
Закрытый
10.6
Реализация функционала корзины и публикация событий ∙
↗
14
14
-
3
Закрытый
10.7
Обработка заказов через RabbitMQ ∙
↗
13
13
-
3
Закрытый
10.8
Docker инфраструктура для production окружения
↗
14
10
9м 25с
3
Закрытый
10.9
Weekly и беклог
↗
10
9
0м 21с
0
11. Инфраструктура
14 уроков
182
170
246м
33
Закрытый
11.1
Построение инфраструктуры ∙
↗
14
14
-
3
Закрытый
11.2
Структурированное логирование HTTP — запросов ∙
↗
14
7
5м 55с
3
Закрытый
11.3
Централизованная настройка системы логирования ∙
↗
14
14
-
3
Закрытый
11.4
Конфигурирование Serilog от консоли до файлов ∙
↗
13
13
-
3
Закрытый
11.5
Логирование gRPC коммуникации ∙
↗
12
12
0м 1с
3
Закрытый
11.6
Централизованное логирование с ELK Stack ∙
↗
13
13
-
3
Закрытый
11.7
Production — ready ELK инфраструктура ∙
↗
14
14
-
3
Закрытый
11.8
Нагрузка с k6 ∙
↗
13
13
-
2
Закрытый
11.9
Мониторинг производительности Prometheus + Grafana ∙
↗
11
11
0м 1с
2
Закрытый
11.10
Библиотека метрик Common.Metrics ∙
↗
12
12
-
2
Закрытый
11.11
Библиотека метрик Common.Metrics ∙
↗
14
14
-
2
Закрытый
11.12
Дашборды Grafana для микросервисов ∙
↗
13
9
-
2
Закрытый
11.13
Управление контейнерами с Portainer ∙
↗
15
15
-
2
Закрытый
11.14
Финал
↗
10
9
241м 54с
0