Skip to content

RedJabka/baby-billing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published