Представим что тебе на Code Review принесли тестовое задание для одного из кандидатов на позицию Middle Software Engineer. Необходимо максимально подробно разобрать его и описать все минусы предложенного решения - несоответствие функциональным и не функциональным требованиям, общепринятым подходам и лучшим практикам. Субъективные "придирки" так же приветствуются, не бойся обидеть или задолбать кандидата по мелочам, за исключением каких-то стилистических вещей форматирования кода.
Создать новый проект на NestJS (или чистом NodeJs), который отвечает следующим требованиям:
- Сервис должен принимать HTTP запрос с 2 мя числовыми параметрами: радиус основания цилиндра и высота цилиндра, в ответ отдавать расчет площади.
- Условимся что расчет площади цилиндра производится во внешнем сервисе, с которым мы взаимодействуем по NATS через pub/sub. Этот сервис так же необходимо реализовать в этом проекте, запускаться он должен независимо от основного сервиса.
- Добавить экспорт для Prometheus метрик по обработчику NATS: количество обработанных сообщений, времени обработки каждого сообщения и статусу каждого ответа. Если есть дополнительные метрики, которые на твой взгляд здесь будут полезны, то их так же добавь.
- Добавить возможность динамически изменять уровень логирования (debug / info). Обеспечить, чтобы изменение уровня логирования не приводило к перезагрузке сервиса, а также добавить обработку ошибок при изменении уровня логирования.
- Добавить health check для сервиса.