Unβarchitettura serverless consente agli sviluppatori di concentrarsi sulla logica applicativa senza preoccuparsi della gestione dellβinfrastruttura server. Eβ quindi banalmente del codice che funziona sulla rete senza che lo sviluppatore abbia pensato allβinfrastruttura server dove questo gira. Un esempio Γ¨ il processing di una chiamata API, o di un messaggio SQS/SNS, o il processing di un modifica ad un record in DynamoDB o, in generale, funzioni che vengono eseguite on-demand in risposta a eventi. In un sistema serverless, il cloud provider gestisce automaticamente lβinfrastruttura, inclusi provisioning, scaling e manutenzione dei server: lβunica cosa che conosce lo sviluppatore Γ¨ lβentry point, tutto il resto Γ¨ delegato e trasparente. Gli sviluppatori scrivono .
Esempi di servizi serverless:
- AWS Lambda (Amazon Web Services)
- Azure Functions (Microsoft Azure)
- Google Cloud Functions (Google Cloud)
- IBM Cloud Functions
Unβarchitettura serverless ha molto senso per lβesecuzione di task brevi ed eventi sporadici, mentre per applicazioni a lungo termine o complesse ha senso unβinfrastruttura classica.
Vantaggi e Svantaggi
Vantaggi di Serverless | Svantaggi di Serverless |
---|---|
ScalabilitΓ automatica | Cold start puΓ² aumentare latenza iniziale |
Paghi solo per lβuso | DifficoltΓ a gestire processi complessi e persistenti |
Minima gestione | Legato allβecosistema del provider |
RapiditΓ di sviluppo | Debugging e testing meno immediati |
Alta disponibilitΓ | Limitazioni di runtime e risorse per funzione |
Vantaggi di Server Classico | Svantaggi di Server Classico |
---|---|
Controllo completo sullβambiente | Costi fissi anche in caso di bassa attivitΓ |
Pieno accesso hardware e software | NecessitΓ di manutenzione continua |
Adatto a task complessi e stateless | ScalabilitΓ manuale |
Ecosistema flessibile | Maggior tempo per setup e configurazione |
Esempio
Un esempio comune Γ¨ lβelaborazione di immagini caricate dagli utenti su un sito web. La funzione serverless puΓ² essere attivata dallβevento di caricamento di unβimmagine su un bucket S3 (AWS).
- Unβimmagine viene caricata in un bucket S3.
- AWS Lambda si attiva, ridimensiona lβimmagine a 128x128 pixel e la salva in una cartella βresizedβ allβinterno dello stesso bucket.