Сервис для мониторинга текущего курса обмена

Сделал Ananev Nikita

Решение второй тестовой задачи от BWG, согласно техническому заданию

Использование

Intro

Конфигурация состоит из proxy, RabbitMQ, API service, exchange monitor service. API определён как 4 реплики. Поставлены ограничения на использования ресурсов исходя из нагрузочного тестирования

Переменное окружение

Воспользуйтесь dotenv (для Docker .env.docker), либо средства Докер для указания переменных

  • RABBITMQ_URI — RabbitMQ's connection string
  • APP_URI — Application uri for testing
  • BINANCE_API_KEY & BINANCE_API_SECRET — Auth for Binance

Docker Compose

Скопируйте .env.example в .env.docker и заполните его.

docker compose up -d  # Equal "make up" 

Техническое описание

Архитектура

Архитектура придерживается методологии чистой архитектуры. Внешние взаимодействия описаны в адаптерах. Бизнес логика описана в модулях, а именно в первом и втором.

Библиотеки

Библиотеки для разработки
  • mypy — проверка типов
  • black — форматер кода
  • pylint — линтинг кода
  • isort — сортировщик импортов
  • locust — нагрузочное тестирование

Тестирование

Нагрузочное тут

Code quality

Команда: make pretty

Pylint

>> pylint src
--------------------------------------------------------------------
Your code has been rated at 9.63/10 (previous run: 10.00/10, +0.0)

Black

>> black src
All done! ✨ 🍰 ✨
43 files left unchanged.

Mypy

>> mypy src
Success: no issues found in 43 source files