При успешном выполнении тестового задания мы будем готовы взять вас на позицию незамедлительно.
В данном задании вам предлагается реализовать бэкенд для веб-сервиса хранения файлов, аналогичный сервису Яндекс Диск. Обычно взаимодействие с такими сервисами происходит следующим образом:
- Пользователь загружает и структурирует файлы в предложенном ему облачном пространстве.
- Пользователь может скачивать файлы и фиксировать историю их изменений.
Ваша задача - разработать 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