Создать сервис на языке Go, использующий Docker и любую базу данных по выбору. Сервис должен принимать POST-запросы с изображениями в форматах PNG, JPEG и WebP с определённым ключом (например, user_id = 1 ). Сервис должен конвертировать изображение в формат WebP и сгенерировать три версии с уменьшенными разрешениями. Оригинальное, WebP с оригинальным разрешением, и 3 сгенерированных изображения с меньшими разрешениями должны быть загружены на AWS S3 или совместимый облачный сервис (например, DigitalOcean). Все названия файлов, пути и URL-ы должны быть сохранены в базе данных.
- CRUD операции:
- Сервис должен принимать изображения с ключами.
- Сервис должен изменять изображения по ключу.
- Сервис должен возвращать данные.
- Сервис должен возвращать данные для определенного ключа.
- Сервис должен удалять изображения по URL оригинальной картинки.
- Сервис должен удалять по ключу (например, user_id )
Запрос должен возвращать ответ сразу, а конвертация и загрузка должны выполняться асинхронно.
Не принимать изображения размером более 5MB.
Сервис должен быть упакован в Docker.
- Сделать S3 bucket непубличным, но использовать CDN.
- Оптимизация запросов.
- Предоставление временного ключа на облачный сервис, работающего в короткое время (например, в течение дня) и дающего разрешение только на определенные действия в бакете.
- Приложить скриншоты контента бакета и его policy (можно заблюрить)
- Сделать ключи в базе данных (например, user_id ) полиморфными.
- Использовать любую архитектуру на выбор.
- Написать тесты.
- Добавить README.md
- Описание задачи и требований.
- Требования к функциональности (CRUD операции, запросы, валидация).
- Используемые технологии и инструменты (Go, Docker, база данных, S3 или совместимый сервис).
- Дополнительные требования и оптимизации.
- Описание структуры проекта.