Высокая сложностьВысокий уровень

Тестовое задание по C# от компании СКБ Контур

ImageTransformer
Нужно написать сервис, решающий такую задачу. По HTTP приходит запрос,
содержащий картинку в формате png, координаты прямоугольной области и тип
преобразования. Надо применить к картинке преобразование, вырезать фрагмент,
соответствующий заданной области, и отправить в ответ.

Вопросы по заданию можно задавать здесь:

https://t.me/joinchat/A3Kxg0zr49r5YbnfHpIT0A

Требования к решению

Ожидается, что ваш сервис будет подвергаться большой нагрузке. Поэтому он,
конечно же, должен работать максимально быстро. Чем быстрее обрабатывается
каждый запрос — тем лучше. Чем больше запросов в секунду обрабатывается — тем
лучше.
Но у любой производительности есть предел, и ваш сервис должен быть готов
столкнуться с нагрузкой, превышающей его возможности.

Требования к стабильности под экстремальной нагрузкой:

  1. Если нагрузка превышает возможности сервиса — производительность не
    должна деградировать. То есть, если сервис способен обработать максимум X
    rps, при нагрузке X * 2 rps сервис должен всё ещё обрабатывать не меньше X
    rps. Запросы, до которых очередь дойдет не скоро, можно сразу отклонять с
    ошибкой.

  2. Производительность сервиса не должна деградировать со временем. Если
    сервис круглосуточно работает под нагрузкой без перезапусков, никакие
    ресурсы не должны закончиться и пропускная способность не должна
    уменьшиться.

  3. Клиенты не должны замечать кратковременные задержки в работе сервиса.
    Если случилась пауза из-за GC, или ещё по какой-то причине сервис короткое
    время не обрабатывал запросы, клиенты не должны получить ошибок, если
    пауза действительно была небольшая.
    Известно, что сервис будет запущен на виртуальной машине с 8 GB оперативной
    памяти и 8 ядрами процессора. Операционная система — 64-битная Windows Server

Реализация

Сервис должен представлять собой self-hosted веб-сервер, написанный на C# под
.NET 4.6.2.

Можно использовать вот этот шаблон проекта:

https://github.com/DQKrait/Kontur.ImageTransformer