
Создание собственного маркетплейса в кризис: выгоды и перспективы
21 Июн 2023
Несколько лет мы в KozhinDev разрабатывали бэкенд веб-сервисов на PHP, использовали фреймворк Yii2. Но веб-разработка — динамично меняющаяся область: ее технологии устаревают, на смену им приходят новые. Это произошло и с Yii2, поэтому мы начали присматривать более современную технологию, которая закрыла бы все наши потребности. Так мы обратили внимание на NestJS.
NestJS — это современный и развивающийся быстро бэкенд-фреймворк на базе среды Node.js. Node позволяет разработчикам создавать полноценные веб-приложения, выстраивать масштабируемые сетевые сервера. В 2009 году Райан Даль представил Node на ежегодной конференции JSConf. Уже тогда стало ясно, что у технологии большое будущее. Node стал первой устоявшейся средой для выполнения JavaScript-кода на сервере. Технология предлагала асинхронную обработку запросов, а значит — обеспечивала более быструю, бесперебойную работу приложений. С помощью Node можно разрабатывать параллельные многопоточные сервисы, работать с разделяемой памятью.
NestJS вырос на базе другого популярного фреймворка, Express.js, на его развитие также оказал влияние AngularJS. Он подходит для создания эффективной и легко масштабируемой серверной части веб-приложений. NestJS использует статическую типизацию на базе TypeScript, которая обеспечивает надежность и читабельность кода. Для сравнения, PHP — динамически типизированный язык и позволяет описывать данные только через PHPDoc, что сильно улучшает читаемость кода, но все же не содержит всех описательных возможностей TypeScript.
Когда стало понятно, что пора расти и менять технологический стек, перед нами стал выбор:
Первые два варианта предполагали большие временные и трудовые затраты, а вот третий показался нам интересным. Наши фронтенд-разработчики используют JavaScript: технологии React, Redux, TypeScript. Для разработки мобильных приложений мы пользуемся React Native.
Поэтому переход на JavaScript-технологию оказался для нас более логичным и быстрым решением. Специалистам не пришлось изучать новый язык с нуля, фронтенд-разработчики получили возможность вырасти до фуллстэков. К тому же, JavaScript сейчас наиболее популярный язык для разработки веб-сервисов и мобильных приложений и развивается быстрее, чем PHP.
Так мы решили перейти на другую платформу для бэкенда: теперь больше используем Node.js и фреймворк NestJS. Тем не менее, с PHP мы все ещё продолжаем работать, и готовы браться за проекты, где требуется этот язык.
Фреймворк 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 используют такие корпорации, как Netflix, Uber, Yahoo, PayPal, eBay, Trello, Twitter, Groupon, LinkedIn и даже NASA. Согласно информации Stack Overflow, Node.js — наиболее популярная технология. В 2021 году он занимал 50,4% рынка.
Портал nodejs.org предоставил подробный отчет о использовании среды. По его данным переход на Node.js
Примером успешной миграции служит кейс компании 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 позволят разрабатывать интересные проекты, реализовать в сервисах оригинальные, нестандартные функции. И даже при сложной логике надежность и производительность приложения не окажутся под угрозой.