Репозиторий с лабораторным работами по дисциплине "Разработка распределенных систем" в НИУ ВШЭ Пермь.
Тема работы: Разработка системы автоматической генерации тестов для задач по спортивному программированию с учётом настроек пользователя.
В рамках данного курса была выполнена лишь часть заявленной темы. В частности, рассматривалась работа лишь с тестами и задачами.
Всего было 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
;