- Получение баланса счета
- Пополнение счета
- Перевод на чужой счет
- Вывод денег
- Аутентификация и авторизация
- Хранение данных
- Банкинг предназначен для работы с большим количеством клиентов, поэтому необходимо обеспечить высокую производительность и отказоустойчивость системы, чтобы она могла обрабатывать большое количество запросов и не падала при повышенной нагрузке. Архитектура системы должна быть подобрана так, чтобы эти моменты учитывались.
- Используйте Git для управления версиями кода.
- Реализуйте обработку ошибок в своем сервисе.
- Ваш код должен соответствовать принципам SOLID и иметь хорошую архитектуру.
- Ваш код должен быть написан на языке программирования Go.
- Кандидат должен оценить задание и установить срок выполнения.
Дополнительное задание:
-
Гарантируется что баланс меняется только в случаях выполнения операций:
Используя эту информацию уменьшите нагрузку на бд при выполнении операции
-
Напишите тесты для своего кода.
-
Реализуйте документацию для вашего API с помощью Swagger.
-
Используйте Docker для запуска вашего сервиса в контейнере.
- Склонировать репозиторий
git clone
- Перейти в папку проекта
cd online_banking
- Запустить проект
docker-compose up --build -d
- Перейти в браузере по адресу
http://localhost:80/swagger/index.html
- Перейти в папку проекта
cd online_banking
- Запустить тесты
go test ./...
- Перейти в браузере по адресу
http://localhost:80/swagger/index.html
- Авторизоваться
Берем access_token из ответа на запрос
POST /api/v1/auth/login
- Вставить токен в поле Authorize
Bearer <token>
-
Выбрать нужный метод
-
Нажать Try it out
-
Вставить данные в поля
-
Нажать Execute
-
Посмотреть результат