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

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

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

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

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

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

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

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

Из переписки:
service discovery
Занятия проходятся индивидуально, по своему графику, материалы курса даются навсегда.
Формат всех занятий анологичен формату открытого первого урока 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 - сервер автризации и аутентификации
    • JWT - JSON Web Tokens
    • OAuth 2.0 - авторизация
    • Защита от CSRF-атак
    • OpenID Connect - аутентификация
  • Логирование и мониторинг
    • Micrometer - инструментация микросервисов для получения метрик
    • Zipkin - распределенные трассировки
    • OpenZipkin Brave - расширение инструментирования Micrometer для Zipkin
    • Tempo - распределенные трассировки, после Zipkin в образовательных целях
    • Prometheus - сбор, аггрегация и хранение метрик
    • Grafana - визуализация трассировок, метрик, логов
    • Loki - распределенное логирование
Схема микросервисов
Структура проекта
  • Назначение и задачи проекта
  • Манифест от 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, сортировка и пагинация
    • Тестирование с помощью OkHttp и Wiremock
    • ДЗ-3.1: добавление тестов
    • ДЗ-3.2: реализация сервиса
  • Разработка слоя REST-контроллеров
    • Подготовка к реализации контроллера
    • Обработка HTTP API ошибок для WebFlux
    • Тестирование через WebTestClient
    • ДЗ-4.1: добавление тестов
    • ДЗ-4.2: реализация контроллера
  • Контейнеризация приложения и GitHub Actions
    • Создание образа
    • Запуск сервисов с помощью docker-compose
    • Тестирование с помощью утиллиты 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 и Review Service Client
    • Resilience4j: добавляем CircuitBreaker и Retry
    • Тестирование
    • ДЗ-1.1: добавление тестов
    • ДЗ-1.2: реализация ReviewsClient
  • Разработка сервисного слоя
  • Разработка слоя 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
    • Регистрируем и проверяем работоспособность коннектора
  • Интеграция 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
    • ДЗ: настраиваем и контейнеризируем Review Service
    • Настраиваем и контейнеризируем Menu Aggregate Service
  • Eureka Server API
  • Обновление Docker Deployment всех микросервисов
  • Основные компоненты и принципы работы
  • Настройка Spring Cloud Gateway
    • ДЗ: интеграция с Config и Eureka серверами
    • Настройка таймаутов
    • Настройка CircuitBreaker
    • Маршрутизация запросов
  • Настройка фильтров по умолчанию
    • Фильтр Retry
    • Фильтр RequestRateLimiter, подключение Redis

  • Основные компоненты и принципы работы
  • Конфигурирование трассировок для Zipkin
    • Настройка трассировок в Gateway Service
    • Настройка трассировок в микросервисах
  • Просмотр трассировок в Zipkin

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

13. Observability и Monitoring