In questo periodo, nel mondo IT, si sente spesso nominare la parola “Serverless” (senza server), quindi, mosso dalla curiosità, ho iniziato ad esplorare questa tematica e a capirne i concetti.
Ma cosa vuol dire veramente serverless?
È veramente possibile, ad oggi, fare applicazioni client/server senza la parte server e gestite completamente dal client?
Inizio subito dicendo che questo non è possibile.
In realtà il server c’è “ma non si vede”...
Questo perché “fisicamente” viene gestito da società terze come ad esempio ibm o amazon, a cui viene corrisposta una percentuale in base all’utilizzo, ovvero in base al consumo delle risorse, al numero di chiamate e diversi altri fattori.
Quindi, in poche parole, queste società si fanno carico dei vari costi legati alla gestione e manutenzione dell’hardware e del software di tali server, lasciando all’utilizzatore finale solo l’incombenza della scrittura del codice.
Come si fa a scrivere del codice su piattaforme esterne ed ad utilizzarlo nei nostri client?
La risposta è solo una: Rest-API
Infatti, per ogni “function” — vengono generalmente chiamate così le pagine di codice, da qui anche il nome “faas” ovvero “function-as-a-service” — viene in automatico generata una stringa API che dobbiamo solo richiamare dal nostro client.
Le prestazioni come sono?
Sono identiche a tutti i servizi cloud che già molti di noi utilizzano.
Ovviamente un'architettura server fatta ad-hoc è sempre più performante rispetto una serverless, però ha costi molto più elevati.
E se avessi bisogno di scalare?
Niente di più semplice!
La scalabilità è a carico del provider e chi sviluppa non deve preoccuparsi minimamente di questo aspetto.
I Vantaggi
Quindi in definitiva i vantaggi di un'architettura Serverless sono:
1. Costi ridotti
Si paga solo quello che si usa e tutta la parte di gestione e manutenzione del server è totalmente a carico del provider
2. Scalabilità semplificata
Non ci si dovrà più preoccupare di di qualsivoglia problema di scalabilità, verrà effettuata sempre dal provider
3. Tempistiche commerciali migliorate
Eliminando i tempi di manutenzione/gestione di hardware/software di un server ne consegue che vengono migliorate anche le tempistiche a livello commerciale
4. Sviluppo migliorato
I developer si concentreranno solo sullo sviluppo delle functions che per natura hanno un unico scopo, migliorando quindi la semplicità del codice
5. Provider support
In caso di problemi ogni provider mette a disposizione un proprio gruppo di supporto in modo da risolvere ogni problema nel più breve tempo possibile.
Insomma...non ci resta che iniziare a sperimentare!