- 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 )
- Клонировать проект в удобное место:
git clone https://github.com/Whitev2/backend-api-example.git
-
Переименовать .env.example в .env:
-
Собрать и запустить контейнеры:
docker-compose build
docker-compose up
- Создать миграции:
docker-compose exec backend_api alembic revision --autogenerate -m "init"
- Обновление базы данных:
docker-compose exec backend_api alembic upgrade head
- Запустить тесты
- В тестах был дабавлен параметр hash - его имитирует uuid
- Транзакции привязыватся к пользователю по uid
- Был исправлен url в тестах assert_balance
- Расширены тесты для проверки одинаковых транзакций - many_transaction
- Dockerfile собирает проект и позволяет развертывать его в k8s
- Чтобы гарантировать транзакцию один раз, достаточно сделать проверку по hash, это реализовано в коде. Еще можно сделать проверка по hash + uid если есть вероятность повторного hash
- Уведомления для других сервисов - отличным решением будет служить брокер сообщений
- Для контроля качества работы сервиса можно обернуть его тестами и при деплое запускать их, если тесты не прошли - деплой будет отклонен. Сохранять аналитические данные и в дальнейшем обрабатывать их с целью выявления аномалий в работе сервиса
- В случае если пользователь попытается вывести сумму больше чем позволяет его баланс - сервис вызовет ошибку BadBalance и вернет 402 код