Skip to content

ega-forever/otus-image-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published