ТЗ на сервис "Нарезка картинок"
Общее описание
Сервис предназначен для изготовления 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 | директория, где хранить кешированные изображения |