I contenuti dell'articolo
Da appassionato di node.js cerco sempre di “sponsorizzarne” l’utilizzo.
Non sempre però riesco a convincere i miei interlocutori che, quasi tutti, mi rispondo più o meno cosi
“si ma alla fine è javascript”
“ok, ma non è compilato”
“dai, non può essere utilizzato per applicazioni enterprise”
“insieme a mongoDB? ma stai scherzando? … e se c’è un problema?”
E’ vero, io sono un semplice “web developer” con solo quindici anni di esperienza, perché dovrebbero ascoltarmi e darmi ragione?
Allora ho pensato …
E se gli dicessi che una azienda come paypal ha deciso di migrare la sua infrastruttura a node.js?
Pensi che mi darebbero ascolto?
Se gli dicessi che anche ebay e groupon lo stanno facendo?
Sarei più credibile?
Comunque, il 22 Novembre 2013 paypal ha annunciato, tramite il suo blog ufficiale, che migrerà l’infrastruttura software della componente web da java a node.js, per cui passerà da un linguaggio compilato ad uno interpretato.
Questo l’articolo https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/
Sono pazzi?
Non credo proprio, credo invece che stiano pensando al futuro ed alle evoluzioni che il web sta subendo.
Evoluzioni che per forza di cose vanno ad incidere anche sugli skill degli ingegnieri della divisione IT di un'azienda.
Date uno sguardo a questa frase di Jeff Harrell (paypal engineer):
“Historically, our engineering teams have been segmented into those who code for the browser (using HTML, CSS and JavaScript) and those who code for the application layer (using Java). Imagine an HTML developer who has to ask a Java developer to link together page “A” and “B”. That’s where we were. This model has fallen behind with the introduction of full-stack engineers, those capable of creating an awesome user interface and then building the application backing it. Call them unicorns, but that’s what we want and the primary blocker at PayPal has always been the artificial boundary we established between the browser and server.
Node.js helps us solve this by enabling both the browser and server applications to be written in JavaScript. It unifies our engineering specialties into one team which allows us to understand and react to our users’ needs at any level in the technology stack.”
Riassumendo significa che in passato il team di ingegneri di paypal era ben distinto tra chi lavorava sulla parte web (skill HTML, CSS e Javascript) e chi invece sulla componente applicativa (skill Java).
Questa distinzione creava problemi di interazione, interoperabilità e velocità di risposta.
Un nuovo skill: “full-stack”
Problemi risolti con la nascita di nuove figure professionali “full-stack” ossia che hanno il controllo completo del processo, dalla pagina web fino al layer applicativo.
Tutto ciò è possibile solo uniformando il linguaggio di programmazione e questo lo si può fare solo con il javascript.
A questa interessante riflessione di Jeff Harrell mi sento di aggiungere una ulteriore riflessione.
Javascript è l’unico linguaggio di programmazione che oltre a consentire lo sviluppo con il medesimo linguaggio della componente client e di quella server, consente di gestire anche la componente dati sempre con lo stesso linguaggio (Es. mongoDB)
Architettura di esempio
Si faccia riferimento all’architettura che ho disegnato ed utilizzato per la webapp www.darkroomlocator.com
Come si può notare l’intera infrastruttura utilizza come unico linguaggio di programmazione (client + server + dati) javascript.
Non solo, una soluzione web con questa architettura è facilmente portabile anche su dispositivi mobile utilizzando framework come apache cordova / phonegap che consentono di “esportare” facilmente una webapp javascript in app per mobile (iOS, android, win8, … )
Insomma, javascript non è la soluzione ad ogni risposta, però per certe realtà ci si avvicina molto, specialmente se si parla di web application.
Riferimenti
https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/
https://github.com/paypal
http://nodejs.org/
http://www.mongodb.org/
http://phonegap.com/
Che ne pensi? utilizzi node.js? Ti sentiresti di consigliarlo per applicazioni enterprise? Hai esperienze in tal senso?