ТЗ на сервис "Нарезка картинок"

Общее описание

Сервис предназначен для изготовления preview (нарезки картинок)

Архитектура

Сервис представляет собой Web-сервер (прокси), загружающий изображения, нарезающий их до нужного формата и возвращающий пользователю.

Основной обработчик

https://cut-service.com/crop/300/200/www.audubon.org/sites/default/files/a1_1902_16_barred-owl_sandra_rothenberg_kk.jpg <---- микросервис ----><- нарезка -><--------- URL исходного изображения --------------------------------------------->

Сервис должен получить URL исходного изображения, скачать его, нарезать до необходимых размеров и вернуть как HTTP ответ. Важно: необходимо проксировать все заголовки исходного HTTP запроса и заголовки ответа целевого сервиса (www.audubon.org в примере).

Сервис должен сохранить (кешировать) полученное preview на локальном диске и при повторной загрузке. И при повторном запросе отдавать изображение с диска, без запроса к удаленному HTTP серверу. Поскольку размер места для кеширования ограничен, необходимо использовать алгоритм Least-Recent-Used, для удаления редко используемых изображений.

Развертывание

Нужно создать Docker - файл, и загрузить в публичный репозиторий, что бы все могли его использовать. Сервис должен принимать настройку - разрешенный размер LRU кеша.

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

Реализацию алгоритма LRU нужно покрыть Unit-тестами. Для интеграционного тестирования можно использовать контейнер с nginx в качестве удаленного HTTP сервера.

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

параметр значение по умолчанию описание
LOG_LEVEL 4 уровни логирования (logrus)
REST_PORT 8080 порт веб сервера
LRU_CACHE 10 сколько хранить (кешировать) последних файлов
STORE_DIR temp директория, где хранить кешированные изображения