serverless · cloud · architettura
Serverless cos'è, esattamente
La parola è un termine di marketing che è rimasto, e la prima volta inganna quasi tutti. Serverless non vuol dire che non ci sia un server. Vuol dire che non ne vedi mai uno: non ne scegli la dimensione, non installi i suoi aggiornamenti, non decidi quanti farne girare. Se ne occupa qualcun altro, e a te viene addebitato ciò che il tuo codice ha davvero fatto.
Che cosa toglie davvero
Su un VPS affitti una macchina. Esiste che arrivi qualcuno o no, ne scegli RAM e vCPU, ne aggiorni il kernel e decidi quando aggiungerne una seconda. Ognuna di quelle decisioni è tua, e lo è anche ogni ora della fattura.
Il serverless toglie la macchina come unità di ragionamento. Consegni alla piattaforma un pezzo di codice e un innesco: una richiesta HTTP, un messaggio in una coda, un file che arriva in uno storage. La piattaforma fa in modo che quel codice giri quando l'innesco scatta. Quante copie girano, e su che cosa, non è un tuo problema né una tua decisione.
È tutto qui lo scambio, detto senza giri: cedi il controllo del runtime in cambio del non doverlo mai gestire.
Le due famiglie
Function as a Service è la parte a cui si pensa per prima. Distribuisci una funzione, la piattaforma la esegue per evento, e sparisce. AWS Lambda, Google Cloud Functions e Azure Functions sono gli esempi noti.
I servizi gestiti serverless sono la metà più ampia e meno discussa: database, code, storage a oggetti e ricerca, fatturati a richiesta o a unità di lavoro invece che a istanza provisionata. La maggior parte dei sistemi serverless reali è fatta soprattutto di questo, con una quantità modesta di codice di funzione a tenere insieme i pezzi.
La fatturazione, e perché lo scale to zero è il titolo
Una macchina affittata si paga a tempo. Costa uguale alle tre di notte senza visitatori e nel picco. Il serverless fattura a invocazione più le risorse che quell'invocazione ha consumato mentre girava.
La conseguenza è lo scale to zero: senza traffico non gira nulla e non c'è nulla da pagare. Per un progetto personale, uno strumento interno usato due volte a settimana o un carico a picchi fermo quasi sempre, questo è il vantaggio vero, ed è grosso.
Lo stesso meccanismo lavora al contrario sotto carico. La piattaforma avvia tante copie concorrenti quante gli eventi richiedono, senza che tu configuri un autoscaler, ed è il secondo vantaggio reale.
I vincoli che la presentazione omette
Avvii a freddo. Quando nessuna copia della tua funzione è calda, la prima richiesta paga l'inizializzazione del runtime e delle tue dipendenze prima ancora che il tuo codice parta. Bundle più piccoli e runtime più leggeri lo riducono. I fornitori vendono capacità preriscaldata, che funziona e che annulla in silenzio lo scale to zero, perché preriscaldato significa pagato mentre è fermo.
Assenza di stato. Niente di ciò che tieni in memoria o su disco locale è garantito la volta dopo. Due invocazioni possono finire su istanze diverse, e un'istanza sparisce quando lo decide la piattaforma. Lo stato va in un database o in uno storage a oggetti, sempre.
Limiti di esecuzione. Un'invocazione ha una durata massima e un tetto di memoria. I lavori batch lunghi e tutto ciò che tiene una connessione aperta per ore si adattano male, e toccare il limite non è un avviso ma un fallimento.
Accoppiamento. Il corpo della funzione di solito è portabile. Le forme degli eventi, il modello di identità e i servizi gestiti attorno non lo sono, ed è lì che andarsene dopo costa davvero.
Dove la curva dei costi si incrocia
La fatturazione a invocazione è economica quando la macchina sarebbe stata ferma e cara quando sarebbe stata occupata. Sotto un certo carico stabile, il serverless vince facilmente. Sopra, paghi un sovrapprezzo per unità di lavoro per un'elasticità che non usi più, e un server sempre acceso, anche modesto, costa meno ed è più prevedibile.
La regola onesta è guardare la forma del traffico più che il suo volume. A picchi, occasionale e imprevedibile: vantaggio serverless. Stabile e continuo: vantaggio macchina affittata al mese, e a quel punto il lavoro operativo che ti riprendi è un prezzo giusto per una fattura che smette di sorprendere.
Se il tuo carico risulta dal lato stabile, un VPS è la risposta semplice, e Docker più un po' di disciplina ti restituisce gran parte della riproducibilità che rendeva attraente il serverless all'inizio.
Un server per il lato stabile della curva
Quando il traffico smette di essere a picchi, la fatturazione a invocazione costa più di una macchina che sarebbe stata comunque occupata. DigitalOcean offre VPS e server cloud con controllo root completo, fatturati al mese e non a chiamata.
Scopri DigitalOcean Cloud →Link di affiliazione - sostiene queste guide gratuite.
In breve
Serverless significa che i server sono un problema di qualcun altro, non che non esistano. Guadagni scale to zero, concorrenza automatica e zero patch. Accetti avvii a freddo, assenza di stato, limiti di esecuzione e una fattura che segue l'uso invece del tempo. Si adatta al lavoro a picchi e intermittente, e smette di adattarsi quando il traffico diventa abbastanza stabile perché una macchina affittata sarebbe stata comunque occupata.