Headless is more (parte 1/4)
“Less is more” è il celebre aforisma generalmente attribuito all’architetto Ludwig Mies van der Rohe che sintetizza in tre parole il concetto di minimalismo basato sulla ricerca della perfezione eliminando il superfluo.
L’obiettivo da raggiungere è la realizzazione di un prodotto perfetto per le sue funzioni privo di, talvolta inutili, complessità. Questo concetto, alla base del design moderno, può essere applicato a tutte le discipline che si occupano di progettare e realizzare sistemi complessi.
Con sistema complesso si intende un insieme di elementi variabili e fortemente connessi tra loro, anche nella loro evoluzione temporale. Questa definizione si adatta perfettamente anche allo sviluppo software e, in particolare, ai servizi ed alle piattaforme online, attraverso cui possiamo, ad esempio, cercare ciò che ci interessa, vedere video o restare in contatto con i nostri amici.
La naturale conseguenza dell’enorme diffusione di tali software e della loro crescente complessità è che sempre più, anche in informatica, il concetto di “less is more” sia diventato di cruciale importanza.
Per questo headless, serverless e microservizi sono termini ormai letti molto spesso, ma andiamo a vedere cosa significano e soprattutto perché suscitano così tanto interesse.
TL;DR (“Too long; didn’t read.”)
- La costruzione di un sistema informatico complesso parte dalla realizzazione di sottoinsiemi specifici, comprensibili e privi di ciò che è superfluo: una struttura composta da microservizi nasce per soddisfare questa esigenza.
- La separazione delle differenti funzioni in servizi dedicati e specifici rende le infrastrutture digitali più scalabili e minimizza i single point of failure.
- Non ci si può concentrare solo su un canale (sito) ma è necessario poter coprire tutti i touchpoint oggi disponibili e quelli che verranno in futuro (chat, voice assistants, wearables, iot, altro). I CMS headless sono nati già multicanale.
- I contenuti devono essere disponibili a livello globale: i CMS devono permettere la fruizione immediata dei contenuti a prescindere dal luogo geografico in cui vengono utilizzati. Le API di un CMS headless possono essere distribuite geograficamente (CDN)
- I dati devono essere al sicuro: la crescente quantità di informazioni presente online ed il conseguente aumento di violazioni richiedono infrastrutture sempre più sicure, aggiornate e monitorate. Un CMS headless SaaS fornisce un’infrastruttura sicura e a prova di attacco.
- Non ha più senso investire tempo nel realizzare soluzioni già sviluppate in passato. L’integrazione di microservizi già esistenti e lo sviluppo di funzionalità in ambienti serverless permettono di focalizzarci su ciò che veramente fa la differenza per l’esperienza dell’utente.
Rompere il monolite
Con architettura monolitica si intende quell’approccio allo sviluppo di software che permette di realizzare un’applicazione utilizzando un unico framework e un unico linguaggio di programmazione. In questi applicativi la presentazione dei contenuti, le funzionalità, l’archiviazione dei dati e le logiche di business risiedono nello stesso ambiente.
Uno dei software più utilizzati è il sistema di gestione dei contenuti (CMS), che permette di avere siti dinamici, blog, magazine online, e-commerce. Il CMS è alla base della quasi totalità dei progetti web.
WordPress, il CMS open source più diffuso al mondo, negli anni è passato da un semplice blog engine ad una piattaforma estremamente articolata che viene utilizzata per lo sviluppo di e-commerce, crm, intranet e molto altro.
Questa evoluzione, che permette di costruire con un’unica tecnologia soluzioni estremamente articolate e diverse tra loro, comporta tuttavia degli effetti collaterali: maggiore vulnerabilità ad attacchi hacker, diminuzione delle performance all’aumentare delle feature e difficoltà di manutenzione correttiva ed evolutiva.
Proprio per questi motivi si stanno diffondendo sempre più aziende che forniscono hosting specifici e dedicati a WordPress e ad altre piattaforme opensource, al fine di garantire sostanzialmente sicurezza e performance. L’obiettivo di tali provider è fornire la piattaforma come un servizio (SaaS) gestito, per cui non sia necessario doversi preoccupare della manutenzione.
Un approccio alternativo a quello monolitico consiste nell’utilizzare una struttura a microservizi.
Martin Fowler, informatico tra i massimi esperti in programmazione e padre di diversi pattern progettuali attualmente in uso, afferma che:
Lo stile architetturale a microservizi è un approccio allo sviluppo di una singola applicazione come insieme di piccoli servizi, ciascuno dei quali viene eseguito da un proprio processo e comunica con un meccanismo snello, spesso una HTTP API.
Questi servizi sono costruiti sulla base di funzionalità e possono essere rilasciati in maniera indipendente da sistemi completamente automatizzati. Viene centralizzato solo il minimo per poter gestire tali servizi, che possono essere scritti in linguaggi diversi ed usare sistemi di archiviazione differenti.
Quando si parla di microservizi l’azienda probabilmente più citata come esempio di successo è Netflix.
Nel 2008, in un momento di forte crescita aziendale, Netflix si trovò di fronte ad un imprevisto che provocò grandi preoccupazioni. Il software monolitico, che al tempo risiedeva in un datacenter di proprietà dell’azienda, subì un disservizio totale (down) per 3 giorni di fila. Questo evento portò i vertici dell’azienda a decidere di spostare tutta l’infrastruttura su Amazon aws e ad iniziare un processo di “divisione” del monolite in più servizi specifici.
Nel 2018 Netflix ha raggiunto 137 milioni di iscritti ed una media di visualizzazioni di 1 miliardo di ore a settimana.
Oggi si stima che la piattaforma Netflix sia composta da circa 700 microservizi.
Per esempio esiste un servizio che salva tutti gli show visti dagli utenti, uno che si occupa di scalare i costi mensili dalle carte di credito, uno che fornisce il formato corretto di video per il device utilizzato, un altro invece che propone video basati sullo storico dell’utente usando l’intelligenza artificiale e così via.
I numeri ottenuti da Netflix sono stati possibili anche grazie a questo tipo di architettura che ha permesso di raggiungere un livello di scalabilità altrimenti impossibile.
Non abbiamo ancora finito!
Headless is more (parte 1) — Differenza tra Monolite e Headless technology
Headless is more (parte 2) — CMS Headless e 3 vantaggi chiave
Headless is more (parte 3) — 5 Hosting per sviluppare la Headless technology
Headless is more (parte 4) — 3 scenari di sviluppo
Qui trovi un video che ti può permettere di approfondire alcuni temi presenti nell’articolo.