Необходимо разработать веб-приложение на языке программирования Go, которое предоставляет REST API для обработки изображений.
- Приложение должно поддерживать формат JPEG.
- Реализуйте следующие операции для обработки изображений.
- Поворот изображения на 90 градусов.
- Применение фильтров: черно-белый, негатив.
- Приложение должно обрабатывать минимум 100 запросов в секунду.
- Максимальный размер загружаемого файла ограничен 10 МБ.
- Время ответа сервера на запросы должно быть менее 500 миллисекунд при нагрузке 100 запросов в секунду.
- Изображения могут временно хранится в оперативной памяти или на диске.
- Для простой работы с изображениями разрешается использовать библиотеки. Сами операции желательно реализовать самостоятельно.
- Необходимо написать модульные тесты для основных функций обработки изображений.
- Приложение должно быть готово к деплою на веб-сервер, например, Nginx.
- Разворачиваться приложение должно в контейнере.
- Необходимо реализовать мониторинг производительности приложения, включая метрики времени ответа, количество запросов и использование ресурсов сервера.
- Архитектура приложения должна сопровождаться схемой.
- Для чтения файлов конфигурации можно использовать https://pkg.go.dev/github.com/dvln/viper.
- Для сбора метрик и трейсов можно использовать https://pkg.go.dev/go.opentelemetry.io/otel
- При написании приложения стоит следовать структуре https://github.com/golang-standards/project-layout
- Перед началом написания кода рекомендуется ознакомиться с часто встречающимися замечаниями по коду на Go https://go.dev/wiki/CodeReviewComments.
- Для тестирования утечек горутин в приложениях на Go можно использовать https://github.com/uber-go/goleak.
- Документация по настройке линтеров на Go код https://golangci-lint.run/usage/configuration/