Говорят, что Node.js является самым популярным и любимым инструментом для backend-разработки среди стартапов. В данной статье я бы хотел разобраться, так ли это на самом деле и, если да, то почему.

Node.js обкатан гигантами

Наверняка каждый из нас пользуется, или хотя бы слышал о таких компаниях и продуктах, как PayPal, Uber, LinkedIn, Ebay, Netflix.

PayPal говорит, что на разработку проектов используя Node.js в итоге требовалось в 2 раза меньше времени и приложения оказывались как минимум в 2 раза более производительнее, чем это было с Java. Ну и бонусом оказалось уменьшение на треть количества файлов и строк кода, что конечно же упрощает дальнейшую поддержку информационных систем.

Разработчики Uber отзываются о Node.js как об особенно хорошо подходящей платформе для написания систем, которым необходимо хранить свое состояние в памяти. Они подчеркнули способность Node.js быстро и надежно обрабатывать большие потоки данных, щадящий алгоритм отлова ошибок, не приводящий к падению или перезагрузке приложения, простую доставку нового кода на бой и внушительное open source сообщество, которое постоянно публикует новые разработки и решения.

LinkedIn же в свою очередь искал замену синхронному Ruby on Rails в мобильном приложении и нашел решение в асинхронном Node.js и остался полностью удовлетворенным им.

Ebay остановился на Node.js исходя из своих требований сделать работу своих систем в режиме реального времени, для чего держали живыми клиент-серверные соединения.

Netflix оставил выбор за Node.js за его применимость как в backend-разработке, так и во frontend-разработке.

Быстрая разработка и огромное сообщество

Очевидно, что для каждого стартапа скорость разработки является одним из важнейших факторов успеха.

Слышал, что NPM является самым большим пакетным менеджером среди всех остальных (PHP Composer, Python pip, C# NuGet и даже Java Maven), а это значит, что для большинства задач уже есть готовое решение от сторонних разработчиков. Безусловно здесь есть риски багов, или например по безопасности, но мы говорим о быстрых запусках.

Так же преимуществом будет распространенность языка JavaScript, его даже можно назвать "английским языком" программирования. А это значит, что поиск исполнителей намного упрощается. Достаточно прочитать страниц 10 по особенностям разработки на Node.js и можно пилить.

Плюс есть возможность запилить весь набор приложений из backend, frontend, mobile и даже desktop на одном языке. Знаю таких JavaScript-ниндзя, которые в одиночку делают быстрые MVP например на Express (backend) и React Native (iOS, Android). Можно даже переиспользовать код на фронте и бэке, но по своему опыту говорю, что это обычно ничтожно малая часть и иногда получается больше возни, чем пользы.

Надежность и масштабируемость

Любой опытный разработчик запросто сможет сколотить серверное приложение, которое не будет падать при каждой ошибке и легко его замасштабировать например на 4 процесса, что в теории даст прирост производительности +400%.

Если выкидывается неожиданная ошибка, то просто выпускается событие uncaughtException. Достаточно повесить обработчик с логированием этих ошибок, собирать их, анализировать и устранять.

Готовые инструменты для прототипирования

Два инструмента, которые действительно меня впечатлили своими возможностями это Meteor и strapi.

Meteor является open source платформой, даже экосистемой для web, mobile и desktop разработки, позволяющий конструировать и доставлять JavaScript приложения просто и эффективно. Это реально, по моему субъективному мнению - лучший инструмент для прототипирования и даже запуска первой версии на бой полноценного web приложения. Все благодаря реактивности из коробки и DDP (Distributed Data Protocol) общения клиента и сервера.

Strapi – open source CMS, из которого можно быстро развернуть админку к вашей БД (поддерживаются все популярные) и опубликовать REST API или GraphQL для вашего фронта, не важно веб или мобилка.

Заключение

JavaScript и Node.js впечатляет своим распространением, возможностями, сообществом и поддержкой от таких гигантов IT индустрии, как Microsoft, Google и Facebook. Однозначно эта экосистема будет и дальше развиваться семимильными шагами. А значит будут появляться еще новые инструменты, удобные для быстрого запуска и качественного тестирования гипотез для стартапов.

Ну и напоследок немного статистики:

Самые популярные инструменты среди стартапов на этапах Seed и Early-Stage по версии crunchbase.com

P.S. Наверняка пока я писал этот пост появилось примерно 5 новых JS фреймворков. Старая добрая шутка 😅

Использованные материалы и ссылки

Here Are The Most Popular Web Frameworks With Seed And Early-Stage Startups
If you want to get into web development for an early-stage startup, the logical question to ask is “which framework to learn?”
7 Advantages of Node.js for startups | Relevant
Learn about the biggest advantages and benefits Node.js can provide for your project, especially if you’re a startup. Being easy to learn and having an amazing dev community are some of the main 7 advantages Node.js has to offer. Read the article to learn more.
Top 5 Companies Developing in Node.js and Why | Relevant
Which famous digital companies use Node.js in production? And most importantly, why Netflix and other big players chose Node.js in the first place? Learn these and other things from our article.