Мы используем cookie для стабильной работы сервиса. Подробнее

C#: CQRS, gRPC, RabbitMQ, Grafana. Маркетплейс на микросервисах

ФорматОнлайн
Объём11 занятий
О курсе

Подробнее

Этот курс — полное практическое пошаговое руководство по разработке микросервисов на .NET, охватывающее все этапы: от создания шаблона и архитектуры до настройки взаимодействия, логирования и мониторинга. Вы научитесь строить масштабируемые, отказоустойчивые системы с использованием современных технологий: CQRS, gRPC, RabbitMQ, Docker, Serilog, ELK, Prometheus и Grafana. Курс выделяется глубокой проработкой практических задач и интеграцией DevOps-процессов, таких как CI/CD и автоматизация. В процессе вы будете создавать и развивать реальные микросервисы, настраивать обмен сообщениями и кэширование, организовывать централизованное логирование и управлять контейнерами. Курс разделен на модули с последовательными заданиями, которые помогут закрепить знания и сформировать комплексные навыки для профессиональной работы с микросервисной архитектурой. Если вы не уверены в том, подходите вы для этого курса или нет - напишите мне Курс идеально подходит для backend-разработчиков и архитекторов, желающих освоить современные практики построения микросервисной архитектуры от начала до production-уровня. Основные технологии и библиотеки подробно расписаны тут. Следить за обновлениями в Telegram
Требования

Что нужно для старта

  • Уверенное владение .NET и C#, знание принципов объектно-ориентированного программирования.
  • Практический опыт работы с ASP.NET Core и REST API.
  • Четкое понимание разницы между слоёной и чистой архитектурами, знание основных паттернов проектирования.
  • Опыт использования Docker и контейнеризации приложений.
  • Навыки работы с системами контроля версий (Git).
  • Базовое понимание работы с реляционными базами данных и основ SQL.
  • Способность работать с системой командной строки (CLI) и элементарно взаимодействовать с Linux-окружением приветствуется.
  • Желательно: базовое представление о брокерах сообщений и принципах обмена сообщениями между сервисами.
Результат

Что вы получите

  • Использовать CQRS и MediatR для четкого разделения команд и запросов,
  • Настраивать и использовать базы данных PostgreSQL и MySQL с Marten, Dapper ORM и Entity Framework,
  • Версионировать и документировать API с помощью Swagger,
  • Реализовывать высокопроизводительный синхронный gRPC и асинхронный обмен сообщениями через RabbitMQ и MassTransit,
  • Внедрять Redis для кэширования и увеличения производительности,
  • Автоматизировать CI/CD процессы с GitHub Actions, создавать шаблоны проектов,
  • Строить централизованную систему логирования на базе Serilog и ELK Stack,
  • Настраивать сбор и визуализацию метрик через Prometheus и Grafana,
  • Проводить нагрузочное тестирование сервисов с k6,
  • Управлять контейнеризированной инфраструктурой с помощью Docker и Portainer,
  • Применять лучшие паттерны проектирования и практики аудита для повышения надежности приложений.
Аудитория

Для кого этот курс

  • Курс предназначен для backend-разработчиков, архитекторов и инженеров DevOps, которые хотят освоить построение современных микросервисных решений на .NET. Он будет полезен тем, кто планирует разрабатывать распределённые системы с применением CI/CD, автоматизированной инфраструктуры, централизованного логирования, мониторинга и интеграций посредством gRPC и брокеров сообщений.
  • Перед началом требуется уверенное понимание отличий чистой архитектуры от слоёной, осознанное представление о назначении минимального API, принципах REST и практике работы с Docker. Человек, собирающийся пройти курс, должен хорошо отличать и применять паттерны проектирования — такие как CQRS, Декоратор, Спецификация — и понимать их место в архитектуре современных сервисов.
  • Курс будет особенно актуален:
  • - разработчикам, переходящим от монолита к микросервисам;
  • - специалистам, желающим внедрить лучшие практики аналитики, мониторинга и логирования в свои проекты;
  • - разработчикам, которые хотят с нуля познакомиться с поэтапным построением современных приложений
Содержание

Программа курса

11 занятий
№ТемаЧто внутри
01Старт

- Приветствие
- Описание проекта
- Дополнение
- Начало разработки

02Создание и публикация шаблона микросервиса

- Введение в создание шаблона микросервиса
- Создание структуры проекта с уточнением по файлу решения
- Настройка зависимостей
- Настройка Swagger для API документации
- DependencyInjection для API слоя
- DependencyInjection для остальных слоев
- Настройка global usings директив
- Создание GitHub Action workflow для автоматизации
- Публикация пакета шаблона
- Установка созданного шаблона
- Использование шаблона для создания проектов
- Публикация документации на GitHub Pages

03Создание и настройка микросервиса каталога

- Инициализация проекта и создание первого микросервиса каталога
- Настройка портов для микросервиса каталога
- Создание сущностей BaseEntity, Brand, Category, CatalogItem
- Добавление репозитория IBrandRepository
- Добавление репозитория ICategoryRepository
- Добавление репозитория ICatalogItemRepository
- Обновление конфигурации подключения
- Настройка Docker Compose для БД и DBeaver
- Тестовые данные и интеграция библиотеки Marten с PostgreSQL
- Класс для инициализации и наполнения БД тестовыми данными
- Интеграция Marten и инициализация БД в DI контейнер
- Реализация CatalogRepository с методами работы через Marten
- Добавление пакета MediatR в проект
- Запрос, обработчик и ответ для получения списка брендов

04CQRS и MediatR в каталога

- BrandsController для получения брендов через MediatR
- Регистрация MediatR и контроллеров в DI с MapControllers
- Поддержка лицензии MediatR с ключом из конфигурации
- Рефакторинг BrandsController на базовый ApiController
- Исправление возврата результата в BrandsController
- Версионирование API и обновление конфигурации Swagger
- CQRS: запрос для получения категорий с техническим заданием
- CQRS: запрос для получения товаров каталога
- CQRS: запрос для получения товара по ID
- CQRS: запрос для поиска товаров по названию
- CQRS: запрос для получения товаров по бренду
- Создание CatalogItem через CQRS с размышлениями о валидации

05Расширение и Production‑ready

- CQRS: команда для обновления товара
- ТЗ CQRS: команда для удаления товара с техническим заданием
- Универсальная модель пагинации Pagination
- CQRS: запрос для получения товаров с пагинацией v2
- CatalogItemControllerV2 для v2 API с Swagger аннотациями
- Поддержка Swagger: документации и UI для v2 API
- Модель QueryArgs с поддержкой фильтрации, поиска и сортировки
- Рефакторинг для повышения производительности с техническим задан
- XML: документирование для Swagger и описание сортировки
- Конфигурация appsettings.json и Dockerfile
- Production docker - compose
- Weekly и беклог

06Микросервис корзины: CQRS, кэширование и продакшн‑подготовка

- Создание проекта Common.Kernel с интеграцией MediatR
- Базовые интерфейсы CQRS: команд и запросов в Common.Kernel
- Создание микросервиса Basket.API с базовой структурой проекта
- Настройка basket_db для разработки и подключение NuGet—пакетов
- Базовая интеграция Carter, Marten, MediatR и Swagger
- Базовые модели ShoppingCart и ShoppingCartItem
- Реализация ICartRepository и CartRepository с настройкой Marten
- CQRS: команда для сохранения корзины с Mapster и Swagger
- CQRS: запрос для получения корзины
- Кастомный обработчик исключений
- Интеграция FluentValidation
- CQRS: команда для удаления корзины по accountName
- Интеграция Redis кэширования с декоратором и Scrutor
- Конфигурация подключений и Dockerfile для Basket.API
- Production docker — compose
- Weekly и беклог

07Микросервис промоакций на gRPC: CQRS, Dapper, MySQL и продакшн

- Создание микросервиса с базовой структурой проект
- Настройка gRPC reflection и интеграция с БД
- Рефакторинг Program.cs с DependencyInjection и global usings
- Интеграция MediatR для CQRS — паттерна с Common.Kernel
- Настройка MySQL базы данных с Dapper ORM
- Доменная модель Promo для промоакций
- Инфраструктура инициализации БД с тестовыми данными
- Полная инициализация БД с созданием таблицы и заполнением данных
- Замена GreeterService на PromoGrpcService с тестированием
- Реализация получения промоакций для gRPC сервиса
- Реализация создания промоакций для gRPC сервиса
- Полный CQRS: цикл для обновления промоакций с техническим задани
- Конфигурация Mapster для автоматического маппинга proto — моделе
- Полный CQRS: цикл для удаления промоакций + ТЗ ∙
- Dockerfile для контейнеризации Promotion gRPC сервиса ∙
- Production docker: compose для Promotion gRPC с MySQL ∙

08Интеграция промосервиса и корзины

- Интеграция gRPC клиента для получения промоакций в корзине ∙
- Dev-окружение: добавление Promotion gRPC сервиса с MySQL ∙
- Интеграция применения промоскидок ∙
- Рефакторинг SaveCartCommandHandler ∙
- Исправление обработки отсутствующих промоакций + ТЗ ∙
- Production конфигурация ∙
- Логика для инициализации БД ∙
- Weekly и беклог

09Микросервис заказов

- Создание микросервиса с базовой структурой и настройкой БД ∙
- Базовый класс BaseEntity с системой аудита ∙
- Создание доменной модели ∙
- Подключение Entity Framework Core с PostgreSQL ∙
- Настройка DbContext и конфиг маппинга ∙
- Создание тестовых данных и автоматическое заполнение БД ∙
- Автоматические миграции и seed при старте приложения ∙
- Первая миграция InitialCreate и загрузка тестовых данных ∙
- Реализация интерфейсов репозиториев с CQRS разделением ∙
- Базовый репозиторий BaseRepository с CRUD операциями ∙
- Рефакторинг Repository и реализация Repository ∙
- Автоматический аудит в DbContext с перехватом SaveChanges ∙
- Интеграция MediatR и Carter для API организации ∙
- Функционал получения заказов с Mapster маппингом и валидацией ∙
- Исправление ValidationBehavior для поддержки Query — запросов ∙
- Глобальный обработчик исключений и исправление валидации ∙
- Реализация команды создания заказа с DTO и валидацией ∙
- Функционал удаления заказа ∙
- Функционал обновления заказа с частичным обновлением ∙
- Контейнеризация микросервиса Checkout с Docker ∙
- Production docker — compose для Checkout.API с PostgreSQL ∙

10Событийная интеграция с RabbitMQ: MassTransit

- Настройка RabbitMQ в Dev-окружении
- Интеграция MassTransit.RabbitMQ
- Базовые классы событий для межсервисного взаимодействия
- Extension методы для конфигурации MassTransit с RabbitMQ
- Интеграция брокера сообщений и настройка маппинга
- Реализация функционала корзины и публикация событий ∙
- Обработка заказов через RabbitMQ ∙
- Docker инфраструктура для production окружения
- Weekly и беклог

11Инфраструктура

- Построение инфраструктуры ∙
- Структурированное логирование HTTP — запросов ∙
- Централизованная настройка системы логирования ∙
- Конфигурирование Serilog от консоли до файлов ∙
- Логирование gRPC коммуникации ∙
- Централизованное логирование с ELK Stack ∙
- Production — ready ELK инфраструктура ∙
- Нагрузка с k6 ∙
- Мониторинг производительности Prometheus + Grafana ∙
- Библиотека метрик Common.Metrics ∙
- Библиотека метрик Common.Metrics ∙
- Дашборды Grafana для микросервисов ∙
- Управление контейнерами с Portainer ∙
- Финал

01Старт

- Приветствие
- Описание проекта
- Дополнение
- Начало разработки

02Создание и публикация шаблона микросервиса

- Введение в создание шаблона микросервиса
- Создание структуры проекта с уточнением по файлу решения
- Настройка зависимостей
- Настройка Swagger для API документации
- DependencyInjection для API слоя
- DependencyInjection для остальных слоев
- Настройка global usings директив
- Создание GitHub Action workflow для автоматизации
- Публикация пакета шаблона
- Установка созданного шаблона
- Использование шаблона для создания проектов
- Публикация документации на GitHub Pages

03Создание и настройка микросервиса каталога

- Инициализация проекта и создание первого микросервиса каталога
- Настройка портов для микросервиса каталога
- Создание сущностей BaseEntity, Brand, Category, CatalogItem
- Добавление репозитория IBrandRepository
- Добавление репозитория ICategoryRepository
- Добавление репозитория ICatalogItemRepository
- Обновление конфигурации подключения
- Настройка Docker Compose для БД и DBeaver
- Тестовые данные и интеграция библиотеки Marten с PostgreSQL
- Класс для инициализации и наполнения БД тестовыми данными
- Интеграция Marten и инициализация БД в DI контейнер
- Реализация CatalogRepository с методами работы через Marten
- Добавление пакета MediatR в проект
- Запрос, обработчик и ответ для получения списка брендов

04CQRS и MediatR в каталога

- BrandsController для получения брендов через MediatR
- Регистрация MediatR и контроллеров в DI с MapControllers
- Поддержка лицензии MediatR с ключом из конфигурации
- Рефакторинг BrandsController на базовый ApiController
- Исправление возврата результата в BrandsController
- Версионирование API и обновление конфигурации Swagger
- CQRS: запрос для получения категорий с техническим заданием
- CQRS: запрос для получения товаров каталога
- CQRS: запрос для получения товара по ID
- CQRS: запрос для поиска товаров по названию
- CQRS: запрос для получения товаров по бренду
- Создание CatalogItem через CQRS с размышлениями о валидации

05Расширение и Production‑ready

- CQRS: команда для обновления товара
- ТЗ CQRS: команда для удаления товара с техническим заданием
- Универсальная модель пагинации Pagination
- CQRS: запрос для получения товаров с пагинацией v2
- CatalogItemControllerV2 для v2 API с Swagger аннотациями
- Поддержка Swagger: документации и UI для v2 API
- Модель QueryArgs с поддержкой фильтрации, поиска и сортировки
- Рефакторинг для повышения производительности с техническим задан
- XML: документирование для Swagger и описание сортировки
- Конфигурация appsettings.json и Dockerfile
- Production docker - compose
- Weekly и беклог

06Микросервис корзины: CQRS, кэширование и продакшн‑подготовка

- Создание проекта Common.Kernel с интеграцией MediatR
- Базовые интерфейсы CQRS: команд и запросов в Common.Kernel
- Создание микросервиса Basket.API с базовой структурой проекта
- Настройка basket_db для разработки и подключение NuGet—пакетов
- Базовая интеграция Carter, Marten, MediatR и Swagger
- Базовые модели ShoppingCart и ShoppingCartItem
- Реализация ICartRepository и CartRepository с настройкой Marten
- CQRS: команда для сохранения корзины с Mapster и Swagger
- CQRS: запрос для получения корзины
- Кастомный обработчик исключений
- Интеграция FluentValidation
- CQRS: команда для удаления корзины по accountName
- Интеграция Redis кэширования с декоратором и Scrutor
- Конфигурация подключений и Dockerfile для Basket.API
- Production docker — compose
- Weekly и беклог

07Микросервис промоакций на gRPC: CQRS, Dapper, MySQL и продакшн

- Создание микросервиса с базовой структурой проект
- Настройка gRPC reflection и интеграция с БД
- Рефакторинг Program.cs с DependencyInjection и global usings
- Интеграция MediatR для CQRS — паттерна с Common.Kernel
- Настройка MySQL базы данных с Dapper ORM
- Доменная модель Promo для промоакций
- Инфраструктура инициализации БД с тестовыми данными
- Полная инициализация БД с созданием таблицы и заполнением данных
- Замена GreeterService на PromoGrpcService с тестированием
- Реализация получения промоакций для gRPC сервиса
- Реализация создания промоакций для gRPC сервиса
- Полный CQRS: цикл для обновления промоакций с техническим задани
- Конфигурация Mapster для автоматического маппинга proto — моделе
- Полный CQRS: цикл для удаления промоакций + ТЗ ∙
- Dockerfile для контейнеризации Promotion gRPC сервиса ∙
- Production docker: compose для Promotion gRPC с MySQL ∙

08Интеграция промосервиса и корзины

- Интеграция gRPC клиента для получения промоакций в корзине ∙
- Dev-окружение: добавление Promotion gRPC сервиса с MySQL ∙
- Интеграция применения промоскидок ∙
- Рефакторинг SaveCartCommandHandler ∙
- Исправление обработки отсутствующих промоакций + ТЗ ∙
- Production конфигурация ∙
- Логика для инициализации БД ∙
- Weekly и беклог

09Микросервис заказов

- Создание микросервиса с базовой структурой и настройкой БД ∙
- Базовый класс BaseEntity с системой аудита ∙
- Создание доменной модели ∙
- Подключение Entity Framework Core с PostgreSQL ∙
- Настройка DbContext и конфиг маппинга ∙
- Создание тестовых данных и автоматическое заполнение БД ∙
- Автоматические миграции и seed при старте приложения ∙
- Первая миграция InitialCreate и загрузка тестовых данных ∙
- Реализация интерфейсов репозиториев с CQRS разделением ∙
- Базовый репозиторий BaseRepository с CRUD операциями ∙
- Рефакторинг Repository и реализация Repository ∙
- Автоматический аудит в DbContext с перехватом SaveChanges ∙
- Интеграция MediatR и Carter для API организации ∙
- Функционал получения заказов с Mapster маппингом и валидацией ∙
- Исправление ValidationBehavior для поддержки Query — запросов ∙
- Глобальный обработчик исключений и исправление валидации ∙
- Реализация команды создания заказа с DTO и валидацией ∙
- Функционал удаления заказа ∙
- Функционал обновления заказа с частичным обновлением ∙
- Контейнеризация микросервиса Checkout с Docker ∙
- Production docker — compose для Checkout.API с PostgreSQL ∙

10Событийная интеграция с RabbitMQ: MassTransit

- Настройка RabbitMQ в Dev-окружении
- Интеграция MassTransit.RabbitMQ
- Базовые классы событий для межсервисного взаимодействия
- Extension методы для конфигурации MassTransit с RabbitMQ
- Интеграция брокера сообщений и настройка маппинга
- Реализация функционала корзины и публикация событий ∙
- Обработка заказов через RabbitMQ ∙
- Docker инфраструктура для production окружения
- Weekly и беклог

11Инфраструктура

- Построение инфраструктуры ∙
- Структурированное логирование HTTP — запросов ∙
- Централизованная настройка системы логирования ∙
- Конфигурирование Serilog от консоли до файлов ∙
- Логирование gRPC коммуникации ∙
- Централизованное логирование с ELK Stack ∙
- Production — ready ELK инфраструктура ∙
- Нагрузка с k6 ∙
- Мониторинг производительности Prometheus + Grafana ∙
- Библиотека метрик Common.Metrics ∙
- Библиотека метрик Common.Metrics ∙
- Дашборды Grafana для микросервисов ∙
- Управление контейнерами с Portainer ∙
- Финал

Организатор

Автор курса

StepikStepik
Stepik — образовательная платформа и конструктор онлайн-курсов. Мы разрабатываем алгоритмы адаптивного обучения, сотрудничаем с авторами MOOC, помогаем в проведении олимпиад и программ переподготовки. Наша цель — сделать образование открытым и удобным. Stepik — широко известная российская образовательная платформа, основанная в 2013 году. На Stepik зарегистрировано более миллиона пользователей из России и стран СНГ. В настоящее время на Stepik представлены несколько тысяч учебных курсов на самые разные темы.
Подробнее об авторе
Мнения учеников

Отзывы о курсе

Оставьте отзыв

Расскажите о качестве обучения, поддержке и результате. Это поможет другим выбрать организацию осознанно.

Напишите ваш коментарий, не менее 30 символов

Нажимая кнопку, вы даете согласие на обработку персональных данных

Оставьте заявку

Консультант ответит на вопросы о курсе «C#: CQRS, gRPC, RabbitMQ, Grafana. Маркетплейс на микросервисах» и поможет разобраться в деталях обучения.

Комментарий ...

Нажимая кнопку, вы даете согласие на обработку персональных данных

Информация обновлена 7 сентября 2026 г.

Продолжить выбор

Похожие курсы

Kubernetes. Продвинутый уровень. + ИИ-инструменты
−10%13 октября
Kubernetes. Продвинутый уровень. + ИИ-инструменты

Мастерство в архитектуре, сетевых ресурсах, безопасности и GitOps. Практика и теория для экспертов. Курс "Kubernetes - продвинутый уровень" предназначен для специалистов, желающих…

Онлайн7 занятийПродвинутый
Практические занятия
59 900 ₽−10%
53 910 ₽
Сети, связи и системы коммуникаций - курс переподготовки
−17%256 часов
Сети, связи и системы коммуникаций - курс переподготовки

«АПОК» приглашает пройти по сетям, связям и системам коммуникаций профессиональную переподготовку через интернет. Наш учебный центр проводит курсы дистанционно, что позволяет слуш…

Онлайн10 занятий
Текстовые уроки
39 910 ₽−17%
32 980 ₽Скидка до 26 октября
Начать без затрат

Бесплатные курсы

DevOps. Уровень 1. Инфраструктура как код, основные инструменты
Бесплатно
DevOps. Уровень 1. Инфраструктура как код, основные инструменты

Курс «DevOps. Уровень 1. Инфраструктура как код, основные инструменты»: онлайн и очное офлайн обучение в Москве в Бауманском учебном центре «Специалист». Стоимость обучения. Прогр…

Онлайн
Бесплатно