Sebbene sia PaaS che l'elaborazione serverless non implichino la gestione del backend da parte dello sviluppatore, sono svariati i elementi che distinguono i due modelli, tra cui la scalabilità, le modalità di tariffazione e la capacità di distribuzione sul perimetro di rete.
Dopo aver letto questo articolo sarai in grado di:
Argomenti correlati
Serverless e container a confronto
Serverless e Javascript
Function as a Service (FaaS)
Edge computing
Platform as a Service (PaaS)
Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.
Copia link dell'articolo
Poiché sia l'architettura di backend del serverless computing che quella del Platform-as-a-Service (PaaS) mantengono l'intero backend invisibile agli sviluppatori, in un certo modo sono simili. Tuttavia, diverse differenze significative separano le due tipologie di architettura e la maggior parte dei casi d'uso funzionerà meglio con una o l'altra, ma non con entrambe. Le principali differenze tra PaaS e serverless riguardano scalabilità, tariffe, tempi di avvio, strumenti e capacità di implementazione al perimetro di rete.
Le applicazioni serverless possono essere scalate istantaneamente, automaticamente e su richiesta, senza alcuna configurazione aggiuntiva da parte dello sviluppatore o del fornitore. Sono scalabili per natura e per definizione. Al contrario, anche se gli sviluppatori possono programmare le applicazioni ospitate su PaaS per adattarsi dinamicamente alla domanda degli utenti, la scalabilità non è una caratteristica intrinseca dell'architettura PaaS, e gli sviluppatori dovranno elaborare delle previsioni per dimensionare correttamente le risorse.
L'elaborazione serverless può essere paragonata all'aprire un rubinetto, dove l'acqua che fuoriesce rappresenta la potenza di calcolo. In una casa, un rubinetto può essere aperto in qualsiasi momento ed erogare tutta l'acqua di cui si ha bisogno. PaaS è più simile a un distributore d'acqua e a un servizio a domicilio di consegna di casse d'acqua. Con PaaS è possibile ottenere tutta l'acqua da bere che si vuole, ma il processo non è semplice come aprire il rubinetto. il consumatore deve infatti chiedere al fornitore di portargliene di più se la domanda aumenta. In entrambi gli scenari, c'è qualcun altro che si occupa del "backend" – purifica l'acqua, la trasporta a casa, ecc. – ma solo l'acqua del rubinetto può essere "scalata" con precisione, su richiesta e in tempo reale.
Un'architettura serverless è in grado di scalare rapidamente creando nuove istanze di funzioni applicative su richiesta. Inoltre, si "rimpicciolisce" velocemente spegnendo le funzioni non più necessarie o quando sono rimaste in esecuzione per un periodo di tempo predefinito. Un'applicazione web serverless è in grado di ridimensionarsi fino all'inattività completa, e quindi riavviarsi in risposta a un evento in pochi secondi, o addirittura millisecondi. Le applicazioni basate su PaaS non sono in grado di scalare o ridimensionarsi così velocemente o con questi ordini di grandezza.
Per continuare con la metafora dell'acqua, i consumatori che utilizzano l'acqua del rubinetto pagano esattamente la quantità di acqua che consumano. Allo stesso modo, la fatturazione serverless è estremamente precisa: gli sviluppatori pagano solo per ciò che utilizzano. Alcuni fornitori serverless addebitano agli sviluppatori solo il tempo preciso in cui le loro funzioni sono in esecuzione, calcolato fino a frazioni di secondo per ogni singola istanza di ciascuna funzione. Altri provider applicano tariffe in base al numero delle richieste.
Anche i consumatori che utilizzano un distributore o che si fanno recapitare a casa le casse d'acqua pagano per ciò che usano, ma pagano a cassa, non a centilitro. Allo stesso modo, alcuni fornitori PaaS addebitano agli sviluppatori solo ciò che la loro applicazione effettivamente utilizza. Tuttavia, la fatturazione non è precisa come nel caso di serverless. Altri fornitori PaaS applicano una tariffa mensile fissa per i loro servizi. Di solito, gli sviluppatori possono personalizzare la potenza di calcolo che acquistano. Tuttavia, questa decisione viene presa in anticipo e non è adattabile in tempo reale agli aumenti e alle diminuzioni dell'utilizzo.
Questa differenza non implica necessariamente che l'architettura serverless sia sempre più conveniente. Tenere un rubinetto costantemente aperto, alla lunga, è una soluzione terribilmente costosa. Allo stesso modo, le applicazioni con un volume di utilizzo grande e costante, con poche oscillazioni, possono diventare estremamente costose da eseguire in un ambiente di elaborazione serverless.
Come descritto sopra, le applicazioni serverless possono essere attivate quasi istantaneamente, non appena un evento attiva una funzione dell'applicazione. Le applicazioni basate su PaaS possono essere operative rapidamente, ma non sono leggere come le applicazioni serverless e richiedono più tempo per avviarsi. Per evitare problemi di latenza per l'utente, perlomeno alcune funzioni delle applicazioni PaaS devono girare sempre o quasi sempre.
In generale, i fornitori PaaS forniscono agli sviluppatori una quantità maggiore di strumenti per creare e gestire le loro applicazioni, inclusi tool specifici per il collaudo e il debug. Poiché invece le applicazioni serverless non girano su macchine specifiche, virtuali o di altro tipo, e le funzioni serverless devono girare sempre allo stesso modo, i fornitori serverless possono fornire alcuni tool, ma non forniscono un ambiente completo per la creazione di un'applicazione e il suo collaudo.
Il codice serverless non gira su server specifici e può essere eseguito in qualunque punto di Internet. Questo consente di distribuire le applicazioni serverless molto vicino agli utenti finali sul perimetro di rete, riducendo notevolmente la latenza. I service worker e Cloudflare Workers sono esempi di funzioni serverless che girano in prossimità dell'utente (vedi Come funziona JavaScript serverless?).
Dal punto di vista dello sviluppatore, non ci sono server in PaaS. Tuttavia, PaaS è ancora diverso dall'elaborazione serverless per quanto concerne il luogo in cui risiede il codice. I fornitori PaaS possono appoggiarsi all'IaaS (Infrastructure-as-a-Service) di un altro fornitore, oppure possono disporre dei propri datacenter fisici. Il risultato è che le applicazioni create su una piattaforma cloud verranno probabilmente eseguite solo su alcune macchine designate, impedendo agli sviluppatori di ottimizzare le prestazioni della loro applicazione mediante l'esecuzione del codice sul perimetro.