La parola “stack” o “pila” in italiano è usata in diversi contesti e serve anche ad indicare una raccolta di software per rea­liz­za­re siti e ap­pli­ca­zio­ni web, dove i singoli com­po­nen­ti sono legati l’uno all’altro. La struttura di base di uno stack prevede un sistema operativo, un server web, un database e un in­ter­pre­te di script. Grazie ad un ap­pro­pria­to hardware del server, questo pacchetto fa sì che le in­for­ma­zio­ni ne­ces­sa­rie di un sito vengano inoltrate al client ri­chie­den­te, che è in genere il browser. È compito del browser elaborare i codici HTML, CSS e Ja­va­Script per rendere di­spo­ni­bi­le il sito agli utenti. Visto che i com­po­nen­ti di uno stack possono essere combinati a proprio pia­ci­men­to, ci sono in­nu­me­re­vo­li varianti adatte a diversi tipi di ap­pli­ca­zio­ne. La com­bi­na­zio­ne software più co­no­sciu­ta è il pacchetto open source LAMP, che è formato da Linux, Apache, MySQL e PHP.

Le com­po­nen­ti di un comune stack

Uno stack tra­di­zio­na­le alla base dei siti e delle ap­pli­ca­zio­ni web è composto, come detto in pre­ce­den­za, da quattro com­po­nen­ti software, cioè il sistema operativo, il server web, il database e un in­ter­pre­te di script, a cui si ag­giun­go­no i framework, altri linguaggi di pro­gram­ma­zio­ne, server proxy o altri programmi di analisi. I com­po­nen­ti di base sono:

Il sistema operativo

Il sistema operativo è l’in­ter­fac­cia prin­ci­pa­le tra l’hardware del server (pro­ces­so­re, RAM, spazio web) e gli altri com­po­nen­ti software uti­liz­za­ti. Per essere precisi, il sistema operativo si appoggia alle risorse hardware per garantire la fun­zio­na­li­tà delle singole ap­pli­ca­zio­ni, so­prat­tut­to del server web. Uno stack si può basare su diverse di­stri­bu­zio­ni di Linux, Windows, Unix e Mac OS.

Server web

Il server web è un software in­stal­la­to sul sistema operativo che consegna i documenti al client ri­chie­den­te. La richiesta del client viene trasmessa al web server grazie al pro­to­col­lo di tra­sfe­ri­men­to HTTP e nel caso si tratti di contenuti statici come file HTML o immagini, il server web elabora di­ret­ta­men­te questa richiesta, con­se­gnan­do al client i dati richiesti. Invece i contenuti dinamici possono essere ri­pro­dot­ti solo grazie a database e a script. Tra i web server più uti­liz­za­ti rientrano Apache, Microsoft IIS e nginx.

Database

Nei database sono salvati per­ma­nen­te­men­te e in modo ef­fi­cien­te i dati rilevanti per il sito, così da essere sempre di­spo­ni­bi­li per il server web. Questo genera delle richieste grazie alle esten­sio­ni server, che vengono elaborate dal database e re­sti­tui­te di nuovo alle esten­sio­ni, che a loro volta con­ver­to­no la richiesta in un formato di output adatto come in un file HTML e lo inoltrano al server web. La scelta del database è stret­ta­men­te collegata al server web, oltre che ai linguaggi di pro­gram­ma­zio­ne e di scripting uti­liz­za­ti. Ad esempio sono uti­liz­za­ti spesso Oracle, MySQL e MongoDB.

In­ter­pre­te di script

Senza i linguaggi di scripting, il web server non è in grado di creare siti dinamici e ap­pli­ca­zio­ni web. Gli in­ter­pre­ti di script si applicano sia lato client, quindi dalla parte del browser, sia tramite script lato server, grazie ai quali avvengono dei precisi processi di calcolo per la vi­sua­liz­za­zio­ne delle pagine. L’in­ter­pre­te di script più comune è PHP, ma ci sono anche altre al­ter­na­ti­ve meno diffuse come ASP.NET, Java, Ruby, Perl o Python.

Quali sono i pacchetti software più co­no­sciu­ti?

Nell’ambito dello sviluppo web si sono affermati una serie di stack. Le richieste crescenti delle sempre più complesse ap­pli­ca­zio­ni web in termini di facilità d’uso, stabilità, rag­giun­gi­bi­li­tà e di sca­la­bi­li­tà ha com­por­ta­to un minore utilizzo del classico modello stack. Ja­va­Script ricopre oggi un ruolo im­por­tan­te anche per i server: così la piat­ta­for­ma Ja­va­Script Node.js, che si basa su uno stack, promette una pro­gram­ma­zio­ne facile dei siti con migliori pre­sta­zio­ni, da tempo non più una rarità. Vi pre­sen­tia­mo tre soluzioni par­ti­co­lar­men­te amate e le loro possibili ap­pli­ca­zio­ni:

Un classico: LAMP

LAMP è, come già men­zio­na­to, la piat­ta­for­ma software più co­no­sciu­ta, che ha rap­pre­sen­ta­to per molto tempo il pacchetto ottimale per i progetti web. Presenta:

  • Linux come sistema operativo,
  • Apache come server web,
  • un database MySQL
  • e un in­ter­pre­te di script PHP.

Tutti i com­po­nen­ti usati sono software open source, con licenza libera, mo­di­fi­ca­bi­li fa­cil­men­te secondo le proprie esigenze e anche di­spo­ni­bi­li gra­tui­ta­men­te. Una piat­ta­for­ma LAMP può com­pren­de­re sin dall’inizio anche soluzioni pro­prie­ta­rie simili ed è stata ad esempio uti­liz­za­ta per svi­lup­pa­re MediaWiki, il software di Wikipedia. Il pacchetto LAMP è par­ti­co­lar­men­te adatto per la rea­liz­za­zio­ne di siti dinamici composti da molte pagine. Gli utenti traggono so­prat­tut­to vantaggio dalla grande community, dai tutorial det­ta­glia­ti e dalla pos­si­bi­li­tà di usare il lin­guag­gio PHP e tool potenti come ph­p­MyAd­min.

Con lo sviluppo della tec­no­lo­gia e di nuovi software con codice libero, sono state create diverse varianti LAMP, in cui vengono so­sti­tui­ti alcuni com­po­nen­ti comuni, tra cui quelli più co­no­sciu­ti sono:

  • WAMP (con sistema operativo Windows)
  • MAMP (con sistema operativo Mac OS X)
  • XAMPP (con un sistema operativo qualsiasi, con Perl e PHP come in­ter­pre­ti di script; in più un server FTP mul­ti­piat­ta­for­ma)
  • LAPP (con Post­gre­SQL come database per rea­liz­za­re progetti aziendali).

Dal rilascio di MariaDB, nato dalla scissione dal progetto ori­gi­na­rio MySQL, si utilizza la M per indicare un sistema di database più per­for­man­te. Trovate maggiori in­for­ma­zio­ni sulla piat­ta­for­ma LAMP e su come in­stal­lar­la nel nostro articolo di ap­pro­fon­di­men­to.

La piat­ta­for­ma software di Microsoft: WISA

Al contrario della piat­ta­for­ma LAMP, i cui singoli com­po­nen­ti non sono stati ap­po­si­ta­men­te svi­lup­pa­ti per essere uti­liz­za­ti insieme, la Microsoft ha pro­gram­ma­to quelli della WISA proprio per questo scopo, ga­ran­ten­do così una migliore fun­zio­na­li­tà del pacchetto. Il software usato è ov­via­men­te pro­prie­ta­rio e per questo devono essere ac­qui­sta­te le ri­spet­ti­ve licenze d’uso, ma gli utenti possono anche contare sul supporto della Microsoft. Questa piat­ta­for­ma è composta:

  • dal sistema operativo Windows Server,
  • dal web server Internet In­for­ma­tion Services (IIS),
  • dal sistema di database re­la­zio­na­le SQL Server,
  • e dalla libreria del lin­guag­gio di pro­gram­ma­zio­ne ASP.NET.

Grazie alla libreria di ASP.NET si possono pro­gram­ma­re siti con Visual C# o Visual Basic.NET, che possono essere eseguiti di­ret­ta­men­te dal sistema grazie ad un com­pi­la­to­re. WISA non prevede perciò l’uso di un in­ter­pre­te di script e presenta per questo delle pre­sta­zio­ni migliori rispetto a piat­ta­for­me simili. La piat­ta­for­ma software di Microsoft è una buona soluzione per progetti complessi, che si con­trad­di­stin­guo­no per l’alto numero di vi­si­ta­to­ri e di accessi.

La struttura moderna per ap­pli­ca­zio­ni web semplici: MEAN

Diversa è la piat­ta­for­ma software MEAN: per via delle sue com­po­nen­ti non sono necessari diversi linguaggi di pro­gram­ma­zio­ne per il server (come PHP) e per il client (come Ja­va­Script), visto che tutti gli elementi di questo pacchetto sup­por­ta­no Ja­va­Script. Inoltre il sistema operativo e il web server si collocano in secondo piano. I com­po­nen­ti di MEAN sono:

  • il database NoSQL MongoDB,
  • il framework per ap­pli­ca­zio­ni web lato server Express.js,
  • il framework front end lato client AngularJS
  • e la piat­ta­for­ma Node.js basata sull’ambiente di runtime di Ja­va­Script.

Questo stack consente un processo di sviluppo no­te­vol­men­te sem­pli­fi­ca­to e ac­ce­le­ra­to, oltre che una buona sca­la­bi­li­tà del progetto. Inoltre è possibile rea­liz­za­re in modo ottimale le ap­pli­ca­zio­ni web semplici lato client o le app per i di­spo­si­ti­vi mobili, grazie alla tra­smis­sio­ne dei dati in formato JSON. Anche per lo stack MEAN ci sono diverse varianti come MEEN (con Ember.js come framework front end) o MERN (con React.js come framework front end). Un esempio di ap­pli­ca­zio­ne dello stack MEAN è la piat­ta­for­ma Ja­va­Script Meteor.

Come scegliere lo stack più adatto

La scelta della piat­ta­for­ma software con il migliore ambiente di sviluppo e di runtime dipende da diversi fattori. Gli stack basati su Ja­va­Script sono prima di tutto adatti per la rea­liz­za­zio­ne di ap­pli­ca­zio­ni semplici, mentre quelli classici, che si basano su PHP, Python o Perl pre­sen­ta­no dei chiari vantaggi nella creazione di siti più complessi. I linguaggi di pro­gram­ma­zio­ne sono spesso decisivi per la scelta, con­si­de­ran­do che ge­ne­ral­men­te si ottengono dei migliori risultati con uno stack basato su linguaggi di scripting e di pro­gram­ma­zio­ne co­no­sciu­ti.

Ov­via­men­te bisogna anche tenere conto delle dif­fe­ren­ze tecniche dell’ambiente software per quanto riguarda la per­for­man­ce e la stabilità. È ne­ces­sa­rio anche prendere in con­si­de­ra­zio­ne l’uso di com­po­nen­ti al­ter­na­ti­vi non citati, come ad esempio il web server nginx nel caso di progetti con un alto numero di accessi. È chiaro, dalla presenza di in­nu­me­re­vo­li varianti di stack, che non esiste una soluzione uni­ver­sa­le.

Vai al menu prin­ci­pa­le