Introduzione

Principiante | 10 minuti

Serverless - Analisi approfondite presenta i concetti fondamentali, le architetture di riferimento, le best practice e le attività pratiche per aiutarti a iniziare a costruire applicazioni serverless. Questo è il posto ideale per iniziare se sei un principiante in fatto di serverless. Per i creatori serverless esperti sono disponibili risorse e collegamenti ad argomenti più avanzati.

Cosa significa serverless?

Serverless consente di creare ed eseguire applicazioni e servizi senza dover gestire alcun server. Elimina le attività di gestione delle infrastrutture come il provisioning del server o del cluster, l'applicazione di patch, la manutenzione del sistema operativo e il provisioning della capacità. Possono adattarsi a quasi ogni tipo di applicazione o servizio di back-end; tutte le operazioni necessarie per l'esecuzione e la scalabilità dell'applicazione saranno gestite in automatico.

Le applicazioni serverless sono basate su eventi e in accoppiamento debole tramite API indipendenti dalla tecnologia o messaggistica. Il codice basato su eventi viene eseguito in risposta a un evento, come un cambiamento di stato o una richiesta di endpoint. Le architetture basate su eventi disaccoppiano il codice dallo stato. L'integrazione tra componenti in accoppiamento debole solitamente avviene in modo asincrono tramite messaggistica.

AWS Lambda è un servizio di elaborazione serverless adatto ad architetture basate su eventi. Le funzioni Lambda sono attivate da eventi tramite origini di eventi integrate come Amazon Simple Queue Service (SQS), Amazon Simple Notification Service (SNS) e Amazon Kinesis che possono essere usate per creare integrazioni asincrone. Le funzioni Lambda consumano e producono eventi che altri servizi possono consumare successivamente.

I modelli architetturali serverless usano Lambda con altri servizi gestiti che sono anch'essi serverless. Oltre ai servizi di messaggistica e streaming, le architetture serverless usano servizi gestiti come Amazon API Gateway per la gestione dell'API, Amazon DynamoDB per i datastore e AWS Step Functions per l'orchestrazione. La piattaforma serverless include inoltre una serie di strumenti per sviluppatori tra cui il Serverless Application Model, o SAM, che aiuta a semplificare la distribuzione e il test delle funzioni Lambda e delle applicazioni serverless.

Perché utilizzare il serverless?

Nessuna gestione di server: non è più necessario allocare o gestire server. Non è necessario installare, gestire e amministrare alcun software o runtime.

Scalabilità e flessibilità: le risorse dell'applicazione saranno ricalibrate automaticamente, oppure la capacità sarà ottimizzata in base alle unità necessarie (ad esempio di memoria o di throughput), piuttosto che a unità di singoli server.

Prezzi in base al valore: paga per throughput coerente o durata di esecuzione piuttosto che per unità di server.

Disponibilità elevata automatizzata: il serverless fornisce elevata disponibilità e funzionalità di tolleranza ai guasti. Non è quindi più necessario progettare l'integrazione di queste caratteristiche, perché sono garantite di default dai servizi che eseguono l'applicazione.

Servizi serverless fondamentali

Le applicazioni serverless vengono generalmente create usando servizi completamente gestiti come blocchi predefiniti attraverso livelli di elaborazione, dati, messaggistica e integrazione, streaming e gestione degli utenti e identità. Servizi come AWS Lambda, API Gateway, SQS, SNS, EventBridge o Step Functions sono il nucleo della maggior parte delle applicazioni, supportati come servizi come DynamoDB, S3 o Kinesis.

Categoria
Servizio
Descrizione
Calcolo AWS Lambda AWS Lambda consente di eseguire applicazioni serverless stateless su una piattaforma gestita
che supporta architetture di microservizi, distribuzione e gestione dell'esecuzione
al livello di funzione.
Proxy API API Gateway Amazon API Gateway è un servizio completamente gestito che consente agli sviluppatori di
creare, pubblicare, mantenere, monitorare e proteggere facilmente le API su qualsiasi scala. Offre una
piattaforma completa per la gestione delle API. API Gateway consente di elaborare
centinaia di migliaia di chiamate API simultanee e si occupa della gestione del traffico,
del controllo delle autorizzazioni e degli accessi, del monitoraggio e della gestione della versione dell'API.
Messaggistica e integrazione SNS Amazon SNS è un servizio di messaggistica pub/sub completamente gestito che facilita il
disaccoppiamento e la ricalibrazione dei microservizi, dei sistemi distribuiti e delle applicazioni serverless.
SQS Amazon SQS è un servizio di accodamento dei messaggi completamente gestito che facilita il
disaccoppiamento e la ricalibrazione dei microservizi, dei sistemi distribuiti e delle applicazioni serverless.
EventBridge Amazon EventBridge è un bus di eventi serverless che facilita la connessione tra applicazioni
usando i dati dalle tue applicazioni, le applicazioni Software-as-a-Service (SaaS)
integrate e i servizi AWS.
Orchestrazione Step Functions
AWS Step Functions facilita il coordinamento dei componenti di applicazioni distribuite
e dei microservizi usando flussi di lavoro visivi.

Creiamo!

Di seguito sono presentate alcune risorse per aiutarti a conoscere i nostri servizi serverless fondamentali.

Esecuzione di un "Hello, World!" serverless

Crea una funzione Lambda Hello World usando la console AWS Lambda e impara le nozioni di base su come eseguire il codice senza dover effettuare il provisioning o gestire alcun server.

Inizia il tutorial >>

Creare miniature da immagini caricate

Crea una funzione Lambda richiamata da Amazon S3 ogni volta che viene caricato un file immagine in un bucket S3 e crea automaticamente una miniatura di quell'immagine.

Inizia il tutorial >>

Creazione della tua prima applicazione con AWS Lambda
Creazione di un microservizio semplice

Usa la console Lambda per creare una funzione Lambda e un endpoint Amazon API Gateway per attivare tale funzione.

Inizia il tutorial >>

Creazione di un flusso di lavoro serverless

Scopri come usare AWS Step Functions per progettare ed eseguire un flusso di lavoro serverless che coordini più funzioni AWS Lambda.

Inizia il tutorial >>

Principi fondamentali

Intermedio | 20 minuti

In questa sezione riceverai informazioni sulla progettazione basata su eventi, il principio fondamentale dietro le applicazioni serverless scalabili.

Progettazione basata su eventi

Un'architettura basata su eventi usa gli eventi per attivarsi e comunicare fra servizi disaccoppiati. Un evento è un cambiamento di stato, o un aggiornamento, come un articolo che viene messo nel carrello su un sito Web di e-commerce. Gli eventi possono comunicare lo stato (ad esempio, l'articolo acquistato, il suo prezzo e un indirizzo di consegna) o possono essere identificatori (ad esempio, un avviso di spedizione dell'ordine).

Le architetture basate su eventi hanno tre componenti: produttori dell'evento, router dell'evento e consumatori dell'evento. Un produttore pubblica un evento sul router, che filtra e inoltra gli eventi ai consumatori. I servizi produttore e consumatore vengono disaccoppiati, il che consente di scalarli, aggiornarli e distribuirli indipendentemente.

Per comprendere perché è auspicabile un'architettura basata su eventi, diamo un'occhiata a una chiamata API sincrona.

I clienti sfruttano i tuoi microservizi eseguendo chiamate API HTTP. Amazon API Gateway ospita richieste e risposte HTTP RESTful ai clienti. AWS Lambda contiene la logica di business per elaborare le chiamate API in entrata e sfruttare DynamoDB come storage persistente.

Se richiamato in modo sincrono, API Gateway si aspetta una risposta immediata e ha un timeout di 30 secondi. Con origini di eventi sincrone, se la risposta da Lambda richiede oltre 30 secondi, l'utente avrà la responsabilità di scrivere qualsiasi nuovo tentativo e codice di gestione dell'errore. Per questo motivo, qualsiasi errore o problema di dimensionamento che si verifica con qualsiasi componente a valle rispetto al cliente, come le unità di capacità in lettura/scrittura in DynamoDB, verrà inoltrato di nuovo al cliente per la gestione del codice front-end. Usando modelli asincroni e disaccoppiando questi componenti è possibile creare un sistema più robusto e altamente scalabile.

Inviare notifiche di eventi in fan-out

Scopri come implementare uno scenario di messaggistica in fan-out in cui i messaggi vengono inviati tramite push agli iscritti al servizio, eliminando la necessità di verificare periodicamente o eseguire il polling degli aggiornamenti e attivando l'elaborazione asincrona in parallelo dei messaggi da parte degli iscritti al servizio.

Inizia il tutorial >>

Integrazione di Amazon EventBridge nelle tue applicazioni serverless

Scopri come creare un produttore e un consumatore dell'evento in AWS Lambda e creare una regola per eseguire il routing di eventi.

Inizia il tutorial >>

Passaggio alle architetture basate su eventi
Trigger e origini di eventi

Le funzioni Lambda sono attivate da eventi. Eseguono quindi il codice in risposta al trigger e possono anche generare i loro eventi. Sono disponibili molte opzioni per attivare una funzione Lambda e l'utente ha ampia flessibilità nel creare origini di eventi personalizzate adatte alle specifiche esigenze.

I principali tipi di origini di eventi sono:

  • I datastore, come Amazon S3, Amazon DynamoDB o Amazon Kinesis possono attivare funzioni Lambda. Se archiviano i dati dei quali si desidera monitorare le modifiche, possono essere potenzialmente usati come origine di eventi.
  • Gli endpoint che generano eventi possono richiamare Lambda. Ad esempio, quando si chiede ad Alexa di fare qualcosa, questa genera un evento che attiva una funzione Lambda.
  • Anche i servizi di messaggistica, come Amazon SQS o Amazon SNS possono essere origini di eventi. Ad esempio, quando si invia qualcosa a un argomento SNS, questo può attivare una funzione Lambda.
  • Quando certe azioni si verificano all'interno di un repository, come quando si affida un codice al repository AWS CodeCommit, questo può attivare una funzione Lambda, ad esempio per avviare il processo di costruzione di CI/CD.
Richiamare funzioni AWS Lambda

Scopri tutte le informazioni su come richiamare funzioni AWS Lambda con la nostra guida per gli sviluppatori.

Consulta la guida per gli sviluppatori >>

Scelta di eventi, code, argomenti e flussi nella tua applicazione serverless
Architetture di riferimento

In questa sezione troverai una suite di architetture di riferimento che trattano i casi d'uso delle applicazioni serverless più comuni.

Distribuzione

Una best practice per le distribuzioni in un'architettura di microservizi consiste nel garantire che una modifica non interrompa il contratto di servizio del consumatore. Se il proprietario dell'API apporta una modifica che interrompe il contratto di servizio e il consumatore non è preparato, possono verificarsi errori.

Per comprendere l'impatto dei cambiamenti di distribuzioni, occorre sapere quali consumatori utilizzano la tua API. Le chiavi API possono essere usate per raccogliere i metadati sull'uso e possono anche essere usate come modulo di contatto se una modifica di rottura viene eseguita su un'API.

Quando i consumatori vogliono attenuare l'impatto delle modifiche di rilievo a un'API, questi possono clonare l'API e instradare i consumatori verso un altro sottodominio (ad esempio, v2.my-service.com) per assicurarsi che i consumatori esistenti non vengano coinvolti. Questo approccio consente agli utenti di distribuire solo le nuove modifiche al nuovo contratto di servizio dell'API, ma richiede dei compromessi. I clienti che adottano questo approccio devono conservare due versioni dell'API e dovranno occuparsi della gestione dell'infrastruttura e degli oneri operativi di provisioning.

Distribuzione
Impatto sul cliente
Rollback Fattori del modello di eventi
Velocità di distribuzione
All-at-once All at once (Tutto contemporaneamente) Ridistribuisci la versione precedente Qualsiasi modello di evento a bassa velocità di simultaneità Immediato
Blu/Verde All at once (Tutto contemporaneamente) con un certo livello di test dell'ambiente di produzione in anticipo Ripristina il traffico nell'ambiente precedente Ideale per modelli di eventi asincroni e sincroni con carichi di lavoro di media simultaneità Da minuti a ore di convalida e immediati per i clienti
Canary/Lineare 1-10% tipico spostamento del traffico iniziale, quindi incrementi per fasi o tutti contemporaneamente Ripristina il 100% del traffico alla distribuzione precedente Ideale per carichi di lavoro con elevata simultaneità Da minuti a ore

Altre risorse

Tutorial pratici
Accedi all’inventario completo di tutorial sul serverless e ottieni un apprendimento più pratico.
Visualizza i tutorial pratici >>
Blog sul serveless di AWS
Scopri le ultime notizie e gli aggiornamenti sul serverless sul blog sul serverless di AWS.
Leggi i post del blog >>
Analisi approfondite di categoria
Approfondisci le tecnologie specifiche e ottieni il massimo da AWS Cloud.
Visualizza le analisi approfondite di categoria >>