Приложение на Nest.js должно работать аналогично ранее созданному.
В файле Readme.md
должна быть таблица со сравнением производительности Nestjs express
vs Nestjs fastify
- Соответствующий POST-запрос на эндпоинт
/file
позволяет загрузить файл и сохранить его на сервере с приложением плюс 30 баллов - GET-запрос на эндпоинт
/file/:filename
позволяет получить загруженный на сервер файл плюс 30 баллов - Приходящие со стороны клиента DTO валидируются с использованием
ValidationPipeline
плюс 30 баллов
Guards
должны использоваться для работы с авторизацией/аутентификацией плюс 30 баллов- В приложении должны использоваться модули для разбиения структуры приложения на различные части (
User
,Board
,Task
,File
) плюс 30 баллов Exception filters
должны использоваться для обработки исключений в приложении плюс 30 баллов- Для работы с базой данных должна использоваться ORM, совместимая с Nest.js (
@nestjs/typeorm
, Prisma, и т.д.) плюс 30 баллов - Для логирования должен использоваться встроенный
Logger
или кастомная имплементация плюс 30 баллов - Все внешние зависимости для модулей/классов должны предоставляться с помощью механизма
dependency injection
плюс 30 баллов - В зависисимости от переменной окружения
USE_FASTIFY
Nest.js
должен использовать илиexpress
илиfastify
плюс 30 баллов - Необходимо сравнить производительность
Nest.js
с использованиемexpress
иfastify
(можно использовать для этих целей artillery) плюс 30 баллов
- Наличие изменений в тестах либо в workflow минус 200 баллов
- Внесение изменений в репозиторий после дедлайна не считая коммиты, вносящие изменения только в
Readme.md
и другую документацию) минус 30% от максимального балла за задание (для этого задания 99 баллов) - За отсутствие отдельной ветки для разработки минус 20 баллов
- За отсутствие
Pull Request
минус 20 баллов - За неполную информацию в описании
Pull Request
(отсутствует либо некорректен один из 3 обязательных пунктов) минус 10 баллов - За каждую ошибку линтера при запуске
npm run lint
на основе локального конфига минус 10 баллов (именноerrors
, неwarnings
) - За каждый непроходящий тест npm run test:auth минус 20 баллов
- Меньше 3 коммитов (не считая коммиты, вносящие изменения только в
Readme.md
и другую документацию) — минус 20 баллов
- Для проведения load testing берем один модуль нашего приложения и тестриуем все CRUD методы нашего ресурса (какой ресурс вы будете тестировать вы можете выбрать сами). Если для тестируемого эндпоинта необходима авторизация, то необходимо получить токен заранее и передвать его с каждым запросом.
Вот пример репорта, полученного с помощью vegeta
, который вы должны прикрепить в ваш Readme.md
(инструмент для load tesing может использоваться любой)
Requests | [total, rate, throughput] | 65584, 6558.34, 6558.26 |
Duration | [total, attack, wait] | 10s, 10s, 130.149µs |
Latencies | [min, mean, 50, 90, 95, 99, max] | 122.225µs, 151.803µs, 147.911µs, 160.265µs, 164.189µs, 194.74µs, 3.094ms |
Success | [ratio] | 100.00% |
Status Codes | [code:count] | 200:65584 |
Requests | [total, rate, throughput] | 118489, 11848.94, 11848.84 |
Duration | [total, attack, wait] | 10s, 10s, 80.298µs |
Latencies | [min, mean, 50, 90, 95, 99, max] | 63.858µs, 83.763µs, 81.544µs, 88.909µs, 92.922µs, 136.839µs, 8.852ms |
Success | [ratio] | 100.00% |
Status Codes | [code:count] | 200:118489 |