Avete mai sentito parlare di serverless computing? Indovinate un po’… non è affatto serverless. Automatizza semplicemente l’allocazione dei server di back-end necessari per completare un’attività particolare. Oggi disponiamo di dozzine di tipi di sistemi serverless, dai database ai container fino ai sistemi di sviluppo più tradizionali. Mantengono tutti la stessa promessa: fornire scaling verticale e orizzontale automaticamente senza dover configurare i server in anticipo.

Ciò significa che gli sviluppatori non devono indovinare quanti server di archiviazione e di calcolo avviare prima dell’esecuzione delle applicazioni. I sistemi serverless prendono queste decisioni per voi, allocando le risorse di cui avete bisogno durante il runtime e rilasciandole quando non c’è più bisogno.

L’automazione è il vero valore chiave. Non siamo costretti a tentare di capire quante risorse ci serviranno. Scegliere troppe risorse (la maggior parte delle quali ci dimentichiamo di chiudere) comporta un’enorme spesa per il cloud alla fine del mese. Sceglierne troppe poche significa d’altra parte che le nostre applicazioni smetteranno di funzionare poco dopo il lancio.

Personalmente ho lasciato le risorse in esecuzione e mi sono sempre risentito del fatto che i fornitori di servizi cloud costringessero me (un essere umano) a scegliere le risorse di cui avevo bisogno. Non è una questione di “se sbaglierete”, ma di “quanto sbaglierete”.

serverless-1200x385

Ecco perché mi piace il concetto di serverless computing. A meno che un client non abbia una buona padronanza delle risorse necessarie, è una scommessa più sicura optare per nuove applicazioni native del cloud piuttosto che tentare di indovinare la capacità necessaria. Inoltre avete la capacità di crescere e cambiare la capacità in corso e in questo, secondo me, sta il vero valore del serverless.

Come principale risvolto negativo c’è il fatto che il serverless è più costoso delle risorse autoallocate prima del runtime. Tuttavia, questo presuppone che scegliate correttamente una configurazione ottimale che si avvii e si fermi al momento giusto e nella sequenza corretta. Alcuni possono farcela, ma la maggior parte no.

Inoltre, ci sono altri aspetti negativi del serverless che molti non comprendono fino a quando non lo hanno utilizzato. Il serverless è “cloud native” o specifico per un singolo fornitore di cloud pubblico, il che significa che la facile portabilità non è una caratteristica del serverless su qualsiasi provider di cloud pubblico. Esistono inoltre pochi strumenti di gestione e monitoraggio per i sistemi serverless nativi oltre a quelli forniti dal provider di cloud pubblico che li vende.

Il serverless è quindi una di quelle tecnologie che ha chiaramente dei compromessi, ma con la sua maturazione negli ultimi sette anni stiamo assistendo a un chiaro “percorso di valore” per molti carichi di lavoro cloud-native. Detto questo, dipende anche molto da cosa state costruendo e per quale scopo, visto che state scambiando la portabilità per l’automazione dell’allocazione delle risorse e avete meno cose di cui preoccuparvi. In molti degli usi che vedo, il serverless ha senso, ma sono altresì convinto che dipenda ancora molto dal singolo caso.