maxqfz / tinkoff-task-2019

Tinkoff Test Task for Java Juniors

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Тестовое задание

Реализовать микро-сервисную архитектуру для работы с банковскими счетами пользователя. Только backend. Первый REST сервис - работа с клиентами. Второй REST сервис - для работы со счетами. Третий REST сервис - общий. Описание каждого сервиса ниже.

REST сервис для работы с пользователями (customer-service):

Должны быть доступны следующие операции:

  • добавление клиента (на вход json с данными клиента)
  • удаление клиента (на вход идентификатор клиента)
  • изменение клиента (на вход json с данными клиента)
  • получить клиента по id (на выходе json с данными клиента)
  • получить список всех клиентов (на выходе json с дынными по всем клиентам)

REST сервис для работы со счетами (account-service):

  • создать счёт (на вход id клиента. На выходе номер счёта. Номер счёта должен сгенерироваться и записаться в бд)
  • удалить счет (на вход id счёта)
  • получить счет по id (на вход id счёта)
  • пополнить счет (на вход id или номер счета и количество денег)
  • списать средства со счета (на вход id или номер счета и количество денег)

REST общий сервис (common-service):

  • по идентификатору клиента вывести полную информацию о клиенте (включая его счета) (на вход id клиента. На выходе JSON с информацией о клиенте + информация по его счетам)
  • перевести деньги с одного счета на другой для одного клиента и между клиентами (на вход json c информацией о переводе)

Каждый из сервисов должен представлять собой отдельное приложение, запускаться отдельно, независимо, и, иметь свою базу данных. В качестве СУБД должна использоваться postgres. Для написания самих приложения использовать spring-boot последней версии. В качестве инструмента сборки должны использоваться как maven, так и gradle (например для двух сервисов maven, для третьего gradle). Сервисы должны взаимодействовать между собой только через http протокол.

Методика тестирования:

Для тестирования будет использоваться postman. Сценарии использования:

  1. С помощью customer-service добавить несколько клиентов
  2. С помощью account-service для разных клиентов создать счета
  3. С помощью account-service для разных клиентов пополнить счета для нескольких клиентов
  4. С помощью common-service получить информацию о клиенте и его счетах
  5. С помощью common-service перевести деньги между счетами одного клиента, между счетами разных клиентов
  6. С помощью common-service ещё раз вывести полную информацию о клиентах, убедиться, что у одних деньги списались, у других пополнились

Будет считаться плюсом, но не обязательно:

  • запуск всех системы с помощью docker (docker-compose)
  • unit-тесты
  • валидация входных данных

Результаты выложить на github или другую git-платформу.

About

Tinkoff Test Task for Java Juniors


Languages

Language:Java 100.0%