9.10.2015

Node.js kasvaa vauhdilla full-stack alustaksi

Viimeisten vuosien aikana Node.js on kasvattanut suosiotaan merkittävästi, Google Trends -palvelun mukaan Node.js -haut ovat ohittaneet Ruby on Rails -haut vuonna 2013. Noden suosioon vaikuttaa moni asia.

1. Sama kieli front-end ja back-end kehityksessä

Front-end koodaajien ja back-end koodajien ero on osaamisalueessa. Back-end koodaaja keskittyy enemmän järjestelmän rakentamiseen ja front-end koodaajaa taas käyttöliittymäsovelluksen koodaukseen. Mutta suurin ero on ollut tähän mennessä ohjelmointikieli ja -ympäristö. Node.js:n avulla voidaan käyttää samaa kieltä, eli JavaScriptiä, molemmilla puolin. Tämä mahdollistaa huomattavasti helpommin ns. full-stack kehityksen, jossa sama kehittäjä voi tehdä sekä fronttiin että backiin halutun ominaisuuden.

Node.js on myös neutraali valinta. Ohjelmointikielissä on leiriytymistä esimerkiksi Java-  ja .Net -piirien välillä. Node onkin ikäänkuin ohjelmointikielien Sveitsi, joka hyväksytään molemmilla puolilla. Nodea on myös helppo pyörittää niin Unixilla kuin Windowsilla

Nopeutta verkkopalveluiden kehitykseen Node.js alustalla

.

2. Node.js on vakiinnuttanut asemansa enterprise alustana

Node.js on enterprise -tason järjestelmä, johon luottavat mm. IBM, Amazon, PayPal, Netflix, Walmart, Microsoft, Oracle ja eBay vain muutamia mainitakseni. Node -projekti siirtyi 2015 Linux -säätiön hallinnoinnin alle. Erityisesti IBM:n aiemmat panostukset, yhdessä sen kanssa että IBM osti Nodeen erikoistuneen Strongloopin, tuo Nodelle vahvan pohjan enterprise -markkinaan.

3. Node mahdollistaa isomorfiset sovellukset

Teknologiakehitystä aktiivisesti seuraavat ovat jo muutaman vuoden saaneet kuulla kovaa hypetystä siitä, että web-sovellusten tulevaisuus on ns. isomorfinen JavaScript-kehitys. Tämä Airbnb:n popularisoima konsepti tarkoittaa karkeasti sitä, että samaa koodia voidaan ajaa sekä palvelin- että client-puolella. Se mahdollistaa esimerkiksi sen, että  ensimmäinen sivu tulee palvelimen generoimana, kun perus single-page app -mallissa käyttäjä joutuu odottamaan kun usein isokokoinen JavaScript-sovellus latautuu ja vasta sitten generoi sivun käyttäjälle.

Laitoimme ”all-in” Node.js teknologiaan

Lähdimme kokeilemaan Nodea 2013 sillä idealla, että se sopii täydellisesti web-kehittäjän Front-end palvelimeksi ja selkeyttää sekä nopeuttaa kehitystä huomattavasti. Kokeilu oli menestys ja kehittämällämme Node-pohjaisella teknologia-stackilla tehtiin mm. Alma Medialle Meedio-palvelu, Visman MyStaff -hybridisovellukset sekä Wall of Sport -urheilupalvelu.

Omista ja muiden hyvien kokemusten pohjalta päätimme laajentaa stackia myös back-end kehitykseen ja nyt tarjoamme full-stack JavaScript -kehitystä erilaisten räätälöityjen verkkopalveluiden toteutukseen. JavaScript sopii hyvin myös toisen pääfokusalueemme, WordPressin, kanssa yhteen, koska WordPress osaajamme ovat pääsääntöisesti myös loistavia JavaScript-koodareita. Näin voimme laajentaa osaamispooliamme ja kehittäjät saavat vaihtelua tekemällä välillä Node.js- ja välillä WordPress-projekteja.

Tämä ei tarkoita, ettemmekö edelleen jatka muiden tekniikoiden käyttämistä, kuten Groovy/Grails/Java, silloin kun se on perusteltua, mutta koska pienen firman on hyvä erikoistua, tämä on meidän tiemme nyt. Tämän lisäksi tarjoamme myös natiivikehitystä iOS-, Android- ja Windows Phone-alustoille.

Oikeanlaista teknologiapinoa metsästämässä

Ensimmäinen front-end Node-stackimme perustui vahvasti Linked-In ylläpitämään Dust.js template -kieleen. Tämän lisäksi se perustui myös Gulp task runneriin, jonka avulla voidaan nopeasti generoida esimerkiksi kerralla SVG-pohjaisista kuvista kaikki ikonit lukuisille eri resoluutioille, joita tarvitaan esimerkiksi mobiilisovelluksissa tukemaan eri resoluution näyttöjä.

Sopivan MVC-kehyksen valinta palvelinpäähän oli seuraavaksi edessä. Vaihtoehtoina oli Express.js ,jolla teimme mm. Huvi.info -palvelun, Kraken.js, jota olimme jo useammassa projektissa forkanneet ja jolla tehtiin mm. Wall of Sports, Deployd joka on Strongloopin kehittäjien aiempi kehys, Sails.js joka on hieman Ruby on Rails -tyylinen kehys sekä Strongloopin LoopBack. Express on monessa kehyksessä mukana, mutta halusimme jotain hieman rakenteellisempaa kuin pelkkä vanilla Express. Loppusuoralle päätyi lopulta Deployd ja Sails.js, joista Sails voitti sen laajan suosion ja aktiivisen yhteisön vuoksi.

Node.js ja Sails.js nopeuttaa verkkopalveluiden kehitystä

Fronttipuolella päädyimme lopulta luopumaan pitkään käytössä olleesta Dust.js template-kielestä ja valinta oli Facebookin kehittämä ja kovaa hypeä nauttiva React.js sen isomorfisen tuen ja yksinkertaisuuden vuoksi (esim. vrt Angular.js). Reactin haaste on vielä se, että mitään kovin standardia kokoonpanosuositusta ei ole. Netistä löytyy kymmeniä ellei satoja erilaisia ohjeita ja esimerkkejä, joissa on eri Reactin ja JavaScriptin versioita, joten toteutustavat poikkeavat hyvinkin toisistaan eivätkä ole yhteensopivia. Näin siis yrityksen ja erehdyksen kautta joutuu etsimään sopivaa ja toimivaa vaihtoehtoa.

Toinen haaste on, että uusin React pohjaa ES6:een, jota esimerkit pääosin uusimman version kanssa seuraavat. Tämä on vielä harvakseltaan muualla käytössä, joten on opeteltava uusi tyyli kirjoittaa JavaScriptiä. Hyviä puolia on komponenttipohjaisuus. Käytännössä tehdään pino tarvittavia komponentteja, joita sitten niputetaan tarvittaville sivuille yhdeksi kokonaisuudeksi. Lisäosat kuten react-bootstrap on helppo ottaa käyttöön ja päästä sisälle ja se säästää paljon DIY-vaivaa komponentteja tehtäessä.

Mikäli harkitset Node-kehitystä, pistä meille mailia: sales (at) geniem.com