/digital_league

Test assignment for Digital League company

Primary LanguagePython

Тестовое задание для компании Лига Цифровой Экономики

Задача:
Вам предоставляется OpenAPI спецификация для эндпоинтов системы статистики и аналитики данных о работе рекламной сети. Ваша задача - создать Docker Compose конфигурацию и связанные сервисы для развертывания этих эндпоинтов.

Формат решения:
Ваше решение должно предоставлять docker compose файл и все необходимые артефакты. Напишите инструкцию по развертыванию и запуску. Выложите ваше решение на GitHub или GitLab в открытый репозиторий.

Быстрый отклик и эффективная обработка данных:
Разработанное вами решение должно обеспечить быстрый отклик и эффективную обработку больших объемов данных.

Документация:
Помимо инструкции по развертыванию и запуску предоставьте краткую документацию к вашему решению (в репозитории). Если у вас есть дополнительные идеи или рекомендации по оптимизации системы или улучшению производительности, внесите их в документацию.

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

git clone https://github.com/cptfanerka/digital_league.git
cd digital_league
docker compose build
docker compose up -d

Работоспособность можно проверить по адресу http://localhost:8000/docs

Документация к решению

  1. Согласно OpenAPI спецификации, были созданы два FastAPI эндпоинта. В ходе разработки использовались возможности Pydantic для проверки типов данных и валидации.
  2. Решение упаковано в Docker Compose.
  3. Структура проекта создана с учетом удобства его дальнейшего развития.

Комментарии

Задание содержит требование к системе в виде быстрого отклика и эффективной обработки больших объемов данных. В рамках тестового задания я не стала добавлять сервис, который мог бы продемонстрировать выполнение этого требования, но вот что я предприняла бы, будь у меня база данных с большим количеством данных:

  1. Оптимизировала бы код для уменьшения сложности алгоритмов.
  2. Использовала бы асинхронный код и асинхронные запросы FastAPI.
  3. Создавала бы индексы в базе данных для ускорения запросов.
  4. Оптимизировала бы медленные запросы к базе.
  5. Использовала бы кэширование для часто запрашиваемых данных.

Я перечислила общие идеи, которыми я могла бы воспользоваться, но в целом решение подобной задачи зависит от конкретной ситуации и проблемы.