Node.js-verkkosovelluskehityksen hyvät ja huonot puolet

author
15 minutes, 22 seconds Read
SISÄLLYSLUETTELO

Lukuaika: 13 minuuttia

Suosituimpana ohjelmointikielenä JavaScripttekniikka on myös yksi yleisimmistä ohjelmistokehitystekniikoista. Perinteisesti sitä on käytetty webin frontend-kehitystyökaluna, mutta siitä on tullut myös merkittävä cross-platform-mobiilikehitystyökalu useiden alustojen perustekniikkana, kuten Apache Cordova/PhoneGap, React Native, NativeScript, Appcelerator Titanium.

Mutta JavaScriptin sovellusalueet eivät lopu tähän. Viime aikoina on puhuttu paljon JavaScriptin käytöstä palvelinpuolen ohjelmoinnissa. Yksi työkalu, joka osoitti tämän muutoksen web-kehityksessä, oli Node.js.

Mikä on Node.js?

Node.js ei itse asiassa ole kehys tai kirjasto, vaan ajoympäristö, joka perustuu Chromen V8 JavaScript-moottoriin.

Teknologian esitteli ensimmäisen kerran Ryan Dahl vuonna 2009 vuotuisessa eurooppalaisessa JSConfissa, ja se tunnustettiin heti ”tämänhetkisen JavaScript-universumin jännittävimmäksi yksittäiseksi ohjelmistoksi”.

Avoimen lähdekoodin projektina Node.js:ää sponsoroi pilvilaskenta- ja hosting-ratkaisuja tarjoava Joyent. Yhtiö investoi useisiin muihin teknologioihin, kuten Ruby on Rails -kehykseen, ja tarjosi hosting-palveluja Twitterille ja LinkedInille. Jälkimmäisestä tuli myös yksi ensimmäisistä yrityksistä, joka käytti Node.js:ää mobiilisovellustensa backendissä. Myöhemmin useat teknologiajohtajat, kuten Uber, eBay, Walmart ja Netflix, ottivat teknologian käyttöönsä.

Node.js:n avulla palvelinpuolen JavaScriptin laaja käyttöönotto alkoi kuitenkin vasta hiljattain. Google Trendsin mukaan kiinnostus tätä teknologiaa kohtaan saavutti huippunsa vuonna 2017, ja se on edelleen korkealla tasolla.

Node.js-latauksia. Asenna Long-Term Support ja uusimmat versiot Node.js:stä Windowsille ja MacOS:lle täältä. Lisäksi muistutus – npm jaetaan Node.js:n mukana valmiiksi.

Dokumentaatio. Löydät dokumentit ja aloitusoppaat linkistä.

Node.js IDEs . Lähes kaikissa suosituissa koodieditoreissa on tuki ja lisäosia JavaScriptille ja Node.js:lle, joten on vain väliä, miten muokkaat IDE:si koodaustarpeisiisi sopivaksi. Monet kehittäjät kuitenkin kehuvat suuresti VS Code, Brackets, Atom ja WebStorm -erityistyökaluja.

Frameworks . Väliohjelmistojen käyttäminen pelkän Node.js:n sijaan on yleinen käytäntö, joka helpottaa kehittäjien elämää. Vertailemme suosittuja Node.js-kehyksiä erillisessä artikkelissa, jossa tarkastelemme Express.js:ää, Meteoria, Sales.js:ää, Koa.js:ää, Keystone.js:ää ja Loopback.js:ää.

Muutamia Node.js:n kanssa käytettäviä JavaScript-ekosysteemityökaluja löydät omasta artikkelista.

Node.js:n vahvuudet ja heikkoudet saavat siitä aikaan kiivaan keskustelun. Selvittääksemme asian, olemme analysoineet molemmat – Node.js:n hyvät ja huonot puolet – ja yrittäneet selvittää, mitkä projektit voivat hyötyä tästä teknologiavalinnasta. Miksi siis käyttää Node.js:

Nopea selitys siitä, mikä on Node.js (tilaa, jos haluat lisää videosisältöä)

Node.js:n edut

⊕ Vankka teknologiapino

JavaScript on osoittautunut kiistattomaksi johtajaksi suosituimpien ohjelmointikielten joukossa. Node.js:stä on puolestaan tullut alalla itsenäinen nimi. Yhteensä 368 985 988 latausta ja yli 750 uutta osallistujaa, kuten Node-by-numbers-raportissa 2018 todetaan, projekti näyttää olevan vahvempi kuin koskaan.

Using Node.js:ää backendissä, saat automaattisesti kaikki täyden pinon JavaScript-kehityksen edut, kuten esim:

  • parempi tehokkuus ja yleinen kehittäjien tuottavuus
  • koodin jakaminen ja uudelleenkäyttö
  • nopeus ja suorituskyky
  • helppo tietämyksen jakaminen tiimissä
  • valtava määrä ilmaisia työkaluja

Sen seurauksena tiimisi on paljon joustavampi, kehitystyö on vähemmän aikaa vievää, ja lopputuloksena saat nopeita ja luotettavia ohjelmistoja. Frontend JavaScriptissä koulutetut kehittäjät voivat aloittaa palvelinpuolen ohjelmoinnin pienellä vaivalla. Kun molemmilla puolilla käytetään samaa kieltä, voit käyttää koodia uudelleen sekä frontendissä että backendissä kietomalla sen moduuleihin ja luomalla uusia abstraktiotasoja.

Yleisestä uskomuksesta huolimatta täyspinokehittäjänä et ole mitenkään rajoittunut perinteiseen MEAN-pinoon (MongoDB, Express.js, AngularJS ja Node.js). Ainoa must-have tässä tapauksessa on Node.js (backend-ohjelmointiin ei ole vaihtoehtoa JavaScriptillä). Muut tähän pinoon kuuluvat teknologiat ovat valinnaisia, ja ne voidaan korvata joillakin muilla samankaltaisia toimintoja tarjoavilla työkaluilla (lue vaihtoehdoista erillisestä artikkelistamme).

⊕ Nopea prosessointi ja tapahtumapohjainen malli

Node.js on nopea; se ei ole myytti. Tutustu toptal.comin suorituskykytesteihin, joissa verrataan, miten GO, PHP, Java ja Node.js käsittelevät samanaikaisia pyyntöjä. On pari syytä siihen, että Node.js näyttää tällaisia tuloksia:

V8-moottori. Node.js-toteutuksessa käytetty moottori on alun perin kehitetty Chrome-selainta varten. C++-kielellä kirjoitettua Chromen V8:a käytetään kääntämään JavaScriptillä kirjoitetut funktiot konekoodiksi, ja se tekee työnsä vaikuttavalla nopeudella. Tarkista vain suorituskyvyn vertailuarvot V8:n blogista. Sen ansiosta, että Google investoi voimakkaasti sen moottoriin, V8 osoittaa suorituskykyparannuksia joka vuosi, ja Node.js ottaa siitä kaiken hyödyn irti.

Blokkaamaton tulo/lähtö ja asynkroninen pyyntöjen käsittely tekivät Node.js:stä kykenevän käsittelemään pyyntöjä ilman viiveitä. Backendin yhteydessä synkroninen käsittely olettaa, että koodi suoritetaan peräkkäin. Näin ollen jokainen pyyntö lukitsee säikeen, jolloin muut pyynnöt joutuvat odottamaan sen valmistumista. Asynkroninen käsittely mahdollistaa pyyntöjen käsittelyn ilman säikeen estämistä (non-blocking I/O). Kun pyyntö on käsitelty, se voi lähettää takaisinkutsun ja jatkaa pyyntöjen palvelemista. Tämä auttaa Node.js:ää hyödyntämään yksisäikeistystä parhaalla mahdollisella tavalla, mikä johtaa lyhyeen vasteaikaan ja samanaikaiseen käsittelyyn.

Toinen näkökohta on tapahtumapohjainen malli. Kun käytetään yhteistä kieltä sekä asiakas- että palvelinpuolella, synkronointi tapahtuu nopeasti, mikä on erityisen hyödyllistä tapahtumapohjaisissa, reaaliaikaisissa sovelluksissa. Asynkronisen, lukkiutumattoman ja yksisäikeisen luonteensa vuoksi Node.js on suosittu valinta verkkopeleihin, chatteihin, videokonferensseihin tai mihin tahansa ratkaisuun, joka vaatii jatkuvasti päivittyvää dataa.

Etsiesimerkit puhuvat puolestaan: monet johtavat yritykset ovat vaihtaneet teknologiaa kehitettyyn Node.js-sovelluksiin ja huomanneet merkittäviä parannuksia – esimerkiksi PayPal huomasi 35 prosentin vähennyksen vasteajassa siirryttyään Javasta.

⊕ Skaalautuva teknologia mikropalveluihin

Koska kyseessä on kevyt teknologiatyökalu, Node.js:n käyttäminen mikropalveluarkkitehtuurissa on loistava valinta. Martin Fowler ja James Lewis kuvaavat tätä arkkitehtuurityyliä parhaiten seuraavasti: ”Lähestymistapa, jossa yksi sovellus kehitetään pienten palveluiden kokonaisuutena, joista jokainen toimii omassa prosessissaan ja kommunikoi kevyiden mekanismien, usein HTTP-resurssirajapinnan, avulla.”

Kun sovelluslogiikka pilkotaan pienempiin moduuleihin, mikropalveluihin, sen sijaan, että luodaan yksi suuri monoliittinen ytimen ydin, mahdollistat paremman joustavuuden ja luodaan pohjaa myöhemmälle kasvulle. Tämän seurauksena on paljon helpompaa lisätä lisää mikropalveluja olemassa olevien päälle kuin integroida lisäominaisuuksia sovelluksen perustoiminnallisuuteen.

Monoliittinen arkkitehtuuri vs. mikropalveluarkkitehtuuri pähkinänkuoressa

Node.js on valittujen tekniikoiden valintatekniikka, kun rakennetaan ja otetaan käyttöön mikropalveluiden ekosysteemiin kuuluvia ratkaisuja, käy ilmi vuoden 2017 raportista Node.js:n käyttäjäkyselytutkimuksesta. Noin puolet vastaajista käyttää mikropalveluihin liittyviä teknologioita (nimittäin Dockeria, johtavaa ohjelmistojen konttialustaa) Node.js-verkkosovellusten rakentamiseen:

Prosentti kehittäjistä, jotka käyttävät Docker-konttausta Node.js:n kanssa

Uudemmat havainnot osoittavat, että mikropalveluihin liittyvien teknologioiden, kuten Dockerin ja Kubernetesin, käyttö lisääntyi vuoden 2018 aikana, kun tämä arkkitehtuurityyli vain yleistyy. Kun kukin mikropalvelu kommunikoi tietokannan kanssa suoraan streamien kautta, tällainen arkkitehtuuri mahdollistaa paremman suorituskyvyn ja nopeamman sovelluksen. Taivaassa tehtyä yhteensopivuutta tukee kaksi mikropalveluarkkitehtuurissa laajasti käytettyä kehystä. Express-kehys listaa IBM:n ja Uberin käyttäjikseen, kun taas restifyta käyttävät npm ja Netflix.

Esimerkkinä elävästä toteutuksesta on Walmartin siirtyminen mikropalveluarkkitehtuuriin Node.js:ään johti seuraaviin välittömiin hyötyihin:

  • Yönaikainen 20 prosentin konversiokasvu yleisesti ja 98 prosentin kasvu mobiilikonversiossa
  • Sadan prosentin käytettävyys Black Fridayn aikana (käsitteli yli 500 miljoonaa sivulatausta)
  • Säästö laitteistokuluissa jopa 40 prosenttia ja kokonaistoiminnoissa 20-50 prosenttia

Muutama toinen valaiseva esimerkki siitä, miten Node.js:llä voidaan päihittää kilpailijat suorituskyvyssä, on GoDaddyn tapaus. SuperBowl-mainoskampanjaa pyörittäessään yritys pystyi Node.js:n ansiosta käsittelemään 10 000 pyyntöä sekunnissa ilman käyttökatkoksia käyttäen vain 10 prosenttia laitteistosta.

⊕ Runsas ekosysteemi

Yksi sana – npm, Node.js:n oletusarvoinen pakettihallinta, toimii myös avoimen lähdekoodin JavaScripttyökalujen markkinapaikkana, joka on tärkeässä roolissa tekniikan edistymisessä. Kun npm-rekisterissä on tällä hetkellä saatavilla noin 836 000 kirjastoa ja joka viikko julkaistaan yli 10 000 uutta kirjastoa, Node.js-ekosysteemi on varsin rikas. Samojen tilastojen mukaan 97 prosenttia nykyaikaisista verkkosovelluksista koostuu npm-moduuleista. Ja se on todiste sen kiistattomasta suosiosta kehittäjien keskuudessa.

Node.js:n käyttöpotentiaali on valtava, kun käytettävissä on näin suuri valikoima ilmaisia työkaluja muutamalla klikkauksella. Samaan aikaan avoimen lähdekoodin ohjelmistot nauttivat kasvavaa suosiota, koska niiden avulla voidaan rakentaa uusia ratkaisuja, jotka vähentävät kehitystyön kokonaiskustannuksia ja markkinoille saattamiseen kuluvaa aikaa.

⊕ Vahva yritystuki

Kuten edellä mainittiin, Node.js:n kehittämistä on tukenut Joyent. Vuonna 2015 perustettiin Node.js Foundation, jonka tarkoituksena oli ”mahdollistaa Node.js:n laajamittainen käyttöönotto ja auttaa nopeuttamaan sen kehitystä”. Järjestön perustajajäseniksi tulivat IBM, Microsoft, PayPal, Fidelity ja SAP.

Luettelo organisaatioista, jotka käyttävät Node.js:ää tuotannossa, kasvaa jatkuvasti. Siihen kuuluu tällä hetkellä lähes kolmesataa tunnettua yritystä, kuten PayPal, Medium, Trello, Uber ja Zendesk.

Vähän harva avoimen lähdekoodin projekti on koskaan nauttinut näin vahvaa tukea maailman johtavilta yrityksiltä. Ja se ennakoi, että Node.js:llä on erinomaiset mahdollisuudet.

⊕ Saumaton JSON-tuki

Vaikka muut backend-teknologiat, kuten PHP ja Ruby on Rails, voivat käyttää JSON-muotoa kommunikaatioon, Node.js tekee sen ilman binäärimallien välistä konvertointia ja käyttää JavaScriptiä. Tämä on erityisen kätevää, kun sinun on rakennettava RESTful-rajapintoja NoSQL-tietokantatukea varten, kuten MongoDB:tä – MEAN-pinon M-kirjainta. Tämä saumaton kommunikointi yhden tärkeimmän tiedonsiirtostandardin kanssa on toinen JavaScript-ekosysteemin etu.

Node.js:n haitat

Θ Suorituskyvyn pullonkaulat raskaiden laskentatehtävien kanssa

Node.js:n suurin haittapuoli vielä tälläkin hetkellä on sen kyvyttömyys prosessorisidonnaisten tehtävien käsittelyyn. Ymmärtääksemme, mistä tämä ongelma juontaa juurensa, tarvitsemme kuitenkin hieman kontekstia. Aloitetaan perusasioista, itse JavaScriptistä.

Kuten tiedämme, Node.js on ajoympäristö, joka suorittaa JavaScriptiä palvelinpuolella. Koska JavaScript on frontend-ohjelmointikieli, se käyttää yhtä säiettä tehtävien nopeaan käsittelyyn. Säikeistystä ei tarvita, jotta se toimisi, koska JavaScriptin tehtävät ovat kevyitä ja vievät vain vähän suorittimen tehoa.

Palatessamme takaisin Node.js:ään, tiedämme nyt, miksi sitä pidetään yksisäikeisenä: Se käsittelee JavaScriptiä, joka on yksisäikeinen. Lukkiutumaton input/output-malli tarkoittaa, että Node.js vastaa asiakkaan kutsuun käynnistää pyyntö ja käsittelee tehtävää sinä aikana, kun se laukaisee callbackin, kun tehtävä on valmis. Kun tehtäviä käsitellään asynkronisesti, Node suorittaa JS-koodia yksittäisessä säikeessään tapahtumakohtaisesti. Tätä kutsutaan tapahtumasilmukaksi.

Ongelma ilmenee, kun Node.js vastaanottaa prosessoriin sidotun tehtävän: Aina kun tapahtumasilmukkaan tulee raskas pyyntö, Node.js asettaisi kaiken käytettävissä olevan suorittimen käsittelemään sitä ensin ja vasta sitten vastaamaan muihin jonossa oleviin pyyntöihin. Tämä johtaa hitaaseen käsittelyyn ja yleiseen viivytykseen tapahtumasilmukassa, minkä vuoksi Node.js:ää ei suositella raskaaseen laskentaan.

Mutta vuonna 2018 monisäikeistäminen otettiin käyttöön Node.js:ssä kokeellisena ominaisuutena 10.5.0-päivityksen myötä. Uutta ominaisuutta nimeltä worker threads -moduuli voidaan käyttää hyödyntämään lisäsäikeitä säiepoolista suorittimeen sidottujen tehtävien suorittamiseen. Tämä on kuitenkin mahdollista vain koneissa, joissa on useita ytimiä, sillä Node.js sallii edelleen yhden ytimen käytön yhteen säikeeseen. Tämä tarkoittaa, että raskaat rinnakkaiset prosessit voidaan suorittaa eri säikeessä. Tämä ominaisuus on edelleen kokeellinen Node.js:n versiossa 12, mutta sitä on parannettu merkittävästi.

Θ Callback hell issue

Johtuen asynkronisesta luonteestaan Node.js luottaa vahvasti callbackeihin, funktioihin, jotka suoritetaan sen jälkeen, kun kukin tehtävä jonossa on valmis. Useiden jonossa olevien tehtävien pitäminen taustalla, joista jokaisella on oma takaisinkutsunsa, saattaa johtaa niin sanottuun takaisinkutsuhelvettiin, joka vaikuttaa suoraan koodin laatuun. Yksinkertaisesti sanottuna kyse on ”tilanteesta, jossa callbackit ovat sisäkkäin toisten callbackien sisällä useita tasoja syvällä, mikä mahdollisesti vaikeuttaa koodin ymmärtämistä ja ylläpitoa.”

Esimerkki koodista, jossa on sisäkkäisiä callbackeja

Kuvalähde: callbackhell.com

Tätä pidetään usein merkkinä huonoista koodausstandardeista ja kokemuksen puutteesta JavaScriptin ja erityisesti Node.js:n kanssa. Yllä esitetty koodi voidaan refaktoroida ja yksinkertaistaa muutamalla askeleella, kuten osoitteessa callbackhell.com.

Θ Työkalujen kypsymättömyys

Vaikka Node.js:n ydinmoduulit ovat melko vakaita ja niitä voidaan pitää kypsinä, npm-rekisterissä on monia työkaluja, jotka ovat joko heikkolaatuisia tai joita ei ole dokumentoitu/testattu asianmukaisesti. Lisäksi rekisteri itsessään ei ole tarpeeksi hyvin jäsennelty tarjotakseen työkaluja niiden luokituksen tai laadun perusteella. Näin ollen voi olla vaikeaa löytää paras ratkaisu tarkoituksiisi tietämättä, mitä etsiä.

Se, että Node.js-ekosysteemi on enimmäkseen avointa lähdekoodia, sillä on myös vaikutuksensa. Vaikka Joyent ja muut merkittävät tekijät valvovat Node.js:n ydinteknologian laatua, muilta työkaluilta saattaa puuttua maailmanlaajuisten organisaatioiden asettama laatu ja korkeat koodausstandardit.

Θ Kokeneiden ammattilaisten kasvava kysyntä

Yleisestä uskomuksesta huolimatta kaikki JavaScript-kehittäjät eivät ole myös Node.js-kehittäjiä. Palvelinpuolen JavaScript-ohjelmoinnin hallitseminen vaatii huomattavaa vaivannäköä ja tiettyä taustaa backend-kehityksestä. Näin jyrkän oppimiskäyrän vuoksi Node.js-kehittäjiä on huomattavasti vähemmän kuin JS-ammattilaisia yhteensä.

Node.js:n ympärillä vallitsevan hypetyksen kasvaessa kokeneiden alan ammattilaisten kysyntä kasvaa.

Työnsä aloittavien insinööriopiskelijoiden tietämyksen ja työnantajien tarpeiden välillä on suuri osaamiskuilu
Lähde: Lähde: HackerRank

Miljoonien JavaScript-kehittäjien joukosta voi olla vaikea löytää osaavaa Node.js-ammattilaista projektiisi. Tässä tapauksessa et varmasti halua rajoittaa hakuasi vain yhteen maahan. Teknisten lahjakkuuksien hankkimisesta ulkomailta on tullut jo pitkään normi IT-alalla.

How to Learn Node.js

Tässä on aloituspakettisi Node.js:n ymmärtämiseen ja sen kanssa työskentelyyn.

Turorials. Älä tyydy vain virallisiin dokumentteihin: Katso tonneittain ilmaisia oppitunteja W3Schools-sivustolta, käy Nodeschoolin kansainvälisissä työpajoissa ja käytä tietysti freeCodeCampin ilmaisten opetusohjelmien kirjastoa.

Luokat. Jos olet vannoutunut opiskelija, aloita Node.js:n verkkokurssi: Tässä on yksi PluralSightissa, ja tietenkin yksi Udemyssä.

Interaktiivinen oppiminen. Katso ilmaiset ja maksulliset resurssit, joiden avulla voit oppia Node.js:ää interaktiivisten oppituntien ja harjoitusten avulla. Yksi suosituimmista on The Art of Node.

Yhteisö. Katso virallinen luettelo yhteisön ylläpitämistä Node.js-projekteista. Nopea vinkki: Tutki Facebook-ryhmiä ja -yhteisöjä omalla alueellasi/ensikielelläsi. Ja tietysti tutustu Node.js-yhteisöihin Redditissä, tagiin StackOverflow’ssa ja aiheeseen Quorassa.

Node.js vs. Ruby on Rails vs. Django vs. Symfony

Node.js:n suosiosta tai markkinakysynnästä ei moni teknologia voi kilpailla. Jos kuitenkin tarkastelemme palvelinpuolen ohjelmoinnin vaihtoehtoja, näemme taivaalla ainakin kolme muuta loistavaa tähteä. Ne ovat Ruby on Rails, Django ja Symfony. Katsotaanpa, pärjäävätkö ne Node.js:n eduille ja jakavatko ne sen haitat.

Vertaillaan Node.js:n, Railsin, Djangon ja Symfonyn tilastoja

Lähde: StackShare

Ruby on Rails tunnetaan yksinkertaisesta, mutta kantaaottavasta kielestään ja gemien – Railsin oman ekosysteemin mukautettujen pakettien – saatavuudesta. Ruby itsessään on intuitiivinen ja aloittelijaystävällinen kieli, jolla on kannustava ja omistautunut yhteisö, joka tuottaa koodia RubyGemsiin. Rails luotiin nopeaan kehitykseen ja prototyyppien luomiseen, vaikka sitä käyttävätkin menestyksekkäästi sellaiset brändit kuin GitHub, Twitter ja Airbnb, mikä osoittaa sen laajan käyttövalikoiman. Sen tiedonsiirtotoiminnallisuus on erityisen vaikuttava – toisin kuin Node.js:ssä, joka käyttää lisäpaketteja, Railsissa on jo valmiiksi ominaisuus, jonka avulla voit helposti ja johdonmukaisesti manipuloida tietokantaa.

Milloin kannattaa käyttää Railsia Node.jsin sijaan? Rails ei pysty kilpailemaan Noden suorituskyvyn ja skaalautuvuuden kanssa, mutta nopeaan kehitykseen Rails voi kuitenkin olla parempi valinta. Node.js:ssä joutuu kyllä käyttämään kolmannen osapuolen moduuleja tuon kehitysnopeuden saavuttamiseksi, mutta Ruby:ssä on kaikki epätavanomaisesti. Mitä tulee kieleen, millään työkalulla ei ole selvää etua – kun Node.js:llä on suuri kysyntä mutta vähäinen tarjonta, Rubyn lahjakkuusreservi on aluksi pienempi.

Django on Pythoniin perustuva web-kehys, joka on StackOverflow’n tietojen mukaan nopeimmin kasvava ohjelmointikieli. Sitä markkinoidaan työkaluna perfektionisteille, joilla on deadlineja, ja se on luotu tekemään sovelluksia mahdollisimman nopeasti ja mahdollisimman jäsennellysti, turvallisesti ja helposti ymmärrettävällä tavalla. Djangoa pidetään Pythonin ohella myös miedompana oppimiskäyränä. Kun Node.js:n kanssa työskentely edellyttää laajaa JavaScriptin tuntemusta, Django on ”patterit mukana” -teknologia. Siinä on sisäänrakennettu hallintapaneeli, jonka avulla voit helposti päivittää ja ylläpitää tietokantoja ja malleja, mikä nopeuttaa työtäsi.

Milloin kannattaa käyttää Djangoa Node.js:n sijaan? Node.js:ään verrattuna Django on aloittelijaystävällinen työkalu. Muuta kuin itse kieli, ei ole mitään todellista syytä valita jompaa kumpaa toisesta. Kyse on enemmänkin mukavuudestasi ja kokemuksestasi joko JavaScriptin tai Pythonin kanssa kuin erityisistä käyttötapauksista.

Symfony on PHP-kehys, joka tarjoaa sille automaattisesti yli 20 vuoden dokumentaation ja massiivisen, aktiivisen yhteisön. Yli 80 prosenttia verkosta toimii PHP:llä, ja projektit, kuten Facebook, Baidu tai mikä tahansa muu verkkosivusto, toimivat WordPressillä. Vaikka Symfony on vain yksi markkinoilla olevista PHP-kehyksistä, se on vaikuttavan vakaa, skaalautuva ja toimii hyvin laajoissa projekteissa. Se käyttää myös templating-moottoria Twig, joka toimii samalla tavalla kuin monet PHP-pohjaiset sisällönhallintajärjestelmät.

Milloin kannattaa käyttää Symfonya Node.js:n sijaan? Symfony tukee luonnollisesti CMS-ominaisuuksia, kuten malleja ja ylläpitäjän kojelautoja, minkä ansiosta sillä voi pyörittää blogeja, uutissivustoja ja verkkokauppoja. Esimerkkeinä mainittakoon Yahoo Answers, Dailymotion ja National Geographic.

Make Node.js Shine

Kaikkien lueteltujen Node.js:n etujen ja haittojen kanssa on selvää, että teknologia ei ole mikään hopealuoti. Mutta ei myöskään Java, .Net framework tai PHP. Silti on erityistapauksia, joissa kukin luetelluista teknologioista toimii parhaiten. Node.js:n osalta nämä ovat reaaliaikaisia sovelluksia, joissa on intensiivistä I/O:ta ja jotka vaativat nopeutta ja skaalautuvuutta.

Tällaisia voivat olla esimerkiksi sosiaaliset verkostot, pelisovellukset, live-keskustelut tai foorumit sekä pörssiohjelmistot tai mainospalvelimet, joissa nopeus on kaikki kaikessa. Nopea ja skaalautuva Node.js on dataintensiivisten, reaaliaikaisten IoT-laitteiden ja -sovellusten valintateknologia.

Node.js teki JavaScriptistä web-sovelluskehityksessä valittavan full-stack-teknologian. Lukkiutumattoman arkkitehtuurinsa ansiosta Node.js soveltuu hyvin videon ja äänen koodaamiseen ja lähettämiseen, useiden tiedostojen lataamiseen ja datan suoratoistoon. Jälkimmäinen saattaa olla erittäin hyödyllinen matkailualan ohjelmistoissa, joissa tietoja on hankittava eri toimittajien eri API-rajapinnoista.

Nyttemmin Node.js:ää on käytetty aktiivisesti yritystason ohjelmistoissa. Vaikka asiasta kiistellään edelleen paljon, monet suuret yritykset ja maailmanlaajuiset organisaatiot, kuten Capital One ja NASA, ovat jo ottaneet Node.js:n käyttöön. Ja yritysten Node.js:n ekosysteemi kypsyy edelleen sellaisten työkalujen myötä kuin IBM API Connect, Joyentin Triton, N|Solid NodeSourcen, Red Hat OpenShiftin, RisingStackin Trace ja muiden.”

Tämä viesti on osa ”Hyvät ja huonot” -sarjaamme. Lisätietoja suosituimpien teknologioiden hyvistä ja huonoista puolista löydät sarjan muista artikkeleista:

Xamarin-mobiilikehityksen hyvät ja huonot puolet

Javaskriptin full stack -kehityksen hyvät ja huonot puolet

ReactJS:n ja React Nativen hyvät ja huonot puolet

Swift-ohjelmointikielen hyvät ja huonot puolet

Hyviä ja huonoja puolet .NET Framework -ohjelmoinnin hyvät ja huonot puolet

Hyvät ja huonot puolet Angular-kehityksestä

Hyvät ja huonot puolet Selenium-testiautomaatiotyökalusta

Hyvät ja huonot puolet Android-sovelluskehityksestä

Similar Posts

Vastaa

Sähköpostiosoitettasi ei julkaista.