Che cos’è uno Stack Web?: LAMP MEAN e JAMStack

Per Nerd
By: simone martelli

Calma, nessuno ti sta chiedendo l’equivalente del come funziona la tua auto, ma di sapere che gli pneumatici vanno gestiti e che differenza c’è tra diesel e ibrida, però applicato al tuo sito web.

Che cos’è uno stack web?

Uno stack web si riferisce all’insieme di strumenti come linguaggi di programmazione e tecnologie che gli sviluppatori utilizzano per creare prodotti o soluzioni digitali come siti Web o app Web.

La scelta del giusto stack dipende molto dalla conoscenza tecnica degli sviluppatori, dalle risorse disponibili e dalle esigenze del progetto, quindi non possiamo mai davvero parlare di uno stack migliore, ma piuttosto dello stack migliore per il progetto che vogliamo realizzare.

Ogni stack ha dei pro e dei contro. Di sicuro esistono stack web più popolari di altri nel mondo degli sviluppatori Web come: LAMP, MEAN e JAMStack.

Nel mondo degli sviluppatori è tutto un florilegio di acronimi; ci vuole pazienza.

Che cos’è lo stack LAMP?

LAMP è un acronimo che indica lo stack più vecchio e più diffuso nello sviluppo web.

Sta per:

  • Linux (sistema operativo)
  • Apache (webserver)
  • MySQL (database relazionale)
  • PHP (linguaggio di programmazione).

È un insieme di software open-source (software open source= nessun costo di licenza necessario Nota 1) che molti sviluppatori web hanno adottato nei primi anni 2000 e da allora è il re indiscusso dello sviluppo di siti e applicazioni web. Uno stack web collaudato per tutti i progetti server basati su Linux.
Esistono poi delle varianti a LAMP che cambiano nell’uso del sistema operativo installato sul server , per il software per la gestione dei database o per il linguaggio di programmazione associato come:
LAMP (tutto uguale tranne che per la P che può stare anche per Perl o Python che sono altri due linguaggi, molto differenti tra loro);
o un altro ulteriore LAMP (non vi sto prendendo in giro, davvero) dove la M sta per MongoDB al posto di Mysql.
Le varianti per sistema operativo invece sono:
WAMP – Dove c’è Windows invece di Linux (brrrr…)
MAMP – Dove c’è Mac OS sempre al posto di Linux (mmmm)
per non parlare di altri sistemi operativi meno famosi come FreeBSD, l’acronimo ve lo potete costruire da soli ormai.

Va da sé che LAMP nella sua versione originale resta la base su cui sono stati sviluppati e tutt’ora funzionano CMS, sistemi eCommerce più diffusi al mondo. WordPress, Drupal, Joomla, Magento, Prestashop sono tutti basati su questo stack tecnologico.

Che cos’è lo stack MEAN?

Con la crescente popolarità di JavaScript, linguaggio di programmazione utilizzato per lo sviluppo web, nel 2013 è arrivato lo stack MEAN. È uno stack di software open source scritti in JavaScript, realizzato per la creazione di siti Web dinamici e app Web.
Lo stack è composto da:

  • MongoDB (database documentale)
  • Express.js (un framework javascript di applicazioni Web di back-end Nota 2)
  • Angular.js (un framework javascript di applicazioni Web di front-end Nota 3)
  • Node.js (un ambiente runtime JavaScript).

Il più grande vantaggio dello stack MEAN è che tutti i componenti condividono lo stesso linguaggio di programmazione, rendendo molto più facile lavorare*.

Ultimamente sono emersi gli stack MERN e MEVN: entrambi si basano su altri framework applicativi front-end, ad esempio React.js e Vue.js invece di Angular.js, l’idea generale è più o meno la stessa.

(*)disclaimer: quando leggete “rendendo molto più facile lavorare” è bene avere chiaro che ci si riferisce sempre a non dover mischiare conoscenze di linguaggi differenti. Questi cambi di linguaggio sono sempre da evitare perché riducono sensibilmente la produttività di ogni sviluppatore Web e aumentano anche di molto i tempi di sviluppo. Ok, fine del pippone nerd.

Che cos’è il JAMstack?

Originariamente JAMStack è nato come un acronimo che sintetizzava un’architettura di sviluppo web come le precendenti, i tre componenti principali Jamstack che hanno dato il nome sono:

  • Javascript (linguaggio di programmazione)
  • API (sistema di comunicazione e scambio dati tra software e servizi web differenti, acronimo di Application Program Interface) 
  • Markup (Markup basato su template o modelli, deve essere pre-compilato al momento della distribuzione, in genere utilizzando un generatore di siti per i contenuti o uno strumento di compilazione per le app Web come Gatsby.js o Webpack).

Ma ciò a cui JAMStack si riferisce oggi (o cosa significa) è molto più di questo. La più grande differenza effettiva con LAMP o MEAN è che non è una cornice tecnologica precisa ma piuttosto un insieme di principi e strumenti.

Le differenze

LAMP era affidabile e veloce, ma lo era un tempo. MEAN è stato un notevole miglioramento, principalmente perché offriva flessibilità e un ambiente migliore, supportava un database NoSQL (database documentale che non funziona sul principio di indice e chiave di ricerca). Inoltre, presentava un’unica lingua: il JavaScript

JAMStack ha fatto un ulteriore passo avanti, ti incoraggia a concentrarti sulla realizzazione della tua idea e del tuo progetto, e a come svilupparlo, senza legarti a strumenti e sistemi specifici.

Ulteriori letture e riferimenti

Se vuoi approfondire la problematica dello stack tecnologico del tuo sito web, visita le seguenti pagine:

LAMP (Linux, Apache, MySQL, PHP) – https://it.wikipedia.org/wiki/LAMP
Sviluppo Web con MEAN – https://www.ibm.com/it-it/cloud/learn/mean-stack-explained
LAMP contro MEAN: Qual è lo stack giusto per te? – https://bitbucket.org/blog/lamp-vs-mean-which-stack-is-right-for-you
Che cos’è JAMStacklink interno a un post da scrivere

È stato bello scrivere questo contenuto e ti ringrazio per averlo letto, come si dice però, “la prossima volta, non rifacciamolo”.
Battute (brutte) a parte, ti invito a iscriverti alla newsletter di Jampot, a presto!

Nota 1 Che cos’è il software open source l’ho liquidato in una battuta e questo non gli rende merito. Diciamo, comunque per farla breve, che se non ci fossero stati il Free Software e il Software Open Source voi non avreste Android, il Mac OS e iOS (quindi niente telefoni belli e utili), non avreste Internet come l’abbiamo conosciuta e ancora la usiamo. E direi che ci possiamo fermare qui. Per approfondire l’argomento inizia da qui: https://it.wikipedia.org/wiki/Open_source

Nota 2 Intanto vorrei farti i miei complimenti per essere arrivato fin qui (se hai barato cliccando direttamente sul link non me lo far sapere, grazie). Per Back end ci si riferisce al pannello di controllo e a tutto il software “sotto al cofano” e che chi visita un sito o usa un app non vede. Il Back end lo usano gli amministratori dell’eCommerce o i content creator che pubblicano sul loro blog, per fare degli esempi.

Nota3 Il Front end è la parte del sito o della app Web che tutti vedono e usano.