Che cos'è l'elaborazione serverless?
L'elaborazione serverless è un modello di sviluppo di applicazioni che rende possibile creare e distribuire applicazioni su un'infrastruttura server gestita da terze parti. Tutte le applicazioni richiedono l'esecuzione di server. Tuttavia, nel modello serverless, un fornitore di servizi cloud gestisce il lavoro di routine; fornisce, ridimensiona e mantiene l'infrastruttura sottostante. Il fornitore di servizi cloud gestisce diverse attività, come la gestione del sistema operativo, le patch di sicurezza, la gestione dei file system e della capacità, il bilanciamento del carico, il monitoraggio e la registrazione. Di conseguenza, gli sviluppatori possono concentrarsi sulla progettazione delle applicazioni e continuare a ricevere i vantaggi di un'infrastruttura server economica, efficiente e altamente scalabile.
Perché l'elaborazione serverless è importante?
Agli albori di Internet, chiunque volesse eseguire un'applicazione Web doveva acquistare e mantenere server fisici. Le aziende in genere archiviano i propri dispositivi server fisici in data center on-premise o strutture di co-location. Questo potrebbe essere costoso, poiché la maggior parte delle applicazioni utilizza solo una frazione molto piccola delle risorse hardware del server.
Il modello di cloud computing ha inizialmente risolto questo problema consentendo ai clienti di creare server o istanze virtuali sull'hardware del fornitore di servizi cloud. Tuttavia, i clienti dovevano ancora effettuare il provisioning, configurare, aggiornare e scalare i propri server virtuali.
In risposta a questi problemi, i fornitori di servizi cloud hanno iniziato a offrire tecnologie serverless per aumentare l'agilità e ottimizzare ulteriormente i costi. Con l'elaborazione serverless, gli sviluppatori possono eseguire codice, gestire dati e integrare applicazioni senza preoccuparsi delle attività di gestione dell'infrastruttura.
Ci sono diversi vantaggi dell'adozione del serverless, che descriveremo di seguito.
Maggiore produttività degli sviluppatori
I tuoi team di sviluppo possono concentrarsi sulla creazione di applicazioni anziché sulla loro configurazione. I costi operativi inferiori consentono alle applicazioni di arrivare più rapidamente sul mercato. I tuoi sviluppatori possono rispondere al feedback dei clienti e rilasciare frequentemente modifiche al codice dell'applicazione.
Scalabilità efficiente
I fornitori di servizi cloud forniscono una funzionalità di dimensionamento automatico nei loro ambienti serverless. Le tue applicazioni serverless si dimensionano automaticamente da zero al picco della domanda. I tuoi sviluppatori non devono pensare all'utilizzo durante la scrittura del codice.
Riduci i costi
Paghi solo per la CPU, la memoria e le altre risorse di calcolo necessarie all'esecuzione del codice. Non paghi nulla per le risorse inutilizzate. Questo modello di fatturazione pay-for-value garantisce un utilizzo ottimale delle risorse e l'assenza di sprechi dovuti a forniture eccessive.
Quali sono i casi d’uso dell'elaborazione serverless?
Esistono molte applicazioni e sistemi in cui l'elaborazione serverless può essere utile.
Sviluppo di applicazioni stateless
L'architettura serverless è ideale per applicazioni stateless asincrone che non salvano i dati dei client tra le sessioni. Esempi di applicazioni serverless includono chatbot, pianificatori di attività e applicazioni IoT. Ad esempio, Coca-Cola ha utilizzato AWS per sviluppare un'app mobile per versare bevande per il suo distributore di bevande touchless in soli 100 giorni. Coca-Cola ha utilizzato elementi costitutivi serverless come AWS Lambda.
Elaborazione in batch
Le applicazioni di elaborazione in batch completano periodicamente processi di dati ripetitivi e ad alto volume come backup, filtraggio e ordinamento. L'elaborazione in batch è ideale per ambienti serverless che scalano in modo massiccio quando necessario e non costano nulla quando non vengono utilizzati.
Ad esempio, Liberty Mutual ha utilizzato AWS per consolidare le sue diverse linee di business globali in un sistema centralizzato chiamato Financial Central Services (FCS). Ha utilizzato AWS Step Functions per creare un'applicazione serverless in grado di elaborare 100 milioni di transazioni in un'unica esecuzione alla fine di ogni mese.
Analisi dei dati in tempo reale
L'elaborazione serverless è ideale per i motori di streaming in tempo reale per migliorare la reattività dei clienti. Le app serverless sono in grado di gestire grandi quantità di dati in streaming da centinaia di migliaia di origini con bassa latenza e larghezza di banda elevata. Di conseguenza, puoi ottenere informazioni in pochi secondi anziché in minuti.
Ad esempio, Genentech utilizza la funzionalità serverless di AWS per l'analisi dei dati clinici. I ricercatori possono ora completare attività in poche ore che prima richiedevano settimane.
Automazione dei processi aziendali
È possibile utilizzare l'approccio serverless per automatizzare i processi aziendali noiosi e dispendiosi in termini di tempo. I tuoi sviluppatori possono concentrarsi sulla traduzione della logica aziendale in codice applicativo senza dover gestire i server.
Ad esempio, Taco Bell ha utilizzato AWS per creare applicazioni serverless per eseguire la logica aziendale e le trasformazioni dei dati. Questi hanno fornito informazioni in tempo reale su menu e ristoranti ai partner di consegna di Taco Bell. Gli investimenti serverless hanno aiutato il marchio a cambiare rapidamente per soddisfare la domanda di consegne da parte dei consumatori durante la pandemia di COVID-19.
Come funziona l'architettura serverless?
Qualsiasi applicazione ha due ampie aree di funzionalità: il front-end e il back-end. Il front-end include tutto ciò con cui gli utenti finali interagiscono, come il layout visivo, i pulsanti e il testo visualizzato. Il back-end include funzionalità a cui gli utenti non possono accedere, come l'archiviazione e l'elaborazione dei dati.
Ad esempio, considera un'app per la prenotazione di voli sul tuo dispositivo mobile. Il front-end è l'interfaccia utente dell'applicazione, dove puoi scegliere le date e richiedere un elenco dei voli disponibili. La tua richiesta va al backend, che cerca nel database e restituisce informazioni su tutti i voli disponibili nel periodo di tempo scelto. Il diagramma seguente mostra l'architettura tradizionale.
Nell'architettura serverless, gli sviluppatori distribuiscono il codice di backend nell'infrastruttura cloud fornita dai fornitori di servizi cloud. La base delle applicazioni serverless è l'architettura basata su eventi (EDA), un modello di architettura moderno sviluppato per piccoli servizi disaccoppiati che pubblicano, consumano o instradano eventi. Gli eventi sono messaggi inviati tra servizi.
In tal modo è più facile dimensionare, aggiornare e implementare in modo indipendente i componenti separati di un sistema. Il diagramma seguente mostra un microservizio serverless basato su eventi.
Successivamente, forniamo una panoramica di come funziona l'architettura serverless.
Funzioni
Le funzioni sono piccole unità di codice discrete che eseguono una singola operazione. Una funzione richiede risorse di calcolo come CPU e memoria per funzionare. Il fornitore di servizi cloud alloca queste risorse solo quando necessario. Crea un ambiente temporaneo per l'esecuzione della funzione serverless.
Alcuni eventi possono attivare o far funzionare l'unità di codice. Ad esempio, un evento può essere eseguito se un utente seleziona un pulsante in un'applicazione. La richiesta attiverebbe una funzione che legge il database e restituisce le informazioni pertinenti all'utente.
Richieste di dimensionamento
Maggiore è il numero di richieste ricevute da una funzione, maggiori sono le risorse necessarie per l'esecuzione. La piattaforma serverless monitora il carico e continua a allocare le risorse cloud su una scala quasi infinita. Una singola funzione serverless può quindi gestire una o un milione di richieste senza modifiche al codice.
Una volta che una funzione smette di ricevere richieste, il fornitore di servizi cloud smette di funzionare l'infrastruttura associata per risparmiare sui costi. Alloca le risorse solo quando necessario. Se non viene utilizzato, l'ambiente può dimensionare fino a zero.
Cosa sono i tipi di architettura serverless?
Nell'architettura serverless, il fornitore di servizi cloud gestisce diverse attività di back-end di piccole e grandi dimensioni per la tua applicazione. Puoi distribuire codice personalizzato; il fornitore di servizi cloud allocherà dinamicamente le risorse ogni volta che il codice viene eseguito. La piattaforma cloud può anche fornire funzionalità di back-end che puoi utilizzare direttamente senza scrivere codice da zero.
Di seguito spieghiamo entrambi i tipi di architetture serverless.
Function as a service
Function as a service (FaaS) è un'architettura serverless che gli sviluppatori possono utilizzare per scrivere funzioni di back-end personalizzate e distribuire il codice della funzione direttamente nell'infrastruttura cloud. Quando viene chiamata una funzione, il fornitore di servizi cloud esegue la funzione su un server attivo esistente o avvia un nuovo server, se necessario. Tali funzioni sono chiamate funzioni serverless perché il loro processo di esecuzione è astratto rispetto agli sviluppatori. Gli sviluppatori possono scrivere e distribuire codice senza preoccuparsi di come e dove viene eseguito.
Backend as a service
Backend as a service (BaaS) offre agli sviluppatori l'accesso alle funzioni di backend utilizzando un'API. Le API sono meccanismi che consentono a due componenti software di comunicare tra loro usando una serie di definizioni e protocolli.
Nel loro ambiente serverless, i fornitori di servizi cloud offrono l'accesso basato su API a crittografia, autenticazione e database accessibili dal cloud aggiuntivi. Possono anche fornire l'accesso ad altri servizi e applicazioni di terze parti. Queste funzioni serverless sono prescritte e possono essere richiamate direttamente nel codice.
Cos’è una strategia serverless-first?
L'architettura serverless si riconosce dai seguenti principi:
- Nessuna gestione di server
- Servizi pay-for-value
- DIMENSIONAMENTO CONTINUO
- Tolleranza ai guasti integrata
Una strategia serverless-first dà priorità a questi principi in tutte le applicazioni, le operazioni e i cicli di sviluppo di un'organizzazione. Uno sviluppatore serverless o un'azienda incentrata sul serverless lavora per creare utilizzando prima di tutto questi principi.
Ma l'elaborazione serverless non è adatta a tutti i carichi di lavoro. Puoi incorporare tecnologie non serverless come architettura di supporto in base alle tue esigenze.
L'architettura serverless è sicura?
La maggior parte dei fornitori di cloud adotta un modello di sicurezza condiviso. Il fornitore di servizi cloud è responsabile della sicurezza del cloud, mentre i clienti sono responsabili della sicurezza nel cloud.
Con il serverless, il fornitore di servizi cloud gestisce molti livelli di infrastruttura aggiuntivi, inclusi sistemi operativi e reti. I clienti devono seguire i principi del privilegio minimo e le migliori pratiche per proteggere un'applicazione serverless.
Ad esempio, nelle soluzioni AWS FaaS come AWS Lambda, puoi proteggere ogni risorsa con autorizzazioni granulari utilizzando strumenti familiari come il Centro identità AWS IAM. Questo può aiutarti a fornire una solida posizione di sicurezza per le tue applicazioni serverless.
In che modo AWS può supportare i tuoi requisiti di elaborazione serverless?
Amazon Web Services (AWS) fornisce numerose soluzioni per il supporto delle tue operazioni serverless.
Il serverless su AWS offre tecnologie che puoi utilizzare per eseguire codice, gestire dati e integrare applicazioni senza gestire i server. Le tecnologie serverless di AWS sono caratterizzate da dimensionamento automatico, alta disponibilità integrata e un modello di fatturazione con pagamento in base al consumo per aumentare l'agilità e ottimizzare i costi. Queste tecnologie eliminano, tra l’altro, i processi di gestione dell'infrastruttura come il provisioning e il patching delle capacità, affinché tu possa concentrarti sulla scrittura del codice al servizio dei tuoi clienti.
Le applicazioni serverless iniziano con AWS Lambda, un servizio di elaborazione basato su eventi integrato nativamente con più di 200 servizi AWS. Abbiamo anche un gran numero di servizi di supporto aggiuntivi, come:
- AWS Fargate per generare applicazioni serverless compatibili con Amazon Elastic Container Service (Amazon ECS) e Amazon Elastic Kubernetes Service (Amazon EKS)
- Amazon Aurora serverless per creare database serverless che scalano automaticamente la capacità in base alle esigenze dell'applicazione
- AWS AppSync per accelerare lo sviluppo dell'applicazione con API scalabili GraphQL
Inizia a utilizzare il serverless su AWS creando un account oggi stesso.
Fasi successive su AWS
Ottieni accesso istantaneo al Piano gratuito di AWS.