Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 467новых вакансий за сутки·93 721вакансия открыта сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 267
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 401 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 129
  • Облачные технологии14 088
  • QA вакансии3 457
  • Backend вакансии2 115
  • Инженер данных1 805
  • Продакт-менеджер1 262

Разработка

  • Android1 865
  • iOS1 698
  • Fullstack вакансии989
  • AI вакансии949
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 660
  • Java6 550
  • Node.js2 020
  • .NET1 722
  • Kotlin1 619
  • Rust1 455
  • C#711
  • PHP683
  • C++572

DevOps и инфраструктура

  • Kubernetes7 769
  • DevOps вакансии6 056
  • Linux-инфраструктура5 493
  • Terraform / IaC4 266
  • CI/CD3 250
  • Мониторинг и Observability1 788
  • SRE567
  • Кибербезопасность453

Аналитика и данные

  • Data Scientist1 141
  • Бизнес-аналитик927
  • Аналитик данных854
  • Системный аналитик153

Другие направления

  • Проджект-менеджер616
  • UI/UX дизайн146
  • Ручное тестирование14

По регионам

  • Вакансии в США44 281
  • Вакансии в Европе23 875
  • Вакансии в Канаде4 475
  • Работа в России3 922

По формату

  • Удалённые вакансии75 035
  • Релокация в США44 281
  • Гибридная работа12 401
  • Офисная работа7 079

По уровню

  • Senior вакансии42 679
  • Middle вакансии20 894
  • Junior вакансии6 722

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме NestJSВсе вопросы
NestJSSeniorОпыт

Какие production-риски есть у NestJS: blocking code, connection pooling, config, auth, observability, deploy или graceful shutdown?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Ключевые production-риски NestJS: блокирующий код в event loop, утечки соединений с БД, неверная конфигурация секретов, отсутствие graceful shutdown и слепые зоны в observability (нет tracing).

Blocking code и Event Loop

Node.js однопоточен. Синхронные CPU-тяжёлые операции (парсинг больших JSON, криптография без async, bcrypt с высоким cost factor) блокируют event loop и снижают throughput для всех запросов.

// Плохо: блокирует event loop
@Post('hash')
hashPassword(@Body('password') pwd: string) {
  return bcrypt.hashSync(pwd, 12); // синхронный вызов!
}

// Хорошо: async версия
@Post('hash')
async hashPassword(@Body('password') pwd: string) {
  return bcrypt.hash(pwd, 12); // возвращает Promise
}

Production-риски NestJS-приложений

Connection Pooling

TypeORM по умолчанию создаёт пул из 10 соединений. При высокой нагрузке или медленных запросах пул исчерпывается.

TypeOrmModule.forRoot({
  type: 'postgres',
  extra: {
    max: 20,                    // размер пула
    idleTimeoutMillis: 30000,   // закрывать простаивающие
    connectionTimeoutMillis: 5000,
  },
  keepConnectionAlive: false,   // не держать соединение при тестах
})

Конфигурация и секреты

  • Валидируйте все переменные окружения при старте через Joi или class-validator.
  • Никогда не логируйте process.env целиком — туда попадают JWT_SECRET, DB_PASSWORD.
  • В Kubernetes используйте Secrets, не ConfigMaps для чувствительных данных.

Auth-риски

// Частая ошибка: глобальный guard не покрывает новые маршруты
// Правильно: default-deny через глобальный JwtAuthGuard + @Public() для исключений
@Injectable()
export class JwtAuthGuard extends AuthGuard('jwt') {
  canActivate(context: ExecutionContext) {
    const isPublic = this.reflector.getAllAndOverride<boolean>(
      IS_PUBLIC_KEY,
      [context.getHandler(), context.getClass()],
    );
    if (isPublic) return true;
    return super.canActivate(context);
  }
}

Observability

// Логирование: структурированный JSON для Loki/ELK
import { Logger } from '@nestjs/common';
// Или pino через nestjs-pino
import { LoggerModule } from 'nestjs-pino';

LoggerModule.forRoot({
  pinoHttp: {
    transport: process.env.NODE_ENV !== 'production'
      ? { target: 'pino-pretty' }
      : undefined,
    redact: ['req.headers.authorization'], // скрывать токены
  },
})

Graceful Shutdown

// main.ts
const app = await NestFactory.create(AppModule);
app.enableShutdownHooks(); // включает OnApplicationShutdown

// service.ts
@Injectable()
export class DatabaseService implements OnApplicationShutdown {
  async onApplicationShutdown(signal: string) {
    await this.dataSource.destroy(); // закрыть пул соединений
    console.log(`Shutting down on signal: ${signal}`);
  }
}

// main.ts — перехват SIGTERM
process.on('SIGTERM', () => app.close());

Deploy-риски

  • Health check должен проверять зависимости (БД, Redis) через @nestjs/terminus.
  • Rolling deploy без graceful shutdown дропает in-flight запросы.

Подводные камни

  • Interceptors с tap() из RxJS не перехватывают исключения — используйте catchError() для обработки ошибок внутри interceptor.
  • Memory leaks через незакрытые EventEmitter подписки в onModuleInit без соответствующего onModuleDestroy.
  • Отсутствие rate limiting на публичных эндпоинтах — добавьте @nestjs/throttler даже на MVP.
  • Некорректный порядок middleware: CORS должен стоять до AuthGuard, иначе preflight OPTIONS-запросы возвращают 401.
  • Без helmet() приложение уязвимо к XSS и clickjacking — добавьте как глобальный middleware.
  • Запуск без кластеризации (cluster module или PM2) означает, что один Node.js процесс использует одно ядро; на 8-ядерном сервере 7 ядер простаивают.
  • Необработанные Promise rejections без глобального фильтра могут упасть тихо или крашнуть процесс в зависимости от версии Node.

Частые вопросы на собеседовании

  • Что такое NestJS и каковы его основные принципы проектирования?
  • Какова роль модулей в NestJS? Как работает система модулей?
  • В каких backend-проектах NestJS является сильным выбором, а где лучше выбрать более простой или другой стек?
  • Что такое dependency injection (DI) в NestJS и как он реализован?

Что портит ответ

  • Говорить только о запуске NestJS, но не об эксплуатации
  • Не упоминать observability, обновления, безопасность и rollback
  • Описывать риски абстрактно, без способов их снижать

Что слушает интервьюер

  • Видит production-риски NestJS
  • Говорит про monitoring, rollout, rollback и безопасность
  • Умеет ранжировать риски по вероятности и влиянию

Как вы знаете этот вопрос?

Проверить себя по теме NestJS →
←Предыдущий вопросПроект на NestJS вырос из MVP в большой production-сервис. Какие проблемы архитектуры и сопровождения вы ожидаете увидеть?Следующий вопрос→Каков порядок выполнения middleware, guards, interceptors, pipes и exception filters?

Связанные темы

NestJSproduction-readinesstechnical-communicationtechnology-selectiontrade-off-analysis

Вакансии с этим навыком

  • Fullstack JavaScript разработчик
  • Senior Backend Developer