Skip to content

Latest commit

 

History

History
129 lines (98 loc) · 5.4 KB

README.md

File metadata and controls

129 lines (98 loc) · 5.4 KB

Baby Billing Service

Сервис, эмулирующий работу биллинговой системы.

Инструменты
OpenJDK 17
Maven
Spring + Spring Boot
Spring Cloud
Feign
Liquibase
Kafka
Docker
PostgreSQL
Swagger
Junit5

Запуск проекта через docker:

Перед запуском убедиться, что установлен docker-compose.

docker-compose -f docker-compose.prod.yml up -d

Структура проекта

architecture

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

  • CDR service - сервис генерирующий cdr файлы. Они создаются:
    • случайным образом;
    • параллельно;
    • в хронологическом порядке.
  • BRT service - сервис, получающий файлы cdr и обрабатывающий их. Сначала происходит авторизация абонента, затем посылается запрос в hrs сервис для расчета абонента. После получении ответа от hrs происходит списание денег со счета.
  • HRS service - сервис, производящий расчет абонентов в зависимости от их тарифного плана.
  • Gateway - API сервис для абонентов и менджеров. Сначала производятся аутентификация и авторизация пользователя по логину и паролю через basic auth, затем происходит обработка запроса.
  • Eureka server - discovery сервер для удобного общения между микросервисами.

Ссылки

Запуск проекта локально:

Перед запуском убедиться, что установлен maven, jdk17, работающий broker kafka, а также существуют базы данных и юзеры, описанные в application.yml сервисов.

Для удобной и быстрой работы с kafka и базой данных можно их запустить в докере из папки docker-dev:

docker-compose -f docker-compose.dev.yml up -d

Сборка проекта:

cd ./main
mvn clean install

Далее в разных терминалах из папки main Запуск eureka discovery server:

cd ./eureka-server
java -jar .\target\eureka-server-0.0.1.jar

Запуск генератора cdr:

cd ./cdr-generator-service
java -jar .\target\cdr-generator-service-0.0.1.jar

Запуск hrs-service:

cd ./hrs-service
java -jar .\target\hrs-service-0.0.1.jar

Запуск gateway api:

cd ./gateway
java -jar .\target\gateway-0.0.1.jar

Потом лучше убедиться, что работает hrs сервис и только после этого запустить brt-service:

cd ./brt-service
java -jar .\target\brt-service-0.0.1.jar

Нюансы принятых решений:

Brt сервис лучше запускать после запуска hrs, чтобы синхронизировать пользователей в базе данных. Так как информация о пользователях хранится в brt, а hrs необходимо следить за минутами в ежемесячных тарифах, необходима привязка к абонентам в hrs. Но была добавлена функция, которая, пока не синхронизирует данные с hrs, не запустит работу всего сервиса brt.

В проекте также есть обычный docker-compose.yml для создания образов и загрузки их в Docker Hub. Чтобы это сделать, надо сначала убедиться, что maven и docker установлены, а потом:

cd ./main
mvn clean install
docker-compose build
docker login
docker-compose push