Cosa è Jamstack?
Jamstack – dove “JAM” sta per Javascript, API e Markup – si riferisce a una moderna architettura di sviluppo utilizzata per costruire siti web (mediante un generatore di siti statici).
The JAMstack is a modern web development architecture based on client-side JavaScript, reusable APIs, and prebuilt Markup.
Per semplificare molto, nella speranza di esser più comprensibile, con il termine Jamstack sostanzialmente ci riferiamo a dei particolari siti web che, sebbene siano costruiti dinamicamente in fase di sviluppo, prima del loro rilascio vengono convertiti (tramite un apposito programma software) in siti cosiddetti “statici”.
Il software custom, implementato dallo sviluppatore (per programmare il generatore), serve quindi esclusivamente in fase di costruzione e di
generazione del sito: è necessario averlo per strutturare le varie parti, creare una navigazione, non ripetere la scrittura delle parti comuni,
rendere consistente il sito, ‘testarlo’ in fase di sviluppo, e quant’altro ancora.
Tale software può anche leggere una struttura dati, un database, interrogare delle API su un server, e quindi generare sito e pagine conseguentemente ai dati letti.
Una volta costruito e fatto il rilascio (deployment), il nostro sito avrà quindi già tutte le pagine HTML generate correttamente e pronte per esser servite via web all’utente che lo naviga, senza necessità di fare altre trasformazioni in real-time (e perciò senza necessità di utilizzare altro software per la fase on-line).
È l’esatto opposto di come funzionano i siti dinamici. Per esempio, quelli dotati di un CMS tipo Wordpress, Drupal, Umbraco, ecc.: in questi, ogni volta che l’utente richiede una pagina, un preprocessore lancia il software (PHP, C#, ..,) della piattaforma, interroga un database, recupera i dati necessari e li trasforma, unisce tutti i vari ‘pezzetti’, e infine genera la pagina e la serve via web.
Quali sono i vantaggi di un sito Jamstack?
Qualcuno lo avrete già intuito, ecco un elenco tra più importanti:
- Velocità. Non si tratta solo di fornire un’esperienza migliore al visitatore: quando un sito è veloce, statisticamente vengono viste più pagine.
- Affidabilità. Non avendo da eseguire software per generare pagine, né da fare richieste al database, i punti di guasto sono quasi praticamente azzerati (e con loro i classici ‘500: server error’). Nessun episodio di down del sito, per esempio, se il database dovesse andare offline, o a causa di un aggiornamento incompatibile con il CMS.
- High availability. A parità di server, un sito statico sopporta molte più richieste al secondo (nell’ordine delle decine di volte, se non centinaia). Se ancora non fosse sufficiente, l’intero sito può essere messo in una CDN con vari host dislocati anche in differenti aree geografiche.
- Scalabilità. Per compensare qualunque picco di traffico, il sito può essere agevolmente caricato su più server in replica; oppure ancor più semplicemente, come già detto, su una CDN.
- Sicurezza. Quasi tutte le più comuni minacce per la sicurezza di server, dati e software (tipicamente: intrusioni o manomissioni) sono rimosse. A parte quello di sistema del server, nessun altro software (o database) viene coinvolto in fase di richiesta delle pagine.
- SEO (Search Engine Optimization). I motori di ricerca (Google, sopra tutti) premiano i siti veloci. Non meno importante: grande libertà di personalizzazione nella configurazione di tag, attributi, codici e metadati, permettendoci quindi di fare praticamente tutto ciò che sia necessario per una corretta ottimizzazione.
- Alto livello di personalizzazione. Ampia libertà nella strutturazione e nell’aspetto di ogni singola pagina; nessun vincolo imposto dai template dei CMS.
- Manutenzione e hosting. Minor costo per la manutenzione e per i backup. Minore anche la potenza necessaria ‘minima’ richiesta per il server di hosting.
Quali sono, invece, i punti a sfavore?
Se siete arrivati a leggere fin qui, avrete probabilmente già intuito anche questi.
- Impossibilità per il sito, ovviamente, di essere dinamico. Per dinamico, intendiamo anche qui la capacità di elaborare, generare o immagazzinare dati in tempo reale a livello server (a livello client è comunque sempre possibile fare delle elaborazioni tramite Javascript). Quindi, niente ricerca sui dati o generazione di pagine al volo, a meno che non costruiamo un sistema ibrido: per esempio, implementando alcune sezioni del sito dinamiche, oppure interrogando un API server, oppure avvalendosi di servizi di terze parti già esistenti (soluzione adottata spesso per siti e-commerce in architettura Jamstack).
- Aggiornamenti del sito. Per ogni nuovo aggiornamento (eg. modifica di testi, immagini, creazione di nuovi articoli) dobbiamo aprire il codice, attuare le modifiche e, una volta finito, far partire la rigenerazione completa del sito e ripubblicarlo. Qui, però, dipende anche dalle necessità. Chi non ha bisogno di aggiornamenti frequenti, può chiedere al tecnico sviluppatore di aggiornare il sito (tali attività sono normalmente incluse nei pacchetti di ore di assistenza previsti). Altrimenti, è altresì possibile prevedere l’installazione di un Headless CMS, in modo che gli aggiornamenti delle pagine e degli articoli possano essere fatti in autonomia dal cliente (la procedura di rigenerazione e ripubblicazione del sito sarà lanciata automaticamente dal sistema).
- Assistenza. Se i costi di manutenzione rimangono contenuti, quelli per l’assistenza (vedi quanto scritto al punto precedente) possono risultare più alti. E qui mi ripeto: dipende dalle tipologie del sito, dai singoli casi e/o dalle necessità.
E il nuovo sito Glove ICT?
Sì, indovinato: lo abbiamo sviluppato in architettura Jamstack. In questo specifico caso, il sito è stato costruito e generato con un software scritto in Ruby.
Non vi passo il link al sito, per farvelo vedere, perché il sito è questo stesso che state visitando.
Vi passo invece, come ulteriore esempio, il link a un altro sito (BENZAC, un prodotto leader nel proprio settore), sviluppato da noi alcuni anni fa, sempre in architettura Jamstack.
Oltre che per la velocità, per la sicurezza e per il SEO, per Benzac la scelta del Jamstack è stata necessaria, in particolar modo, per l’affidabilità e l’high availability: il sito deve funzionare sempre. Anche – o forse sarebbe meglio dire soprattutto – durante i picchi di richieste, generati dalle campagne marketing web/social e dagli spot pubblicitari nelle TV nazionali.