Чему вы научитесь
- Строить сервисы со слоистой архитектурой, вертикальными срезами и чистой архитектурой
- Разделять команды и запросы по CQRS и создавать собственный Dispatcher
- Разрабатывать REST API с пагинацией, фильтрацией, валидацией и обработкой ошибок
- Работать с MongoDB, PostgreSQL и MySQL через Spring Data, JPA и JdbcClient, применять миграции Flyway
- Хранить корзину в JSONB, применять пессимистическую блокировку и разбирать инвалидацию кэша Redis
- Описывать protobuf-контракты и связывать сервисы по gRPC
- Передавать события через Kafka в формате Avro и использовать Schema Registry
- Обрабатывать повторы событий, настраивать повторные попытки и DLT
- Собирать Docker-образы и запускать систему в контурах dev и prod через Docker Compose
- Подключать метрики приложений к Prometheus и настраивать дашборды JVM, HTTP и gRPC в Grafana
- Проверять поведение системы под нагрузкой с помощью k6 и управлять контейнерами через Portainer
О курсе
Практический курс по разработке микросервисов на Java. Проект курса — бэкенд интернет-магазина из четырёх сервисов: каталог товаров, корзина, промоакции и заказы. На одном проекте рассматриваем три архитектуры, работу с разными хранилищами, синхронное и асинхронное взаимодействие сервисов.

Четыре сервиса
- Catalog — каталог товаров. Слоистая архитектура, MongoDB и Spring Data. REST API для товаров, брендов и категорий, пагинация, фильтрация, сортировка, MapStruct и документация API в Swagger UI.
- Basket — корзина покупателя. Вертикальные срезы, PostgreSQL с JSONB, команды и запросы, валидация и обработка ошибок. Потеря обновлений, пессимистическая блокировка, кэш Redis, инвалидация и TTL, переход на Spring Cache.
- Promotion — промоакции и скидки. MySQL, JdbcClient и gRPC API. Protobuf-контракт, получение, создание, удаление и обновление промоакций, серверный интерсептор логирования.
- Checkout — заказы. Чистая архитектура, агрегат заказа, порты и адаптеры. PostgreSQL, JPA-маппинг, миграции Flyway, аудит сущностей, REST API и создание заказа из события Kafka.
Взаимодействие сервисов
При сохранении корзины Basket запрашивает скидки у Promotion по gRPC. При оформлении корзины публикует событие OrderSubmittedEvent в Kafka. Checkout получает событие и создаёт заказ.
- Синхронное взаимодействие микросервисов по gRPC: контракт и генерация кода, сервер и клиент, канал и стаб, обработка ошибок, гонка инициализации канала.
- Асинхронное взаимодействие микросервисов через брокер Kafka: producer и consumer, Avro, Schema Registry, обработка повторного сообщения, повторные попытки и DLT для событий с ошибками.
Запуск и эксплуатация
- Docker Compose: контур разработки с инфраструктурой и контур prod с приложениями в собранных Docker-образах.
- Prometheus и Grafana: сбор метрик Catalog и Promotion, настройка источника данных, загрузка дашбордов из файлов, показатели JVM, HTTP-запросов и gRPC-вызовов.
- k6: сценарии нагрузки на каталог и сохранение корзины, проверки ответов и пороги, сопоставление результатов нагрузки с метриками приложений.
- Portainer: просмотр состояния контейнеров, запуск и остановка, логи и статистика через браузер.
Стек проекта
Java 25, Spring Boot 4.1, Gradle, Spring Data MongoDB, JPA, JdbcClient, Flyway, MapStruct, Bean Validation, Spring Cache, gRPC и protobuf, Spring Kafka, Avro, Schema Registry, Actuator и Micrometer.
MongoDB, PostgreSQL, MySQL, Redis, Kafka, Docker Compose, Prometheus, Grafana, k6 и Portainer.
Для кого этот курс
Начальные требования
- Уверенное знание Java: классы и интерфейсы, дженерики, коллекции, лямбда-выражения.
- Знакомство со Spring Boot: контроллеры, бины и внедрение зависимостей.
- Основы HTTP, REST, JSON и SQL.
- Базовые навыки работы с Git, командной строкой и Docker.
Для практики понадобятся JDK 25, среда разработки, Git и Docker с Docker Compose. Gradle Wrapper входит в проект.
В учебном стенде одновременно работают несколько приложений, базы данных и инфраструктурные сервисы. Компьютер должен позволять запускать такой набор контейнеров.
Как проходит обучение
Код пишется и запускается в видео-скринкастах. Вы повторяете действия в своём проекте: создаёте сервисы, добавляете API и хранилища, связываете их по gRPC и через Kafka, затем подключаете метрики и нагрузку.
К видео подготовлены текстовые лекции с объяснениями, листингами и командами для проверки результата. Исходный код проекта помогает сверить свою реализацию.
После обычных уроков идут задания с одним или несколькими ответами и задания на сопоставление. В курсе есть самостоятельные ТЗ с последующими разборами: категории и товары каталога, удаление корзины, операции с промоакциями, запуск корзины в контейнере и удаление заказа.
В итогах блоков связываем изученные темы и проверяем, как сервисы работают вместе. В финальной части запускаем систему в Docker Compose, создаём нагрузку и наблюдаем метрики в Grafana.
Локальный запуск проекта
Если хотите поднять весь проект у себя локально, воспользуйтесь инструкцией запуска демо проекта на GitHub.
Программа курса
В курс входят
- 111 уроков
- 11часов 32минуты видео
- 300 тестов
- 1 интерактивная задача
Наши преподаватели
Что вы получаете
- Проект бэкенда интернет-магазина из четырёх взаимодействующих микросервисов
- Практику применения трёх архитектур, CQRS, нескольких хранилищ, gRPC и Kafka на одном проекте
- Конфигурации Docker Compose, Prometheus и Grafana, дашборды и сценарии нагрузки k6
- Исходный код проекта, текстовые лекции, самостоятельные задания и их разборы
- Опыт проверки взаимодействия сервисов, обработки повторов сообщений, работы с кэшем и метриками