Node.js uitgelegd door een web developer

Wat is Node.js? Waarom is het zo populair? En wat zijn enkele best practices om er het meeste uit te halen? Onze developer Arno vertelt er graag meer over.

Wat is Node.js?

Om te begrijpen wat Node is, moeten we teruggaan naar het ontstaan van browsers en Javascript.

Javascript wordt als programmeertaal gebruikt op het web. Aanvankelijk diende het vooral om kleine dingen te animeren en overgangen toe te voegen. Voor dataverwerking werd het niet gebruikt. Er applicaties in schrijven of het in de back-end gebruiken was al helemaal uit den boze.

Met andere woorden: je vond het dus enkel terug in de browser. Daarom zijn er vandaag heel wat engines die in de browser draaien die Javascript kunnen interpreteren en omzetten naar bijvoorbeeld HTML of CSS.

Maar op een bepaald moment maakte Javascript de overstap van ‘new kid on the block’ naar een betrouwbare en multifunctionele scriptingtaal. Het begon meer gebruikt te worden aan de front-end en meer developers wilden het ook gebruiken op de back-end.

Eén slimme developer had het ingenieuze idee om de V8 engine – de open source Javascript engine van Google Chrome – uit Chrome te halen zodat het ook op een gewone computer kon draaien, buiten de browser. Dit idee werd Node.js gedoopt.

Waarom is Node.js zo populair?

Om te beginnen is Javascript een veel volwassenere taal geworden. Er wordt ook minder op neergekeken dan vroeger. Toen hadden veel developers, inclusief ikzelf, het idee dat Javascript alleen maar voor de front-end was en je er niet zoveel mee kon doen.

Typescript heeft ook een grote invloed gehad op het succes. Typescript is een toevoeging op Javascript die maakt dat je je code statische types kunt meegeven. Dat betekent dat je heel strikt kunt definiëren welke functie wat voor soort parameters aanneemt en dat je – in tegenstelling tot bij het klassieke Javascript – niet zomaar alles erin kan duwen.

Anders gezegd: je beperkt jezelf als developer, maar je maakt daardoor veel minder fouten. En dat is volgens mij de reden dat het net zo populair aan het worden is.

Een ander groot voordeel is dat je nu ook met één taal de volledige stack kunt doen. Je kan met Javascript zowel je front-end als je back-end bouwen en alle API’s die ertussen zitten. Dat is toch geen onbelangrijk voordeel, omdat ‘front-enders’ nu ook kunnen overschakelen naar de back-end en omgekeerd.

Drie tips om je Node.js web development te verbeteren


Load Balancing

Dit is vooral toepasbaar op grote applicaties.

Wat is het: twee, drie of meer servers die hetzelfde kunnen naast elkaar zetten. Je verdeelt de ‘load’ over verschillende servers zodat alle requests gelijk worden afgehandeld door verschillende servers.

Ik vergelijk het graag met een knikkerbaan die ik vroeger had, waarbij er halverwege een ‘wissel’ was waardoor de knikker ofwel de linkse baan ofwel de rechtse baan kon nemen.

Waarom is het belangrijk: heb je een applicatie waar veel gebruikers tegelijkertijd op zitten? Dan ga je snel tegen de limieten van je server aanlopen. Wanneer één server alle requests moet afhandelen, loopt de wachtrij vol. Alle requests die dan binnenkomen, moeten wachten tot die voor hen zijn afgerond. Door load balancing toe te passen, zorg je ervoor dat je applicatie steeds snel blijft lopen.

Voor wie: als particuliere gebruiker zal je dit niet snel nodig hebben. Ook als je gewoon data gaat ophalen en deze op de front-end toont, zal je redelijk lang met één server toekomen. Desnoods kan je er wat meer CPU of RAM tegenaan gooien.

Vanaf dat je zware berekeningen gaat doen op de back-end die een tijd in beslag nemen om terug te komen naar de client, of bijvoorbeeld heel veel data requests tegelijk gaat doen, dan is het nodige om meerdere servers op te zetten en dat te load balancen.

Caching (via Redis module)

Wat is het: De cache is een buffer voor tijdelijke opslag, die tussen de gebruiker en een traag deel (een database of netwerk verbinding) geplaatst wordt.

Elke keer we iets uit die database of over het netwerk opvragen, checken we eerst de cache. Zit de gevraagde data daar al? Dan sparen we een request (en dus tijd) uit! Anders voeren we het request uit, en slaan we het resultaat op in die buffer voor een volgende keer. Het gebruik van een cache maakt je applicatie dus sneller en efficiënter

Redis is in het algemeen caching en dat maakt je applicatie meestal een stuk sneller.

Caching eenvoudig uitgelegd: Stel, je krijgt geregeld vragen over een bepaald onderwerp, maar je hebt zelf geen geheugen. Je zou dan elke keer naar de bibliotheek kunnen lopen, een boek zoeken dat je vraag beantwoordt, en dat antwoord aan de vraagsteller doorspelen. Als je een halfuur later dezelfde vraag krijgt, moet je deze actie weer herhalen.

Of: je zou de vraag en het antwoord in je boekje kunnen noteren. Volgende keer je een vraag krijgt, check je je boek: staat deze vraag er al in? Dan spaar je een trip naar de bib en opzoekwerk uit! Staat ze er niet in, dan ga je het toch opzoeken en schrijf je het bij in je boek.

Waarom is het belangrijk: je computer heeft verschillende soorten geheugen. De belangrijkste zijn de opslag op de harde schijf en het RAM-geheugen.

De harde schijf is long term en is daarom heel traag. RAM is dan weer snel, maar vluchtig: vanaf dat er geen stroom meer opstaat, is je data weg.

RAM kopieert data van je harde schijf, zodat je er snel aan kunt. Je requests gebeuren op de achtergrond via de RAM naar je harde schijf.

Je RAM-geheugen is geoptimaliseerd om ervoor te zorgen dat er zoveel mogelijk data in zit die je waarschijnlijk nodig zal hebben. Door algoritmes weet het RAM-geheugen dat als je met een bepaald programma bezig bent, je waarschijnlijk bepaalde data nodig hebt. En als je die data invult, je waarschijnlijk bepaalde andere data nodig zal hebben.

Wat je met Redis doet, is een laag toevoegen die ervoor zorgt dat je, vanaf je een lange request doet naar je database, deze data wordt opgeslagen in de Redis database die op RAM draait. De volgende keer dat je die data nodig hebt, ga je in plaats van helemaal naar je database te moeten gaan, de data uit de Redis database halen, wat veel sneller is.

Voor wie: voor iedereen die dit praktisch voorbeeld herkent of aan een soortgelijke situatie denkt: je hebt een applicatie waar je dikwijls een lijst met gebruikers uithaalt. Als je een keer deze lijst ophaalt, zit deze in je cache. Voor elke volgende gebruiker die wordt opgehaald, wordt eerst gekeken of deze in de cache zit. Zo gaat het veel sneller. Als de gebruiker dan toch niet in de cache zit, zal de request wat langer duren.

Light coding

Wat is het: geen onnodige code gebruiken, zodat je applicatie sneller werkt.

Waarom is het belangrijk: om je applicatie te laten draaien, heb je veel andere packages nodig. Dikwijls heeft iemand anders deze al geschreven, zeker bij Node.js. Dat package is vrij beschikbaar op het internet en kan je zo binnenhalen. En dat is op zich zeer handig!

Maar soms is het nuttiger om toch je eigen implementatie te schrijven met de functies die jij nodig hebt, geoptimaliseerd voor wat jij aan het doen bent.

Voor wie: voor developers die geen onnodige code en functies in hun applicatie willen gebruiken, waardoor het geheel trager werkt.

Web development in Node.js: een verstandige keuze?

Als je het mij vraagt: absoluut! Node.js. Is mijn go-to voor de back-end. Je hebt niet veel resources nodig, het werkt snel en ook de online community en cursussen zijn geweldig.

Ik ben trouwens niet de enige fan van Node. Zo zijn de developers van o.a. Netflix er ook dol op: enkele jaren geleden botste twee groepen developers bij Netflix op een discussie.

De ene wilde de back-end in Java bouwen, de andere in Node. Ze geraakten maar niet uit de discussie en de top van Netflix besloot om het probleem voor eens en voor altijd op te lossen: ze lieten beide groepen het platform volledig opbouwen. De ene in Java, de andere in Node. Het platform dat het best (en het snelst) is, zou gebruikt worden.

En wat bleek? Met Node.js kon de applicatie sneller draaien en dit met ongeveer 40% minder code. Vergeet dus niet om de Node.js developers te bedanken de volgende keer dat je aan het bingewatchen bent!

Ondertussen gebruiken ook andere grote bedrijven zoals PayPal Node.js en de lijst wordt nog elke dag groter.

Node.js Community

Node geniet van een grote en behulpzame community. Enkele voordelen op een rijtje:

  • De code is open-source en vrij beschikbaar.
  • Er zijn tal van kwalitatieve opleidingen en online tutorials.
  • De Linux Foundation is een grote trekker van de Node.js community.
  • Verschillende grote bedrijven bieden ondersteuning aan de ‘Node core’, omdat ze de code zelf nodig hebben om de systemen in hun bedrijf sneller te maken.

Zelf aan de slag met Node.js

Wil je zelf beginnen met Node.js? Volg dan dit waterdichte stappenplan en wordt een Node.js professional:

  1. Read The Fucking Manual. Zo cliché als maar kan, maar wel de belangrijkste stap. Node.js heeft een uitgebreid aanbod aan documentatie die je vanaf het begin kunt gebruiken.
  2. Als je informatie online zoekt, vergelijk deze dan met wat er in de officiële Node.js documentatie staat. Er staat heel wat informatie online, maar er is ook veel foute informatie.
  3. Leer er zo snel mogelijk Typescript bij. Dit is een grotere stap en lijkt aanvankelijk ook moeilijker, maar eens je het onder de knie hebt, maak je veel minder fouten. Typescript heeft ook een uitgebreide cursus waar je mee aan de slag kunt.

Vragen over Node.js

Heb je nog vragen over Node.js? Neem dan eens een kijkje op onze sociale media voor tal van praktische tips. En is er toch nog iets niet helemaal duidelijk? Dan kan je altijd contact opnemen met ons enthousiaste team van developers!

Blijf op de hoogte

Schrijf je in voor de nieuwsbrief & ontvang alle nieuwste updates.

E-mailadres