Skip to content

vl4ds4m/banking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

415 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Banking service

Данная система предоставляет функции для управления счетами банковских клиентов.

Возможности

Система предоставляется следующие функции:

  • Взаимодействие клиентов и администратора через веб-интерфейс сервиса web-ui в браузере (или через REST API сервиса accounts с правами администратора).
  • Создание аккаунтов клиентов.
  • Создание и просмотр счетов у клиента для определенной валюты.
  • Пополнение и списание денег со счета.
  • Перевод средств между счетами одного клиента и между счетами клиентов с конвертацией валюты.

Архитектура

Данная система имеет микросервисную архитектуру и состоит из следующих сервисов:

  • Сервис web-ui предоставляет графический интерфейс к системе через браузер.
  • Сервис accounts выполняет запросы по обработке счетов и аккаунтов клиентов (создание аккаунта и счетов, получение баланса аккаунта и счета, пополнение счетов, снятие денег, перевод средств между счетами).
  • Сервис converter выполняет конвертацию валюты по запросам от accounts, которые осуществляются по gRPC или REST (зависит от настроек клиента).
  • Сервис rates выдает актуальный курс валют для converter по gRPC.
  • Сервис keycloak авторизует запросы между сервисами и аутентифицирует пользователей через web-интерфейс web-ui.
  • Сервис transactions получает сообщения об операциях со счетами от Kafka и сохраняет информацию в MongoDB.
  • RDBMS (Postgresql) хранит данные о клиентах.
  • Redis выполняет функцию поддержания идемпотентности запросов изменения счетов клиентов.
  • MongoDB хранит информацию о совершенных операциях со счетами клиентов (перевод, пополнение, списание средств).
  • Kafka содержит топик с сообщениями о совершенных операциях со счетами клиентов.

Components structure

API внутренних сервисов (accounts, converter, rates) описан в формате OpenAPI и gRPC (для сервиса converter), спецификация находится в папке api.

Запуск

Запустить систему на локальном компьютере можно через docker compose, предварительно собрав проект.

mvn clean install

cd test/docker
docker compose up -d

NOTE: для сервисов пока не настроены healthcheck'и, поэтому может понадобиться перезапуск упавших сервисов.

Затем необходимо добавить в файл hosts запись 127.0.0.1 banking.local и перейти на http://banking.local/.

Зарегистрированные пользователи

  • Клиенты: ivanovp, jsmithy, tt_goat (у всех пароль 1234)
  • Администратор: plodg (пароль pl0d6)

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors