2. Галкин
Никита
Люблю и умею:
▰ Node.js, OpenSource, TypeScript, Docker, AWS
▰ Распиливать монолиты на микросервисы
Верю:
▰ Проблем нужно решать на правильном уровне
▰ Сложности в людях, а не технологиях
▰ Идеи и решения надо “продавать”
Доклады:
▰ Spec driven development in Microservices
▰ Использовании TypeScript для Node.js приложений
▰ Best practices of Node.js use in production
▰ Testing in Node.js World
Ссылки:
GitHub Twitter Facebook
2
4. Hard
▰Base FE or Mobile
▰DB
▰Base Linux + DevOps
▰Protocols (HTTP, bin, WS)
▰Utils (git, docker, etc)
▰StackoverflowDD
Требования к Node.js разработчику
Soft
▰English
▰Мотивация учить
технологии
▰Умение работать в
команде
▰Адекватность
4
5. ▰Уровень зарплат аналогичен Java
▰Опыта меньше
▰Часто переходят из Front-end разработки
▰Технологии очень быстро меняются
Факты о Node.js разработчиках
5
13. Теория
▰ Существуют pre<scriptname> и post<scriptname> hooks
▰ Во время postinstall происходит установка и компиляция bin-ой
части вашего приложения
▰ Компиляция и установка являются OS, node version, cpu architecture
зависимыми
▰ [Лайфхак]: Стоит использовать optionalDependencies для OS-
зависимых пакетов.
13
20. ▰UI хочет другую структуру данных
▰Nginx не кэширует эти динамические запросы
▰Node.js использует дешевые сервера
▰Solr использует дорогие сервера. Кэшировать дорого
по железу.
Шаги запроса
20
24. Теория
▰ Node.js однопроцессорна по своей природе
▰ Существует Event Loop
▰ Большое значение Event Loop Delay свидетельствует о плохой
архитектуре кода Node.js приложения
▰ Для самоконтроля стоит использовать модуль blocked или его
аналоги
▰ PM2 показывает Event Loop Delay из коробки
24
35. Как выключать?
35
let server = app.listen(settings.port, () => {
logger.info(`Server started on port ${settings.port}
with pid ${process.pid}`);
});
function stopHandler() {
server.close();
process.exit();
}
process.on("SIGTERM", stopHandler);
37. Теория
▰ Подготовка
▻ Имейте доступ ко всем соединениям
▻ Сохраняйти id таймеров и интервалов
▻ Повести process.on для сигналов и exit
▰ Выключение
▻ Выключите все соединения
▻ Остановите все таймеры и интервалы
▻ Добавьте таймер, если остановка будет слишком долгой 37
41. ▰Npm 4. Shrinkwrap не использовался
▰Зависимость третьего уровня
обновилась, поэтому все перестало
работать
▰С NPM 5 и package-lock.json этого не
случится
В двух словах
41