Микросервисы, Docker, Kafka
Spring Cloud, реактивный стек
Стоимость до завершения
оформления курса: 24950 19850 руб.

Практика: разработка бэкенд для сервиса заказов еды на вынос на микросервисной архитектуре

Материалы курса готовы, завершается оформление занятий.
БОльшая часть курса готова для прохождения
Открытый Menu Service
?

Cloud
Специальная цена!

Микросервисы, Docker, Kafka
Spring Cloud, реактивный стек

Участников:
0
?

Docker. Микросервисы. Kafka. Реактивный стек. Spring Cloud.

Практика: разработка бэкенд для сервиса заказов еды на вынос на микросервисной архитектуре

Занятия проходятся индивидуально, по своему графику, материалы курса даются навсегда.
Формат всех занятий анологичен формату открытого первого урока Menu Service:
  • Краткая теория, достаточная для понимания кода, с ресурсами на глубокое погружение
  • Практика: репозиторий с кодом микросервиса и патчами
  • Практика: домашние задания для самостоятельного выполнения с разбором решения (без проверки)
  • Группа поддержки в telegram по всем занятиям курса
Время прохождения курса зависит от вашего опыта и глубины погружения:
от нескольких недель до нескольких месяцев
Схема микросервисов
Структура проекта

Список используемых технологий:

  • Основной функционал:
    • Spring Boot 3
    • Spring MVC, REST API - веб императивный стек
    • Project Reactor, Spring WebFlux, REST API - веб реактивный стек
  • Хранение и работа с данными
    • Postgres - основная БД
    • Spring Data Jpa / Hibernate - ORM, доступ к данным
    • Flyway - инструмент миграций БД
    • R2DBC - доступ к данным по реактивному драйверу
    • Redis - хранение сессий + rate limiting
  • Инструменты Kafka
    • Kafka - распределенное хранилище данных
    • Kafka Connect + Debezium Postgres Connector
    • Avro - сериализация данных для Kafka
    • Confluent Schema Registry - хранение схем данных для Kafka
  • Стек Spring Cloud
    • Spring Cloud Resilience4j - rate limiting, circuit breaker, retry
    • Spring Cloud Config Server - хранение конфигураций
    • Spring Cloud Netflix Eureka (Service Discovery) - обнаружение микросервисов
    • Spring Cloud Gateway - единая точка входа в приложение
  • Тестирование
    • TestContainers - тестирование с помощью контейнеров Docker
    • WireMock - интеграционное тестирование, имитации реального API
    • MockWebServer (OkHttp) - интеграционное тестирование HTTP запросов
    • Awaitility - тестирования асинхронных операций
  • Сборка, развертывание, управление
    • Gradle - сборка ПО
    • Docker / Docker Compose - контейнеризация приложений
    • Github Actions - простые пайплайны CI
  • Аутентификация и авторизация
    • KeyCloak - сервер автризации и аутентификации
    • OAuth 2.0 - авторизация
    • OIDC - аутентификация
  • Логирование и мониторинг
    • Micrometer - инструментация микросервисов для получения метрик
    • Prometheus - сбор, аггрегация и хранение метрик
    • Grafana - визуализация трассировок, метрик, логов
    • Loki - распределенное логирование
    • Zipkin - распределенные трассировки
    • Tempo - распределенные трассировки, после Zipkin в образовательных целях
  • Назначение и задачи проекта
  • Манифест от Heroku “12-факторное приложение
  • Паттерны проектирования микросервисной архитектуры
  • Схема и стек приложения
  • Назначение и API микросервисов
  • Работа с проектом
  • Работа с Gradle
  • Установка Docker
  • Инициализация приложения
  • Разработка слоя данных (открытый урок)
    • Миграция DB c Flyway
    • JPA-модель данных
    • ДЗ-1: создание JPA-модели
    • Создание репозитория
    • Тестирование
    • ДЗ-2.1: добавление тестов
    • ДЗ-2.2: реализация кастом-репозитория, используя Criteria API
    • Подготовка окружения. Docker Compose
    • Конфигурация и запуск приложения
  • Разработка сервисного слоя
    • Создание сервиса и DTO
    • Тестирование
    • ДЗ-3.1: добавление тестов
    • ДЗ-3.2: реализация сервиса
  • Разработка слоя REST-контроллеров
    • ДЗ-4: реализация контроллера
    • Валидация
    • Обработка HTTP API ошибок
    • OpenAPI документация
    • Тестирование через WebTestClient
    • ДЗ-5: добавление тестов
    • Кэширование Spring-контекста
  • Контейнеризация приложения
    • Создание образа через Dockerfile
    • Запуск образа приложения
    • Volumes. Подключение к контейнеру
    • Контейнеризация через Gradle и Cloud Native Buildpacks
  • Github Actions и рефакторинг
    • Github Actions
    • Дополнение API и рефакторинг
  • Назначение, API, инициализация приложения
    • Реактивный стек (Spring WebFlux/Project Reactor, R2DBC)
  • Разработка слоя данных
    • Миграция DB c Flyway
    • ДЗ-1: создание JPA-модели и репозитория
    • Тестирование
    • ДЗ-2: добавление тестов
    • Подготовка Docker/Docker Compose окружения
  • Разработка сервисного слоя
    • Создание сервиса и DTO
      • Реализация неблокирующего MenuClient
      • Сортировка и пагинация
    • Тестирование
      • Тестирование MenuClient, используя OkHttp MockWebServer
      • Выносим инициализацию тестовой базы в BaseTest
      • Выносим работу с Wiremock в BaseIntegrationTest
      • Тестирование MenuOrderService
    • ДЗ-3.1: добавление тестов
    • ДЗ-3.2: реализация сервиса
  • Разработка слоя REST-контроллеров
    • Подготовка к реализации контроллера
    • Обработка HTTP API ошибок для WebFlux
    • Тестирование через WebTestClient
    • ДЗ-4.1: добавление тестов
    • ДЗ-4.2: реализация контроллера
  • Контейнеризация приложения и GitHub Actions
    • Создание образа
    • Запуск сервисов с помощью docker-compose
    • Тестирование с помощью утиллиты curl и Postman
      • Выполнение запросов через curl
      • Выполнение запросов через Postman
    • GitHub Actions
  • Назначение, API, инициализация приложения
    • Проблема расчета рейтинга блюда. Биномиальное распределение
  • Разработка слоя данных
    • Миграция DB c Flyway. Функции и триггеры в Postgres
    • ДЗ-1: создание JPA-модели
    • Создание репозиториев и тестирование
    • ДЗ-2.1: добавление тестов
    • ДЗ-2.2: реализация RatingRepository через JPQL и нативный SQL
    • Подготовка Docker/Docker Compose окружения
  • Разработка сервисного слоя
    • Создание интерфейсов, маппера, DTO
    • Тестирование
    • ДЗ-3.1: добавление тестов
    • ДЗ-3.2: реализация сервисов
  • Разработка слоя REST-контроллеров
    • Подготовка к реализации контроллера
    • Тестирование через WebTestClient
    • ДЗ-4.1: добавление тестов
    • ДЗ-4.2: реализация контроллера
  • Контейнеризация приложения и GitHub Actions
    • Создание образа
    • Запуск сервисов с помощью docker-compose
    • Тестирование через Postman
    • GitHub Actions
  • Назначение, API, инициализация приложения
  • Подготовка DTO
  • Реализация клиента для связи с внешними сервисами
    • Конфигурирование и общая логика
    • Реализация клиентов
      • Реализация Menu Service Client
      • Заготовка для Review Service Client
    • Resilience4j: добавляем CircuitBreaker и Retry
      • CircuitBreaker
      • Retry
    • Тестирование
    • ДЗ-1.1: добавление тестов
    • ДЗ-1.2: реализация ReviewsClient
  • Разработка сервисного слоя
    • Реализация AggregateService
      • Реализация getMenuAggregateInfo
      • Реализация getMenusWithRatings
  • Разработка слоя REST-контроллеров
    • Подготовка к реализации контроллера
    • Обработка HTTP API ошибок для WebFlux
    • Тестирование MenuAggregateController
    • ДЗ-3.1: добавление тестов
    • ДЗ-3.2: реализация контроллера
  • Контейнеризация приложения и GitHub Actions
    • ДЗ-4: Создание образа и тестирование через Postman
    • GitHub Actions
  • Spring Cloud Config
    • Spring Environment
    • Spring Cloud Config
    • Config Server Git-репозиторий
  • Развертываем Spring Cloud Config Server
    • Микросервис Config Server
    • Собираем образ Docker
  • Настраиваем Spring Cloud Config Client в микросервисах
    • Конфигурируем Menu Service
    • Контейнеризируем Menu Service для prod-среды
    • Домашнее задание: добавляем Config Client к остальным микросервисам
  • Общая информация по Apache Kafka
    • Кластер с брокерами сообщений
    • Топики, партиции и репликация данных
    • Консьюмеры
    • Продъюсеры
    • Управление кластерной конфигурацией
    • Дополнительные материалы
  • Transactional Outbox: используемые технологии
    • Kafka Connect
    • Debezium Postgres Connector
    • Сериализация / десериализация. Avro
    • Confluent Schema Registry
  • Transactional Outbox: реализация
    • Схема взаимодействия
    • Запуск Postgres в одном контейнере
    • Контейнеры для Kafka, Confluent Schema Registry, Kafka Connect
    • Сохранение в таблице Outbox
    • Настройки Debezium Postgres Connector
    • Регистрируем и проверяем работоспособность коннектора
  • Сериализация через Apache Avro
    • Спецификация схем Avro
    • Создаем схемы Avro и генерируем классы
  • Интеграция Dispatcher Service и Kafka (урок для ознакомления)
    • Настраиваем Kafka Producer
    • Настраиваем Kafka Consumer
    • Тестируем интеграцию с Kafka
  • Config Server, Контейнеризация, GitHub Actions
    • Интеграция с Config Server
    • Контейнеризация приложения и GitHub Actions
  • Интеграция Orders Service и Kafka
    • Обновляем зависимости, подготавливаем ДЗ
    • Тестируем интеграцию с Kafka
    • ДЗ: реализация интеграции с Kafka
    • Обновляем конфигурации для Config Server и Docker Compose
  • Docker Deployment всех микросервисов

В процессе оформления:

  • Развертываем Eureka Server
    • Микросервис Discovery Service (Netflix Eureka)
    • ДЗ: интеграция с Config Server
  • Настраиваем Eureka Client в микросервисах
    • Конфигурируем Menu Service
    • Контейнеризируем Menu Service
    • Настраиваем Orders Service

10. Единая точка входа в приложение Gateway Service

11. Security, Authorization и Authentication (Keycloak)

12. Observability и Monitoring