Данная система предоставляет функции для управления счетами банковских клиентов.
Система предоставляется следующие функции:
- Взаимодействие клиентов и администратора через веб-интерфейс сервиса 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 содержит топик с сообщениями о совершенных операциях со счетами клиентов.
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)