Node.JS
53

Z podziemia do mainstreamu – krótka historia Node.js

W 2015 roku Netflix zaczął migrację swojej architektury do Node.js. Krok ten pozwolił firmie uprościć rozwój aplikacji, co - jak się okazuje - było jednym z kroków, które obecnie składają się na sukces Netflixa. Coraz więcej dużych firm, a także programistów wybiera Node.js jako technologię do rozwoju swoich produktów. Dlaczego?

Początkowo Node.js był prostym narzędziem tworzonym w “podziemiu”. Miało pomóc w rozwiązaniu niektórych problemów developmentu, jak m. in. skalowalność, szybkość, obsługę I/O (wejścia / wyjścia). Początkowo był głównie wykorzystywany jako tymczasowe narzędzie wspomagające bieżące rozwiązania. Aktualnie Node.js jest obecny w architekturze głównych graczy w branży IT. Wśród nich są między innymi Google, Microsoft, Amazon, Netflix oraz wielu, wielu innych.

Undergroundowe początki Node.js

Zanim zaczniemy pisać o możliwościach narzędzia, powinniśmy wrócić do roku 2009 – czasów, kiedy zostało ono napisane przez Ryana Dahla. Inspiracją Dahla, dzięki której powstało to narzędzie, był… pasek postępu w serwisie Flickr (pro tip: nigdy nie lekceważcie nawet najbardziej błahych elementów otaczającej Was rzeczywistości – nigdy nie wiadomo, skąd przyjdzie inspiracja… ;)).

Obecnie kiedy zaczynamy wysyłać jakiś plik przez interfejsy stron internetowych widzimy pasek postępu, który zazwyczaj informuje nas o czasie, jaki jeszcze pozostał do zakończenia operacji, wielkości pliku czy innych faktach, które w zamyśle twórcy interfejsu powinny być przydatne dla użytkowników.. Dahl jeszcze kilka (prawie kilkanaście!) lat temu niestety nie widział takiej informacji, więc nie wiedział ile jeszcze musi czekać. Ten powszechny problem braku paska postępu spowodował, że Ryan zaczął szukać rozwiązania prostszego, szybszego, bardziej przyjaznego użytkownikom, a przede wszystkim – łatwego w implementacji przez innych programistów.

Z technicznego punktu widzenia Node.js jest środowiskiem uruchomieniowym dla aplikacji. Działa jedno-wątkowo, posiadając nieblokujące wejście/wyjście i możliwość obsługi dużej ilości zapytań. Node.js ma wbudowany silnik V8, który jest tworzony i rozwijany przez giganta z Mountain View – Google. Silnik V8 został napisany w języku C++. Pozwala na kompilację JavaScript do języka maszynowego, a nie bajtowego (który jest interpretowany w czasie rzeczywistym).

Node.JS

W wyniku tego, że nasz bohater operuje na języku JavaScript, daje programistom możliwość tworzenia frontendu oraz backendu właśnie w JavaScript. Należy również wyraźnie zaznaczyć, że Node.js podąża za standardami ECMAScript.

ECMAScript jest ustandaryzowaną specyfikacją, którą implementuje język JavaScript. Instytucją odpowiedzialną za standaryzację języka jest Ecma International. Pierwszy standard został opublikowany w 1997 roku. Największa ewolucja standardu została wprowadzona w wersji szóstej ECMAScript, która została opublikowana w czerwcu 2015 roku. Obecnie mamy 9 wersję, jednakże 7 oraz 8 wersja również wprowadziła pozytywne zmiany.

Z podziemia do mainstreamu – dlaczego Node.js tak zyskuje na popularności?

Jego duża popularność wynika w dużej mierze z faktu, że bardzo duża część programistów którzy tworzą aplikacje internetowe po prostu… zna JavaScript. Drugim dobrym powodem, sprzyjającym rozwojowi Node.js jest standaryzacja. Jak już wspomnieliśmy wyżej, pisanie w tym samym języku (jakim jest JavaScript) frontendu oraz backendu to duże ułatwienie dla twórców. W społeczności otaczającej Node.js powstało do tej pory bardzo dużo frameworków. Niektóre z nich, jak Express.js czy Socket.io są naprawdę dobrze dopracowane i osiągnęły sporą popularność wśród społeczności.

Socket.io jest to serwerowy framework pozwalający na tworzenie aplikacji typu “real-time”. Umożliwia budowę komunikacji w czasie rzeczywistym pomiędzy klientami i serwerami. Działa jako biblioteka po stronie klienta, oraz jako biblioteka Node.js po stronie serwerowej. Umożliwia więc zaprogramowanie aplikacji takich jak czaty, komunikację audio-video lub procesowanie strumieniowe.

Express.js natomiast, o ile możemy tak to ująć, jest zaprojektowany w stylu minimalistycznym. Głównie stosowany do budowy API dla aplikacji webowych oraz mobilnych. Oferuje także wsparcie dla budowy widoków – czyli frontendu. Jest używany do budowy bardziej zaawansowanych rozwiązań, takich jak Keystone.js – platforma CMS (Content Management System – system zarządzania treścią).

Z perspektywy programisty ważne jest również sprawne zarządzanie bibliotekami oraz zależnościami bibliotek w pisanym oprogramowaniu. Node.js zapewnia takie zarządzanie, dostarczając oprogramowanie NPM (Node Package Manager). Dzięki menadżerowi paczek możemy w łatwy sposób znaleźć interesującą nas bibliotekę. Najpopularniejsze paczki to gulp, grunt, czy express. W rejestrach NPM znajdziemy oczywiście również te popularne od strony frontendowej: jQuery, Bootstrap czy też React.

Node.js umożliwia również uruchomienie aplikacji na urządzeniach z procesorami ARM (ARMv6, 7 lub 8), więc generalnie można uruchomić aplikacje napisane w JavaScript na… urządzeniach IoT. Przykładowo może być to popularny Raspberry Pi czy też Edison Development Board.

Node.js – ulubieniec gigantów?

Obecnie wiele dużych firm i korporacji używa Node.js. Są wśród nich tacy giganci, jak Google, Microsoft, Amazon, Netflix ale również GoDaddy, Grupon, PayPal, Uber, czy LinkedIn. Jednym z ciekawszych przykładów firm, które można uznać za prekursorów stosowania Node.js w swojej architekturze, jest Netflix, który w 2015 roku zaczął migrować swoją architekturę do Node.js. Krok ten pozwolił firmie Netflix uprościć rozwój aplikacji, oraz sam development. Pozwolił również na nowe podejście – mianowicie na migrację z architektury monolitu na architekturę mikroserwisów. Dzięki wprowadzeniu Node.js udało się polepszyć wydajność aplikacji, a to z kolei zmniejszyło koszty utrzymania i rozwoju całej infrastruktury.

Amazon także z niego korzysta. Możemy go użyć podczas rozwoju funkcji Lambda. Jest to rozwiązanie w chmurze, które pozwala na budowę aplikacji typu serverless. Podobne rozwiązania obecnie możemy znaleźć także w Google Cloud.

Podsumowując, Node.js umożliwia pisanie aplikacji serwerowych przy użyciu JavaScript. Wykorzystanie C++ jako podstawy do stworzenia Node.js daje nam możliwość zapewnienia odpowiedniego poziomu stabilności oraz szybkości pisanych aplikacji. I końcowo: jako że większość programistów aplikacji internetowych zna w większym lub mniejszym stopniu język JavaScript – wejście w świat Node.js jest stosunkowo łatwe.

Tak wygląda krótka historia głównego bohatera tekstu. Jak wygląda jego przyszłość, co o Node.js myślicie i czy z niego korzystacie? Dajcie nam znać w komentarzach! :)

________________________________

Materiał ekspercki został dostarczony przez firmę Concise Software, polski software – house realizujący projekty dla międzynarodowych partnerów z oddziałami w Rzeszowie oraz Berlinie.

Piotr Pawlak – Blockchain dApps Developer
https://www.linkedin.com/in/ppawlakov/

Concise Software – software house specjalizujący się w rozwiązaniach z zakresu blockchain, Internet of things, automotive, web oraz aplikacjach mobilnych.
Od 11 lat działamy na skalę globalną, ale serce naszego teamu bije niezmiennie w Rzeszowie. Jesteśmy zgranym zespołem inżynierów i projektantów, którzy każdego dnia z pasją pomagają tworzyć swoim partnerom innowacyjny, zintegrowany świat. Wśród nich znajdują się m. in. Jaguar, Red Bull, Panasonic, Delivery Hero, Bosch, Neufund. Nasi inżynierowie należą także do czołówki ekspertów zajmujących się technologią blockchain.