Skip to content

Latest commit

 

History

History
47 lines (34 loc) · 3.97 KB

Task.md

File metadata and controls

47 lines (34 loc) · 3.97 KB

При успешном выполнении тестового задания мы будем готовы взять вас на позицию незамедлительно.

Описание

В данном задании вам предлагается реализовать бэкенд для веб-сервиса хранения файлов, аналогичный сервису Яндекс Диск. Обычно взаимодействие с такими сервисами происходит следующим образом:

  1. Пользователь загружает и структурирует файлы в предложенном ему облачном пространстве.
  2. Пользователь может скачивать файлы и фиксировать историю их изменений.

Ваша задача - разработать REST API сервис, который позволяет пользователям загружать и обновлять информацию о файлах и папках.

Технические требования

Реализуйте сервис на Python. Сервис должен удовлетворять следующим требованиям:

  • реализует спецификацию API, описанную в файле openapi.yaml, и корректно отвечает на запросы проверяющей системы
  • некоторые обработчики из них являются необязательными, их реализация позволит вам набрать дополнительное количество баллов
  • сервис должен быть развернут в контейнере на адресе 0.0.0.0:80
  • сервис должен обеспечивать персистентность данных (должен сохранять состояние данных при перезапуске)
  • сервис должен обладать возможностью автоматического перезапуска при рестарте контейнера, в котором работает ваш бэкенд (этого можно достичь настройкой контейнера)
  • после запуска сервиса время ответа сервиса на все методы API не должно превышать 1 секунду
  • время полного старта сервиса не должно превышать 1 минуту
  • импорт и удаление данных не превосходит 1000 элементов в 1 минуту
  • RPS (Request per second) получения истории, недавних изменений и информации об элементе суммарно не превосходит 100 запросов в секунду

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

Для прохождения проверки обратите внимание на следующее:

  • Коды ответа HTTP.
  • Корректность JSON структуры запроса и ответа.
  • Типы данных (строки, числа).
  • Формат даты.
  • Проведение необходмых валидаций входных данных.
  • Краевые случаи.
  • Формат и коды ошибок.

Рекомендуется написать свои тесты для проверки разработанной функциональности.

Развёртывание приложения

Опубликуйте решение на github или gitlab.

+в карму: Добавив CI/CD вы получите дополнительные баллы, можно опубликовать решение на WPS машину с открытым хостом, предварительно добавив систему авторизации.

Контакты для вопросов:

Tg: @gree_s2pac