Почему мы стали NestJS-разработчиками

08 Июл 2022

Несколько лет мы в KozhinDev разрабатывали бэкенд веб-сервисов на PHP, использовали фреймворк Yii2. Но веб-разработка — динамично меняющаяся область: ее технологии устаревают, на смену им приходят новые. Это произошло и с Yii2, поэтому мы начали присматривать более современную технологию, которая закрыла бы все наши потребности. Так мы обратили внимание на NestJS.

Что такое NestJS и Node.js

NestJS — это современный и развивающийся быстро бэкенд-фреймворк на базе среды Node.js. Node позволяет разработчикам создавать полноценные веб-приложения, выстраивать масштабируемые сетевые сервера. В 2009 году Райан Даль представил Node на ежегодной конференции JSConf. Уже тогда стало ясно, что у технологии большое будущее. Node стал первой устоявшейся средой для выполнения JavaScript-кода на сервере. Технология предлагала асинхронную обработку запросов, а значит — обеспечивала более быструю, бесперебойную работу приложений. С помощью Node можно разрабатывать параллельные многопоточные сервисы, работать с разделяемой памятью.

NestJS вырос на базе другого популярного фреймворка, Express.js, на его развитие также оказал влияние AngularJS. Он подходит для создания эффективной и легко масштабируемой серверной части веб-приложений. NestJS использует статическую типизацию на базе TypeScript, которая обеспечивает надежность и читабельность кода. Для сравнения, PHP — динамически типизированный язык и позволяет описывать данные только через PHPDoc, что сильно улучшает читаемость кода, но все же не содержит всех описательных возможностей TypeScript.

Как мы решили сменить технологию для бэкенда

Когда стало понятно, что пора расти и менять технологический стек, перед нами стал выбор:

  • сменить бэкенд-фреймворк на более современный;
  • сменить язык программирования, например, перейти с PHP на Python;
  • начать писать бэкенд на JavaScript, на котором разрабатываем фронтэнд.

Первые два варианта предполагали большие временные и трудовые затраты, а вот третий показался нам интересным. Наши фронтенд-разработчики используют JavaScript: технологии React, Redux, TypeScript. Для разработки мобильных приложений мы пользуемся React Native.

Поэтому переход на JavaScript-технологию оказался для нас более логичным и быстрым решением. Специалистам не пришлось изучать новый язык с нуля, фронтенд-разработчики получили возможность вырасти до фуллстэков. К тому же, JavaScript сейчас наиболее популярный язык для разработки веб-сервисов и мобильных приложений и развивается быстрее, чем PHP.

Так мы решили перейти на другую платформу для бэкенда: теперь больше используем Node.js и фреймворк NestJS. Тем не менее, с PHP мы все ещё продолжаем работать, и готовы браться за проекты, где требуется этот язык.

Преимущества Node.js + NestJS перед PHP + Yii2

Фреймворк Yii2 сейчас не так актуален, как несколько лет назад. В нем поддерживаются устаревшие на сегодняшний день концепции, например, паттерн Service Locator в качестве контейнера зависимостей или Active Record для связи моделей и базы данных.

Технология NestJS более актуальна и продолжает развиваться благодаря активному сообществу разработчиков. Для заказчика приложение, бэкенд которого написан на JavaScript, будет проще в поддержке: найти специалиста, работающего с этим языком, не так сложно. Благодаря типизации кода с помощью технологии TypeScript, используемой в NestJS, JS-разработчики легко понимают друг друга. Сказать то же об Yii2 сложно: большинство PHP-разработчиков уже перешли на фреймворки Symfony и Laravel.

В сравнении с PHP, язык JavaScript, на котором написан NestJS, имеет больше библиотек и Open Source-решений.

Это значит, что программистам потребуется писать меньше функций с нуля, а значит, процесс создания веб-приложений ускоряется. Для тех заказчиков, кому важно получить продукт и представить его на рынке как можно быстрее, это весомое преимущество.

Дополнительным плюсом в пользу Node.js + NestJS стало и то, что серверная и клиентская часть веб-сервисов теперь пишутся на одном языке. JavaScript — основной язык всех современных браузеров, поэтому фронтэнд разрабатывается с помощью JS-фреймворков.
Использование среды Node.js для бэкенда позволяет лучше координировать действия в команде. В итоге клиенты получают цельное и отлаженное приложение.

NestJS позволяет разрабатывать серверные части приложений на Node.js с меньшими трудозатратами: в него уже включены многие необходимые разработчикам функции. Например — http-модуль, система кэширования. Фреймворк имеет расширяемую модульную архитектуру, которая позволяет собрать приложение из блоков-модулей. Для добавления функций в приложение достаточно подключить новые модули.

Асинхронность обработки запросов в среде Node.js означает, что сервис будет работать быстрее и потребует меньше оперативной памяти для функционирования. Это значит, что связка Node.js и NestJS позволит разрабатывать веб-приложения, которые выдержат highload и повышенную частоту обращений.

NestJS универсален и гибок. С его помощью создаются продукты от простых до очень сложных. Например, он позволяет реализовать микросервисную архитектуру, когда приложение разбивается на отдельные небольшие сервисы. Такой подход очень актуален для cloud-native-сервисов, которые используют преимущества облачных технологий и востребованы среди предпринимателей. Разработка на фреймворке NestJS дает возможность для креативных, нестандартных решений.На выходе клиент получит многофункциональный, и при этом — надежный веб-сервис.

Примеры использования Node.js и NestJS

Node.js используют такие корпорации, как Netflix, Uber, Yahoo, PayPal, eBay, Trello, Twitter, Groupon, LinkedIn и даже NASA. Согласно информации Stack Overflow, Node.js — наиболее популярная технология. В 2021 году он занимал 50,4% рынка.

Портал nodejs.org предоставил подробный отчет о использовании среды. По его данным переход на Node.js

  • на 68% увеличивает продуктивность разработчиков;
  • на 56% снижает затраты на разработку;
  • на 48% повышает производительность приложения.

Примером успешной миграции служит кейс компании Netflix. Потоковый сервис начал набирать популярность в 2015 году, тогда бэкенд создавали на Java. Растущее число пользователей требовало развития сервиса, но разработка бэкенда стала отставать от фронтенда. Из-за этого загрузка контента и данных Netflix стала заметно медленнее. Тогда создатели сервиса решили перейти на Node.js. В результате разрыв между бэкендом и фронтендом был устранен благодаря общему языку JavaScript. Время загрузки интерфейса снизилось на 70% — теперь сервис запускается за одну секунду. Сегодня Netflix — мировой лидер в сфере стриминга фильмов и сериалов.

NestJS тоже заслужил доверие заказчиков. Сервисы с помощью этого фреймворка разрабатывают такие компании, как Adidas, Decathlon, Societe Generale, Autodesk, Roche, Яндекс.Деньги.

Что мы получили в итоге

Теперь в распоряжении KozhinDev появился современный инструмент. На Node.JS + NestJS мы уже разрабатываем некоторые сложные веб-приложения на заказ, которые вскоре покажем в портфолио. Хотим продолжать развиваться в этом направлении, но не отказываемся полностью от PHP+Yii2 — часть сервисов продолжим писать на нем.

Node.js и NestJS позволят разрабатывать интересные проекты, реализовать в сервисах оригинальные, нестандартные функции. И даже при сложной логике надежность и производительность приложения не окажутся под угрозой.

Закажите бесплатную консультацию

Свяжитесь с нами

Наши клиенты и партнеры
  • Российская социальная сеть

  • Крупнейший университет Восточной Сибири, ТОП-25 в РФ

  • Крупная сеть АЗС в Красноярском крае и Хакассии

  • Известный новостной портал Красноярска

  • Крупная компания и партнерская сеть в сфере разработки

  • Федеральный университет в Екатеринбурге, ТОП-10 в РФ

  • Российская Digital‑ассоциация

  • Крупнейшая торговая сеть Восточной Сибири

СвязатьсяСвязаться