Чему вы научитесь
- Строить сервисы со слоистой архитектурой, вертикальными срезами и чистой архитектурой
- Разделять команды и запросы по 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: классы и интерфейсы, дженерики, коллекции, лямбда-выражения.
- Знакомство со Spring Boot: контроллеры, бины и внедрение зависимостей.
- Основы HTTP, REST, JSON и SQL.
- Базовые навыки работы с Git, командной строкой и Docker.
Для практики понадобятся JDK 25, среда разработки, Git и Docker с Docker Compose. Gradle Wrapper входит в проект.
В учебном стенде одновременно работают несколько приложений, базы данных и инфраструктурные сервисы. Компьютер должен позволять запускать такой набор контейнеров.
Преподаватели курса
Как проходит обучение
Код пишется и запускается в видео-скринкастах. Вы повторяете действия в своём проекте: создаёте сервисы, добавляете API и хранилища, связываете их по gRPC и через Kafka, затем подключаете метрики и нагрузку.
К видео подготовлены текстовые лекции с объяснениями, листингами и командами для проверки результата. Исходный код проекта помогает сверить свою реализацию.
После обычных уроков идут задания с одним или несколькими ответами и задания на сопоставление. В курсе есть самостоятельные ТЗ с последующими разборами: категории и товары каталога, удаление корзины, операции с промоакциями, запуск корзины в контейнере и удаление заказа.
В итогах блоков связываем изученные темы и проверяем, как сервисы работают вместе. В финальной части запускаем систему в Docker Compose, создаём нагрузку и наблюдаем метрики в Grafana.
Локальный запуск проекта
Если хотите поднять весь проект у себя локально, воспользуйтесь инструкцией запуска демо проекта на GitHub.
Что вы получите
- Проект бэкенда интернет-магазина из четырёх взаимодействующих микросервисов
- Практику применения трёх архитектур, CQRS, нескольких хранилищ, gRPC и Kafka на одном проекте
- Конфигурации Docker Compose, Prometheus и Grafana, дашборды и сценарии нагрузки k6
- Исходный код проекта, текстовые лекции, самостоятельные задания и их разборы
- Опыт проверки взаимодействия сервисов, обработки повторов сообщений, работы с кэшем и метриками