Микросервисы, Docker, Kafka
Spring Cloud, реактивный стек
Материалы курса готовы, идет ревью и оформление. Первые 4 микросервиса готовы для прохождения. Планируемый срок завершения оформления - в течении 2-х месяцев, к ноябрю.
Открыта продажа по ранней цене до 9.09!

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

Открытый Menu Service
?

Cloud
Ранняя продажа!

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

Зарегистрировались:
0
?

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

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

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

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

  1. Spring Boot 3
  2. Docker / Docker Compose
  3. Kafka
  4. Kafka Connect + Debezium Postgres Connector
  5. Avro - сериализация данных для Kafka
  6. Confluent Schema Registry - хранение схем данных для Kafka
  7. Redis - хранение сессий + rate limiting
  8. KeyCloak - сервер автризации и аутентификации
  9. Spring MVC, REST API - веб императивный стек
  10. Project Reactor, Spring WebFlux, REST API - веб реактивный стек
  11. R2DBC - доступ к данным по реактивному драйверу
  12. Postgres - основная БД
  13. Flyway - инструмент миграций БД
  14. Spring Data Jpa / Hibernate - ORM, доступ к данным
  15. Spring Cloud Gateway - единая точка входа в приложение
  16. Spring Cloud Config Server - хранение конфигураций
  17. Spring Cloud Netflix Eureka (Service Discovery) - обнаружение микросервисов
  18. Spring Cloud Resilience4j - rate limiting, circuit breaker, retry
  19. TestContainers - тестирование
  20. WireMock - интеграционное тестирование
  21. MockWebServer (OkHttp) - интеграционное тестирование
  22. Github Actions - простые пайплайны CI
  23. OAuth 2.0 - авторизация
  24. OIDC - аутентификация
  25. Micrometer - инструментация микросервисов, чтобы они могли отдавать метрики
  26. Prometheus - сбор, аггрегация и хранение метрик
  27. Grafana - визуализация трассировок, метрик, логов
  28. Loki - распределенное логирование
  29. Zipkin - распределенные трассировки
  30. Tempo - распределенные трассировки, после Zipkin в образовательных целях
Все технологии, которые не входят в курс стажировки TopJava, в том объеме,
который нужен на курсе, даются с азов
  • Назначение и задачи проекта
  • Манифест от 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
  • Разработка слоя REST-контроллеров
    • OpenAPI документация. ДЗ-2
    • Обработка HTTP API ошибок для реактивного стека
    • Тестирование. ДЗ-3
  • Контейнеризация приложения и Github Actions

Материалы курса готовы, идет ревью и оформление. Планируемый срок завершения оформления - в течении 2-х месяцев, к ноябрю

5. Config Server
6. Интеграция с Kafka часть 1
(паттерн Transactional Outbox)
7. Интеграция с Kafka часть 2
(Kafka Producer, Kafka Consumer). Dispatcher Service
8. Service Discovery (Netflix Eureka)
9. Единая точка входа в приложение Gateway Server
10. Security, Authorization и Authentication (Keycloak)
11. Observability и Monitoring