#вопросы Почему Node.js для backend?
Я из раза в раз получаю один и тот же вопрос, почему все мои курсы фокусируются именно на Node.js и я на всех проектах использую Node.js и Nest? При том, что у меня есть production опыт Go и C#. Чтобы ответить на этот вопрос надо пойти от потребностей бизнеса. Когда мы выбираем стек, мы всегда исходим из:
- Требований к производительности
- Размера команды
- Задач backend
Да, есть задачи, для которых нужны языки, которые направлены на высокую производительность, экономию памяти и низкоуровневую разработку. Тогда можно выбрать Rust, Go, C и прочие языки на которых разрабатываться модули и библиотеки для ОС. Но если говорить про Web разработку, обычно такой потребности нет.
Из требований к производительности будет разве что хороший I/O запросов, с которым Node.js справляется так же как или лучше, чем .NetCore или Go. При этом в экосистеме NPM можно найти пакет для чего угодно, а биндинги на C библиотеки решают проблемы узкоспециализированных задач. Оставим за скобками, что npm большая помойка и с ней надо работать осторожно.
Минусы в безопасности запуска и изоляции итак за нас решили контейнеры, поэтому тут тоже уже нет различия. Потому из всего спектра вопросов остаётся 1 - команда.
Если у вас есть команда, которая круто пишет на Go, пишите на нём, если на Python - на нём. Но есть нужно собрать команду под проект, то Node.js будет лучшим решением. Так как вы получаете экономию за счет того, что один и тот же человек может выполнять как задачи фронта, так и бэка. Да, возможно не так хорошо первое время и вам все равно нужны и те и те сотрудники, но со временем эта грань стирается. Команда, с которой я работал, стала полностью fullstack за 4 месяца. А вот найти fullstack на разных языках почти невозможно. Поэтому экономически выгодно брать Node.js. Не говоря уже о возможности шарить код между фронтом и беком.
Но! Писать на JS Backend нельзя! Так же как нельзя без DI, тестов, архитектуры. Поэтому на помощь и приходит Nest и TypeScript. Да, ваши приложения становятся похожи на громоздкие enterprise приложения на Java или C#, но это и прекрасно. Мы берем все самое лучшее из других фреймворков, которые оттачивались годами, строим правильные архитектуры и получаем код, который можно поддерживать и развивать. Вместо кучи JS файлов с прямыми импортами друг в друга, которые нельзя тестировать и рефакторить, мы получаем качественный бэкенд.
Я из раза в раз получаю один и тот же вопрос, почему все мои курсы фокусируются именно на Node.js и я на всех проектах использую Node.js и Nest? При том, что у меня есть production опыт Go и C#. Чтобы ответить на этот вопрос надо пойти от потребностей бизнеса. Когда мы выбираем стек, мы всегда исходим из:
- Требований к производительности
- Размера команды
- Задач backend
Да, есть задачи, для которых нужны языки, которые направлены на высокую производительность, экономию памяти и низкоуровневую разработку. Тогда можно выбрать Rust, Go, C и прочие языки на которых разрабатываться модули и библиотеки для ОС. Но если говорить про Web разработку, обычно такой потребности нет.
Из требований к производительности будет разве что хороший I/O запросов, с которым Node.js справляется так же как или лучше, чем .NetCore или Go. При этом в экосистеме NPM можно найти пакет для чего угодно, а биндинги на C библиотеки решают проблемы узкоспециализированных задач. Оставим за скобками, что npm большая помойка и с ней надо работать осторожно.
Минусы в безопасности запуска и изоляции итак за нас решили контейнеры, поэтому тут тоже уже нет различия. Потому из всего спектра вопросов остаётся 1 - команда.
Если у вас есть команда, которая круто пишет на Go, пишите на нём, если на Python - на нём. Но есть нужно собрать команду под проект, то Node.js будет лучшим решением. Так как вы получаете экономию за счет того, что один и тот же человек может выполнять как задачи фронта, так и бэка. Да, возможно не так хорошо первое время и вам все равно нужны и те и те сотрудники, но со временем эта грань стирается. Команда, с которой я работал, стала полностью fullstack за 4 месяца. А вот найти fullstack на разных языках почти невозможно. Поэтому экономически выгодно брать Node.js. Не говоря уже о возможности шарить код между фронтом и беком.
Но! Писать на JS Backend нельзя! Так же как нельзя без DI, тестов, архитектуры. Поэтому на помощь и приходит Nest и TypeScript. Да, ваши приложения становятся похожи на громоздкие enterprise приложения на Java или C#, но это и прекрасно. Мы берем все самое лучшее из других фреймворков, которые оттачивались годами, строим правильные архитектуры и получаем код, который можно поддерживать и развивать. Вместо кучи JS файлов с прямыми импортами друг в друга, которые нельзя тестировать и рефакторить, мы получаем качественный бэкенд.