Skip to content

Latest commit

 

History

History
52 lines (44 loc) · 6.48 KB

nestjs.md

File metadata and controls

52 lines (44 loc) · 6.48 KB

NestJS

Приложение на Nest.js должно работать аналогично ранее созданному. В файле Readme.md должна быть таблица со сравнением производительности Nestjs express vs Nestjs fastify

Новый функционал

  1. Соответствующий POST-запрос на эндпоинт /file позволяет загрузить файл и сохранить его на сервере с приложением плюс 30 баллов
  2. GET-запрос на эндпоинт /file/:filename позволяет получить загруженный на сервер файл плюс 30 баллов
  3. Приходящие со стороны клиента DTO валидируются с использованием ValidationPipeline плюс 30 баллов

Особенности реализации

  1. Guards должны использоваться для работы с авторизацией/аутентификацией плюс 30 баллов
  2. В приложении должны использоваться модули для разбиения структуры приложения на различные части (User, Board, Task, File) плюс 30 баллов
  3. Exception filters должны использоваться для обработки исключений в приложении плюс 30 баллов
  4. Для работы с базой данных должна использоваться ORM, совместимая с Nest.js (@nestjs/typeorm, Prisma, и т.д.) плюс 30 баллов
  5. Для логирования должен использоваться встроенный Logger или кастомная имплементация плюс 30 баллов
  6. Все внешние зависимости для модулей/классов должны предоставляться с помощью механизма dependency injection плюс 30 баллов
  7. В зависисимости от переменной окружения USE_FASTIFY Nest.js должен использовать или express или fastify плюс 30 баллов
  8. Необходимо сравнить производительность 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 может использоваться любой)

Express

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

Fastify

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