Репозиторий с лабораторным работами по дисциплине "Разработка распределенных систем" в НИУ ВШЭ Пермь.
Тема работы: Разработка системы автоматической генерации тестов для задач по спортивному программированию с учётом настроек пользователя.
В рамках данного курса была выполнена лишь часть заявленной темы. В частности, рассматривалась работа лишь с тестами и задачами.
Всего было 4 лабораторных работ, для каждой из которых был написан отчет (report.md файл). Каждая работа была
выполнена в отдельной ветке.
practice0- CRUD API для одной entity + InMemoryStorage.practice1- БД + UI + CI (сборка + автотесты + линтер).practice2- Разбиение монолита на микросервисы.practice3- Масштабирование компонентов (горизонтальное) + централизованное логирование микросервисов.
В итоге были реализованы 3 микросервиса:
Web-service- основное веб-приложение (UI + API Gateway). Отвечает за управление задачами и тестами (CRUD) + вызывает другие микросервисы (Producer).Export-service- микросервис для экспорта данных (генерация zip-архива для скачивания). Общение с сервисом синхронное, черезHTML.Generator-service- микросервис для генерации тестов (Consumer). Общение асинхронное, черезKafka.
Для горизонтального масштабирования был добавлен njinx, который перехватывал запросы с web-service
на export-service. Был настроен CI с автоматическим тестированием и анализом кода.
Был добавлен ELK для логирования. Написан docker-compose для быстрого развертывания. Использовал миграцию БД.
Были написаны юнит и интеграционные тесты.
- Скачать репозиторий.
- Зайти в командную строку.
- Запустить docker:
docker compose up --build --scale export-service=3. - Пользоваться на: http://localhost:8081/tasks.
Kibanaдоступна на: http://localhost:5601/.- Закрыть docker:
ctrl + c.
Java 21&Gradle.Spring & Spring Boot(web+jpa+validation+test).Lombok+Liquibase+Thymeleaf+Jackson.PostgreSQL+ELK+NJINX+Kafka.Dockerfile&Docker compose;
