Skip to content

Whitev2/backend-api-example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Mar 17, 2023
c96f423 · Mar 17, 2023

History

11 Commits
Mar 17, 2023
Mar 17, 2023
Mar 17, 2023
Mar 17, 2023
Mar 17, 2023

Repository files navigation


Typing SVG


Технологии

  • Python 3.8;
  • AioHttp ( Web framework for building client/server APIs );
  • Docker and Docker Compose ( containerization );
  • PostgreSQL ( database );
  • Alembic ( database migrations made easy );
  • Pydantic ( models )

Установка и запуск:

  1. Клонировать проект в удобное место:
git clone https://github.com/Whitev2/backend-api-example.git
  1. Переименовать .env.example в .env:

  2. Собрать и запустить контейнеры:

docker-compose build
docker-compose up
  1. Создать миграции:
docker-compose exec backend_api alembic revision --autogenerate -m "init"
  1. Обновление базы данных:
docker-compose exec backend_api alembic upgrade head
  1. Запустить тесты

Информация:

  • В тестах был дабавлен параметр hash - его имитирует uuid
  • Транзакции привязыватся к пользователю по uid
  • Был исправлен url в тестах assert_balance
  • Расширены тесты для проверки одинаковых транзакций - many_transaction

Дополнительная часть:

  • Dockerfile собирает проект и позволяет развертывать его в k8s
  • Чтобы гарантировать транзакцию один раз, достаточно сделать проверку по hash, это реализовано в коде. Еще можно сделать проверка по hash + uid если есть вероятность повторного hash
  • Уведомления для других сервисов - отличным решением будет служить брокер сообщений
  • Для контроля качества работы сервиса можно обернуть его тестами и при деплое запускать их, если тесты не прошли - деплой будет отклонен. Сохранять аналитические данные и в дальнейшем обрабатывать их с целью выявления аномалий в работе сервиса
  • В случае если пользователь попытается вывести сумму больше чем позволяет его баланс - сервис вызовет ошибку BadBalance и вернет 402 код