Skip to content

Latest commit

 

History

History
47 lines (40 loc) · 5.68 KB

nestjs.md

File metadata and controls

47 lines (40 loc) · 5.68 KB

NestJS

Приложение на Nestjs должно работать аналогично приложению, которое было создано с помощью express. В файле readme.md должна быть таблица со сравнением производительности Nestjs express vs Nestjs fastify

Реализация

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

Штрафы:

  • Наличие изменений в тестах либо в workflow минус 200 баллов
  • Внесение изменений в репозиторий после дедлайна не считая коммиты, вносящие изменения только в Readme.md и другую документацию) минус 30% от максимального балла за задание (для этого задания 72 балла)
  • За отсутствие отдельной ветки для разработки -20 баллов
  • За отсутствие Pull Request -20 баллов
  • За неполную информацию в описании Pull Request (отсутствует либо некорректен один из 3 обязательных пунктов) -10 баллов
  • За каждую ошибку линтера при запуске npm run lint на основе локального конфига -5 баллов (именно errors, не warnings)
  • За каждый непроходящий тест npm run test:auth -20 баллов
  • Меньше 3 коммитов (не считая коммиты, вносящие изменения только в Readme.md и другую документацию) — -20 баллов

Подсказки

  • Для проведения load testing берем один модуль нашего приложения и тестриуем все CRUD методы нашего ресурса (какой ресурс вы будете тестировать вы можете выбрать сами). Если для тестируемого ендпоинта необходима авторизация, то необходимо получить токен заранее и передвать его с каждым запросом.

Вот пример репорта, полученного с помощью vegeta, который вы должны прикрепить в ваш readme.md (тулза для lead 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