Схема микросервисов
![Структура проекта](/static/images/projects/cloud-structure.jpg)
Программа:
- Назначение и задачи проекта
- Манифест от 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 и рефакторинг
2. Orders Service: формирование заказов
- Назначение, 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: реализация сервиса
- Создание сервиса и DTO
- Разработка слоя REST контроллеров
- Обработка HTTP API ошибок для Spring WebFlux
- Тестирование MenuOrderController
- ДЗ#5 и ДЗ#6
- Контейнеризация приложения
- Кастомизация образов
- Проверка через запросы Postman
- Github Actions. ДЗ#7
3. Review Service
- Назначение, API, инициализация приложения
- Проблема расчета рейтинга блюда. Биномиальное распределение
- Разработка слоя данных
- Миграция Flyway
- Функция расчета рейтинга
- Вызов расчета через механизм триггера. ДЗ#1
- Тестирование слоя данных. ДЗ#2
- Подготовка окружения
- Миграция Flyway
- Разработка сервисного слоя
- Реализация сервисов ReviewService и RatingService. ДЗ#3
- Тестирование сервисного слоя. ДЗ#4
- Разработка слоя REST контроллеров
- Обработка HTTP API ошибок
- OpenAPI документация. ДЗ#5
- Тестирование. ДЗ#6
- Контейнеризация приложения
- Github Actions. ДЗ#7
4. Menu Aggregate Service
- Назначение, API, инициализация приложения
- Реализация DTO
- DTO для Menu Service и Review Service. ДЗ#1
- DTO для Aggregate Service. ДЗ#2
- Реализация клиента для связи с внешними сервисами
- Настройка конфигурации для связи с внешними сервисами
- Реализация Menu Service Client
- Реализация Review Service Client. ДЗ#3
- Добавляем CircuitBreaker
- Тестирование MenuClient и ReviewsClient
- Настройка WireMock. ДЗ#4
- Разработка сервисного слоя
- Реализация аггрегации через неблокирующий AggregateService
- Тестирование сервисного слоя. ДЗ#5
- Разработка слоя REST контроллеров
- OpenAPI документация. ДЗ#6
- Обработка HTTP API ошибок для реактивного стека
- Тестирование. ДЗ#7
- Контейнеризация приложения. ДЗ#8
- Github Actions. ДЗ#9
5. Config Server
6. Интеграция с Kafka часть 1
(паттерн Transactional Outbox)
(паттерн Transactional Outbox)
7. Интеграция с Kafka часть 2
(Kafka Producer, Kafka Consumer). Dispatcher Service
(Kafka Producer, Kafka Consumer). Dispatcher Service
8. Service Discovery (Netflix Eureka)
9. Единая точка входа в приложение Gateway Server
10. Security, Authorization и Authentication (Keycloak)
11. Observability и Monitoring