SlideShare a Scribd company logo
1 of 110
Download to read offline
APPLICAZIONI
SERVERLESS CON AWS
Progettare e sviluppare soluzioni
basate sulle tecnologie serverless
10/2020
IMAGE GOES OVER HERE
Marcello Testi
● Solution Architect (cert. AWS), Scrum Master (cert. SA)
● Agile mindset, Cloud Native tech
● https://www.linkedin.com/in/mtesti/?locale=it_IT
● https://www.sparkfabrik.com/
Oggi
● Panoramica su soluzioni disponibili
● Considerazioni sul design
● Demo su concetti e soluzioni
presentati
Domani
● Hands-on!
● Implementazione pratica di un piccolo
progetto
● Lavoro a gruppi
Non sarà possibile parlare in modo approfondito
di ogni servizio AWS citato
AWS
disclaimer!
Di cosa parleremo…
1. DEFINIZIONE
FaaS/BaaS/IaaS/PaaS
Le promesse di serverless
Use case
2. I PRODOTTI DISPONIBILI
Il mercato serverless
La famiglia AWS serverless
4. STRUMENTI E BEST PRACTICE
Framework e ambienti di sviluppo
Testing
Debug, log, monitoraggio
3. DESIGN E ARCHITETTURA
Strumenti AWS
Performance e Capacity
Deploy e Release
Gestione costi
1. DEFINIZIONE
Serverless
● Competenza del cloud provider: gestire i
server e l'allocazione di risorse in modo
dinamico
● Costi basati su consumo effettivo di risorse
● Scaling, capacity planning e manutenzione
possono essere resi trasparenti rispetto a
sviluppatori e operatori
● Applicazioni serverless possono essere
costituite anche da elementi server-based, o
rappresentare architetture interamente
serverless
Wikipedia
Serverless
● Servizi di backend tariffati in base all'utilizzo
● Per effettuare deployment non serve
occuparsi di infrastruttura
● Applicazioni event-driven ed eseguite in
edge-computing»
Cloudflare
Serverless
● Creare ed eseguire applicazioni senza dover
gestire i server
● Applicazioni = bundle di una o più funzioni
● Caricate su una piattaforma
● Esecuzioni, scaling e billing basati sulla
precisa richiesta di servizio
CNCF
Serverless
● Architettura nativa dei servizi cloud
● Non si deve pensare ai server
● No attività di gestione dell'infrastruttura da
parte dell’utente
● Managed high availability (replica automatica
su AZ multiple)
AWS
Serverless
riguarda prima
di tutto
la UX degli
sviluppatori!
● Efficienza nei costi e nell’utilizzo di risorse
(possibile scaling a ZERO)
● Utilizzo (e pagamento) on-demand
● Automazione per scaling e recovery
“X as-a-Service”
1. DEFINIZIONE
IaaS:
Infrastructure
as a Service
Servizi che permettono tramite API di richiedere
risorse (networking, computing, storage, ecc.) ,
delegando al provider la gestione e la
configurazione dell’infrastruttura
PaaS:
Platform as a
Service
Servizi Cloud che permettono di sviluppare,
eseguire e gestire applicazioni rimuovendo la
complessità di creare e mantenere
l’infrastruttura
BaaS:
Backend as a
Service
Fornisce alle applicazioni servizi di storage e API
integrate per funzionalità comuni
(autenticazione e gestione utenti, notifiche,
integrazione social network…)
FaaS:
Functions as a
Service
Servizio che permette di eseguire e gestire il
codice delle applicazioni come singole funzioni
che sono chiamate attraverso eventi o richieste
HTTP
FaaS:
Functions as a
Service
La più importante differenza operativa tra PaaS e
FaaS è lo scaling: che con FaaS può diventare
completamente trasparente per chi usa il
servizio
Le promesse di serverless
1. DEFINIZIONE
Promesse da
serverless…
● Nessuna gestione dei server
● Scaling automatico in base all’uso
● Nessun addebito per il tempo di non
utilizzo
● (High) availability e tolleranza degli
errori incluse
Promesse da
serverless…
Minori costi fissi: si paga per valore e
servizi effettivamente utilizzati
AWS
Promesse da
serverless…
Focus sullo sviluppo del prodotto e sulle
sue caratteristiche uniche, possibilità di
non preoccuparsi di implementazione (e
costi) dei backing services (BaaS)
AWS
Promesse da
serverless…
Nessun bisogno di gestire server: il
perimetro di release e deployment è più
circoscritto, riducendo la complessità,
aumentando (potenzialmente) la
frequenza di rilasci e il time-to-market
AWS
Serverless non
può
promettere…
Gestione dello stato (memory e storage)
attraverso diverse invocazioni della
stessa funzione
Serverless non
può
promettere…
Esecuzione di comandi di lunga durata
Serverless non
può
promettere…
Tempi di risposta garantiti (cold start
può non essere breve)
Serverless non
può
promettere…
#NoOps: i sistemi non richiedono
amministrazione, ma servono
monitoraggio, debug, configurazione…
Serverless non
può
promettere…
Implementazioni indipendenti dai vendor
Use case
1. DEFINIZIONE
Utilizzo incostante
Architettura event-driven
Architettura microservices con frontend
HTTP-based
Integrazione IoT
Chatbot e interfaccia vocale
Data e media processing
Specialmente in modalità asincrona
2. I PRODOTTI DISPONIBILI
Principali prodotti serverless disponibili
2. I PRODOTTI DISPONIBILI
Serverless (FaaS) vendor
AWS Lambda
Azure Functions
Google Cloud Functions
IBM Cloud Functions
Oracle Cloud Functions
Cloudflare Workers
Alibaba Cloud Function Compute
Fattori nel
confronto di
prodotti
serverless
● Supporto per linguaggi
● Integrazione con altri servizi
(ecosistema vendor)
● Facilità d’uso / Developer UX
● Prestazioni: disponibilità “@Edge” e
tempo di cold-start
Fattori nel
confronto di
prodotti
serverless
● Pricing e billing
○ http://serverlesscalc.com/
○ Da considerare anche free tier
Fattori nel
confronto di
prodotti
serverless
● Limiti
○ Memoria
○ Durata esecuzione
○ Dimensioni payload
Vendor lock-in
● Disponibilità dei linguaggi (oggi
problema abbastanza circoscritto)
● Formati proprietari di eventi - legati a
integrazione con ecosistema vendor
● Sistemi proprietari di packaging e
deploy per le funzioni
Vendor lock-in
Soluzioni? Progetti open - CNCF
● CloudEvents: standard per descrivere
i dati degli eventi
● Vari prodotti da eseguire on-premises
e in-cloud (es. Knative)
CNCF
Famiglia dei prodotti serverless AWS
2. I PRODOTTI DISPONIBILI
Prodotti serverless AWS
Computing
● Lambda
● Lambda@Edge
● Fargate (serverless container)
● Step Functions (orchestrazione di funzioni)
Prodotti serverless AWS
Storage
● S3
Data Store
● DynamoDB (NoSQL)
● Aurora Serverless (RDB)
API
● API Gateway
● AppSync
Prodotti serverless AWS
Stream di dati e messaggi
● SNS
● SQS
● Kinesis
Analytics
● Athena (serverless SQL su dati da S3)
Lambda
2. I PRODOTTI DISPONIBILI
Lambda
● Lambda è l’implementazione FaaS di
AWS
● Esegue on-demand e scala a zero
● Perno di ecosistema serverless AWS,
ma non tutte le implementazioni
serverless passano da Lambda (es.
RDB Aurora Serverless, Fargate per i
container)
Lambda:
sicurezza e
permessi
● IAM per gestire l’accesso a funzioni e
altre risorse (versioni, alias, config) da
parte di utenti o altri servizi AWS
● Execution role: assegnato a funzione
per interagire con altri servizi
○ Di base contiene accesso a
CloudWatch
○ Serve anche per accedere ai servizi
che funzionano da trigger (es. S3)
Lambda:
componenti in
AWS Console
● Lambda (codice, layer)
● Trigger (origini eventi)
● Destinazioni (possono essere diverse,
anche in base a successo esecuzione)
● Versioni e Alias -> performance
● Configurazione (specifica per
elemento selezionato: Lambda,
trigger o destinazione)
Anatomia di
una funzione
Lambda
● Handler: la funzione che viene
eseguita
● Event Object: dati (JSON) dell’evento
che ha invocato la funzione
● Runtime: ambiente in cui viene
eseguita la funzione (es. NodeJS)
● Context: metodi e proprietà disponibili
in base a runtime
Lambda:
configurazione
base
● Scelta runtime
● Indicazione handler
● Assegnazione memoria
● Timeout esecuzione
Lambda: altre
configurazioni
● Concurrency
● Comportamento async
○ Numero retry
○ Età max evento
○ Queue per eventi falliti (SQS)
● Monitoraggio (CloudWatch, X-Ray,
Lambda Insight)
Lambda: altre
configurazioni
● Tag
● Variabili d’ambiente
● Collegamenti a risorse altri servizi
○ File System (EFS)
○ VPC
○ DB Proxy (interazione con RDS)
DynamoDB
2. I PRODOTTI DISPONIBILI
DynamoDB
● NoSQL
● Focus su performance e scalabilità
● Caratteristiche
○ Capacity configurabile o on-demand
○ High Availability
○ Backup on-demand e point-in-time
recovery
○ TTL e eliminazione automatica item
“scaduti”
DynamoDB:
concetti base
● Table, Item, Attribute
● Primary key (partition o partition+sort)
● Schemaless
● Read consistency (eventual vs strong)
● Query vs Scan
API Gateway
2. I PRODOTTI DISPONIBILI
API Gateway
● Servizio managed per creare API HTTP
(RESTful), REST, Websocket
● Permette di delegare:
○ Routing
○ Autenticazione
○ CORS
○ Deployment
○ Mapping risorse (es. tabelle
DynamoDB)
Utenti di API
Gateway
● Sviluppatori di API
○ Configurano API per fornire le
funzionalità richieste
○ Configurano l’accesso
● Sviluppatori di app che consumano
API per accedere a dati e funzionalità
Integrare API
REST con
Lambda
● Lambda proxy integration
○ Richieste inviate direttamente a
Lambda, che provvede a eventuali
trasformazioni e a fornire risposta
● Lambda non-proxy integration
○ Richieste processate da API
Gateway, che provvede anche a
fornire risposta
Strumenti AWS per lo sviluppo serverless
2. I PRODOTTI DISPONIBILI
Applicazioni
Lambda in
Lambda
Console
● Applicazioni: combinazioni di funzioni
Lambda, origini di eventi e altre
risorse usate per eseguire task
● Lambda Console permette di gestire
le applicazioni
● Elenca gli stack CloudFormation che
contengono risorse Lambda
Applicazioni
Lambda in
Lambda
Console
● La sezione di monitoraggio di
un’applicazione aggrega le metriche
per tutte le risorse osservabili dello
stack
Applicazioni
Lambda in
Lambda
Console
● Creare un’applicazione configura
anche i servizi consigliati per gestirne
il ciclo di vita
○ Permessi e Ruoli
○ CodeCommit (git)
○ CloudFormation
○ CodePipeline
○ CodeBuild
Serverless
Application
Model
● Estensione di CloudFormation
● Template YAML che definiscono
risorse e configurazione
● Parametri per gestire input e creare
stack dinamici da stesso template
Serverless
Application
Model
Serverless
Application
Model
● Fornisce sintassi per definire
○ Funzioni (runtime, codice, handler)
○ API endpoint
○ Tabelle DB (DynamoDB)
○ Mapping di origini eventi
○ Policy di accesso / permessi
● In quanto estensione di
CloudFormation, è possibile definire
anche risorse non-serverless
Serverless
Application
Model
● Essendo template, è possibile
effettuare il deployment con
caratteristiche identiche su ambienti
multipli (es. dev, test, prod)
SAM CLI
● Interfaccia da terminale per
○ Build
○ Test
○ Debug
○ Deployment
● Permette anche di eseguire e testare
in locale le funzioni
Serverless
Application
Repository
● Archivio di applicazioni riutilizzabili
● Possono essere condivise
pubblicamente o con specifici
account AWS
● Pacchetti basati su template SAM +
link a codice funzioni (per applicazioni
pubbliche)
3. DESIGN E ARCHITETTURA
Performance e capacity
3. DESIGN E ARCHITETTURA
Concurrency
limits
● Concurrency : FaaS = Horizontal
Scaling : EC2
● Quante istanze della funzione possono
essere eseguite allo stesso tempo
Cold start
● Problema visibile soprattutto in caso
di scaling (rischia di allungare tempi e
ridurre efficacia)
● Soluzioni primitive prevedevano di
“pingare” periodicamente una funzione
per tenerla “calda” (timeout per vita di
una funzione: 10, max 15 minuti)
● AWS offre soluzione (per $)
Cold start
● Fattori che influenzano cold start
○ Linguaggio (ling. compilati
richiedono ambienti più complessi e
più tempo)
○ Dimensioni pacchetto
○ Risorse assegnate (+ risorse, -
tempo)
○ Numero di dipendenze
Ricerca
AWS:
concurrency
● Limite regionale per tutte le funzioni
● Reserved concurrency
○ Riserva slot di esecuzione non
utilizzabili da funzioni unreseved
○ Imposta un limite alla concurrency
della funzione
AWS:
concurrency
● Provisioned concurrency
○ Mitiga il problema del cold-start,
esegue codice di inizializzazione
prima dell’invocazione delle funz.
● Application autoscaling
○ Automatizza la quantità di
provisioned concurrency in base al
carico
AWS: limiti di
configurazione
Lambda
● Esecuzioni contemporanee: base
1000
● Storage: base 75GB (512MB per /tmp)
● Memoria: 128 > 3008MB (64MB incr.)
● Timeout: max 15 minuti
● Payload: 6MB sync / 256KB async
AWS: limiti di
configurazione
Lambda
● Dimensioni pacchetto
○ Zip: 50MB (250MB dopo unzip)
○ Da console: 3MB
Deployment e release
3. DESIGN E ARCHITETTURA
AWS Lambda:
deployment
● Gestione manuale per singole funzioni
con versioni e alias
● Gestione stack (CloudFormation)
come “Applications”
○ Da console
○ Con SAM CLI
○ Con altri framework (es. Serverless
Framework)
AWS Lambda:
deployment
● Con le versioni è possibile taggare un
determinato stato della funzione
(codice, runtime, impostazioni)
● A ogni versione è assegnato un ARN
specifico, referenziato per esempio da
un API Gateway endpoint
AWS Lambda:
deployment
● Con gli alias è possibile referenziare
una versione per mantenere stabile il
riferimento a ARN
● Nel definire un alias si possono
referenziare 2 versioni e quindi
realizzare un deployment graduale
(“traffic shifting”)
AWS Lambda:
application
deployment
● Tramite la console e (via CLI) con SAM
o altri framework è possibile gestire il
deployment di interi stack (funzioni,
trigger/origini di eventi, API endpoint)
basati su CloudFormation
● In questo caso si può usare il
versioning di Lambda ma di solito è
preferibile una gestione del codice
con git o equivalente
AWS Lambda:
best practice
per
deployment
● Usare i layer (max 5 per funzione) per il
codice condiviso tra funzioni (es.
logging)
● Usare integrazione di CodeDeploy
(anche in SAM)
○ Versionamento funzioni
○ Traffic shifting: spostamento
graduale del traffico su nuove
versioni
AWS Lambda:
best practice
per
deployment
● Traffic shifting
○ Canary: 2 fasi. Config intervallo tra
fasi e % traffico spostato nella
prima fase
○ Linear: spostamento a intervalli
regolari. Config durata e % traffico
spostato per ogni intervallo
● Allarmi CloudWatch possono essere
usati per controllare deployment ed
eventualmente fare rollback
Gestione dei costi
3. DESIGN E ARCHITETTURA
Pricing
Lambda
● Numero di richieste
● Durata*memoria utilizzata
● Traffico in/out (stessi prezzi EC2)
○ Traffico gratuito verso servizi AWS
dell’ecosistema serverless: S3, SQS,
DynamoDB, SNS e altri
● Costi per richieste e durata superiori
per provisioned concurrency
Pricing
DynamoDB
● On-demand (RRU/WRU) / Provisioned
(RCU/WCU)
● Storage
● Backup
● Extra per Global Tables e DAX
● Traffico out gratis verso altri servizi
AWS in stessa regione
Pricing API
Gateway
● Numero di richieste
● Tipo di API (HTTP/REST)
● Traffico in/out (stessi prezzi EC2)
Pricing
Lambda
best practice
● Non aumentare oltre il necessario il
timeout per le funzioni
● Ottimizzare al massimo l’uso della
memoria
● Usare CloudWatch per controllare
concurrency, errori/retry e utilizzo
memoria
● Usare AWS Budget
Pricing
serverless
costi da
controllare
● Servizi esterni che possono rallentare
esecuzione
● Cold start
● Retry in caso di errori
● Richieste e traffico API Gateway
● Traffico Lambda verso servizi non
serverless o verso internet
Approfondimento
4. STRUMENTI E BEST PRACTICE
Framework e ambienti di sviluppo
4. STRUMENTI E BEST PRACTICE
Ambiente di
sviluppo
serverless
● Architettura applicazioni serverless è
basata su integrazione tra servizi AWS
● Costruire un ambiente locale di
sviluppo non è banale
● Framework, IDE aiutano a questo
scopo
Framework
● Serverless framework
● Serverless Application Model (SAM)
● Spring Cloud Function
● Altri…
Serverless
framework
● CLI + hosted dashboard
● Rispetto a SAM, aggiunge monitor,
alert, strumenti di supporto ai test
Link
Serverless
framework vs
SAM
● SAM è più opinionato (si intuisce
vedendo la struttura del progetto base
creato)
● Efficacia della rimozione delle risorse
dello stack è migliore in SF (SAM non
rimuove automaticamente S3)
Serverless
framework vs
SAM
● Il supporto community è migliore per
SF (più attività su Github/StackOF, più
disponibilità di esempi e tutorial,
ecosistema plugin)
● SF supporta multi-cloud
● SAM include strumenti per testing
IDE/CLI
● AWS SAM CLI
● AWS CLoud9
● Plugin per Eclipse (Java) e Visual
Studio (.NET)
● Visual Studio Code AWS Toolkit
Testing
4. STRUMENTI E BEST PRACTICE
Testing best
practice
● Scrivere funzioni secondo design
pattern che le rendano facilmente
oggetto di unit test
● Focus su unit test e test di
integrazione
● Non eseguire test di integrazione su
simulazioni locali dei servizi
● Eseguire test end-to-end in cloud,
possibilmente in ambiente creato per
ogni singola esecuzione test
Debug, log, monitoraggio
4. STRUMENTI E BEST PRACTICE
Gestione errori
di una
chiamata
Lambda
● Errori invocazione (prima di
esecuzione): codici errore 4xx-5xx
○ Validità JSON, dimensioni richiesta,
permessi, limite richieste raggiunto
● Errori di funzione (codice Lambda o
runtime): non codici errore ma header
○ Timeout, eccezioni, errori sintassi
Errori invocazione
Errori runtime nodejs
Strumenti per
debugging
locale
● AWS SAM
● Serverless Offline (by Serverless
framework)
● Visual Studio Code AWS Toolkit
Strumenti per
debugging in
cloud
● Postman per chiamate API
● AWS Lambda Console (permette di
scrivere event object di test per le
funzioni)
● AWS CloudWatch (un log group per
ogni Lambda)
Strumenti per
logging
avanzato in
cloud
● AWS X-Ray: dati approfonditi su
eventi/trigger, chiamate API,
esecuzione funzioni, chiamate ai
servizi di destinazione
● Lambda Insights: aggiunge
automaticamente layer a funzioni per
monitoraggio più approfondito tramite
estensione di CloudWatch
THANK YOU!
Applicazioni Serverless con AWS

More Related Content

What's hot

kube-green | Davide Bianchi
kube-green | Davide Bianchikube-green | Davide Bianchi
kube-green | Davide BianchiKCDItaly
 
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...Codemotion
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il MobilePietro Libro
 
CI/CD - Presentazione Introduttiva
CI/CD - Presentazione IntroduttivaCI/CD - Presentazione Introduttiva
CI/CD - Presentazione IntroduttivaMatteo Di Carlo
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld DevicesGWTcon
 
Git e GitHub - L'essenziale
Git e GitHub - L'essenziale Git e GitHub - L'essenziale
Git e GitHub - L'essenziale Gemma Catolino
 
Azure functions deep dive - Giorgio Di Nardo - Codemotion Rome 2017
Azure functions deep dive - Giorgio Di Nardo - Codemotion Rome 2017Azure functions deep dive - Giorgio Di Nardo - Codemotion Rome 2017
Azure functions deep dive - Giorgio Di Nardo - Codemotion Rome 2017Codemotion
 
Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioni
Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioniOpen Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioni
Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioniVendini-Italy
 
Da JavaScript a TypeScript
Da JavaScript a TypeScriptDa JavaScript a TypeScript
Da JavaScript a TypeScriptRoberto Messora
 
Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome...
Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome...Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome...
Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome...Codemotion
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOpsdotnetcode
 
Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker dotnetcode
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkGiovanni Buffa
 
ASP.NET AND Azure Function
ASP.NET AND Azure FunctionASP.NET AND Azure Function
ASP.NET AND Azure FunctionLuca Congiu
 

What's hot (20)

Golang + AngulaJS on GCP
Golang + AngulaJS on GCPGolang + AngulaJS on GCP
Golang + AngulaJS on GCP
 
kube-green | Davide Bianchi
kube-green | Davide Bianchikube-green | Davide Bianchi
kube-green | Davide Bianchi
 
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile
 
CI/CD - Presentazione Introduttiva
CI/CD - Presentazione IntroduttivaCI/CD - Presentazione Introduttiva
CI/CD - Presentazione Introduttiva
 
Git e Git Flow
Git e Git Flow Git e Git Flow
Git e Git Flow
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld Devices
 
Azure dev ops meetup one
Azure dev ops meetup oneAzure dev ops meetup one
Azure dev ops meetup one
 
Xamarin DevOps
Xamarin DevOpsXamarin DevOps
Xamarin DevOps
 
Git e GitHub - L'essenziale
Git e GitHub - L'essenziale Git e GitHub - L'essenziale
Git e GitHub - L'essenziale
 
Azure functions deep dive - Giorgio Di Nardo - Codemotion Rome 2017
Azure functions deep dive - Giorgio Di Nardo - Codemotion Rome 2017Azure functions deep dive - Giorgio Di Nardo - Codemotion Rome 2017
Azure functions deep dive - Giorgio Di Nardo - Codemotion Rome 2017
 
Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioni
Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioniOpen Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioni
Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioni
 
Da JavaScript a TypeScript
Da JavaScript a TypeScriptDa JavaScript a TypeScript
Da JavaScript a TypeScript
 
Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome...
Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome...Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome...
Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome...
 
Git
GitGit
Git
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
 
Introduzione a Python e GitHub
Introduzione a Python e GitHub Introduzione a Python e GitHub
Introduzione a Python e GitHub
 
Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
ASP.NET AND Azure Function
ASP.NET AND Azure FunctionASP.NET AND Azure Function
ASP.NET AND Azure Function
 

Similar to Applicazioni Serverless con AWS

Progettare e sviluppare soluzioni serverless con AWS
Progettare e sviluppare soluzioni serverless con AWSProgettare e sviluppare soluzioni serverless con AWS
Progettare e sviluppare soluzioni serverless con AWSsparkfabrik
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSopencityplatform
 
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...Daniele Mondello
 
OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016Gaetano Paternò
 
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi ItaliaDifferenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi ItaliaYashi Italia
 
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2MongoDB
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerRoberto Messora
 
Viaggio attraverso il cloud - Consigli e best practices per iniziare con il c...
Viaggio attraverso il cloud - Consigli e best practices per iniziare con il c...Viaggio attraverso il cloud - Consigli e best practices per iniziare con il c...
Viaggio attraverso il cloud - Consigli e best practices per iniziare con il c...Amazon Web Services
 
AWS (Amazon Web Services) - Trevisan Davide
AWS (Amazon Web Services) - Trevisan DavideAWS (Amazon Web Services) - Trevisan Davide
AWS (Amazon Web Services) - Trevisan DavideDavide Trevisan
 
Cloud Computing reale: le basi, il presente ed il futuro del Cloud Computing
Cloud Computing reale: le basi, il presente ed il futuro del Cloud ComputingCloud Computing reale: le basi, il presente ed il futuro del Cloud Computing
Cloud Computing reale: le basi, il presente ed il futuro del Cloud Computingfestival ICT 2016
 
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioOpen Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioPar-Tec S.p.A.
 
Introduzione a Service Fabric e Actor Model
Introduzione a Service Fabric e Actor ModelIntroduzione a Service Fabric e Actor Model
Introduzione a Service Fabric e Actor ModelAndrea Tosato
 
Azure Web Apps: portare il tuo sito sul cloud
Azure Web Apps: portare il tuo sito sul cloudAzure Web Apps: portare il tuo sito sul cloud
Azure Web Apps: portare il tuo sito sul cloudDavide Benvegnù
 
PHP Serverless in ambiente AWS
PHP Serverless in ambiente AWSPHP Serverless in ambiente AWS
PHP Serverless in ambiente AWSGianfranco Castro
 
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQLMySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQLPar-Tec S.p.A.
 
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...Marco Parenzan
 
Aws (amazon web services) - Slide
Aws (amazon web services) - SlideAws (amazon web services) - Slide
Aws (amazon web services) - Slidealessioemireni
 
Webinar: Come semplificare l'utilizzo del database con MongoDB Atlas
Webinar: Come semplificare l'utilizzo del database con MongoDB AtlasWebinar: Come semplificare l'utilizzo del database con MongoDB Atlas
Webinar: Come semplificare l'utilizzo del database con MongoDB AtlasMongoDB
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareAmazon Web Services
 

Similar to Applicazioni Serverless con AWS (20)

Progettare e sviluppare soluzioni serverless con AWS
Progettare e sviluppare soluzioni serverless con AWSProgettare e sviluppare soluzioni serverless con AWS
Progettare e sviluppare soluzioni serverless con AWS
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
 
OCP Paas_ultima
OCP Paas_ultimaOCP Paas_ultima
OCP Paas_ultima
 
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
 
OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016
 
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi ItaliaDifferenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
 
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker Container
 
Viaggio attraverso il cloud - Consigli e best practices per iniziare con il c...
Viaggio attraverso il cloud - Consigli e best practices per iniziare con il c...Viaggio attraverso il cloud - Consigli e best practices per iniziare con il c...
Viaggio attraverso il cloud - Consigli e best practices per iniziare con il c...
 
AWS (Amazon Web Services) - Trevisan Davide
AWS (Amazon Web Services) - Trevisan DavideAWS (Amazon Web Services) - Trevisan Davide
AWS (Amazon Web Services) - Trevisan Davide
 
Cloud Computing reale: le basi, il presente ed il futuro del Cloud Computing
Cloud Computing reale: le basi, il presente ed il futuro del Cloud ComputingCloud Computing reale: le basi, il presente ed il futuro del Cloud Computing
Cloud Computing reale: le basi, il presente ed il futuro del Cloud Computing
 
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioOpen Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studio
 
Introduzione a Service Fabric e Actor Model
Introduzione a Service Fabric e Actor ModelIntroduzione a Service Fabric e Actor Model
Introduzione a Service Fabric e Actor Model
 
Azure Web Apps: portare il tuo sito sul cloud
Azure Web Apps: portare il tuo sito sul cloudAzure Web Apps: portare il tuo sito sul cloud
Azure Web Apps: portare il tuo sito sul cloud
 
PHP Serverless in ambiente AWS
PHP Serverless in ambiente AWSPHP Serverless in ambiente AWS
PHP Serverless in ambiente AWS
 
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQLMySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
 
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
 
Aws (amazon web services) - Slide
Aws (amazon web services) - SlideAws (amazon web services) - Slide
Aws (amazon web services) - Slide
 
Webinar: Come semplificare l'utilizzo del database con MongoDB Atlas
Webinar: Come semplificare l'utilizzo del database con MongoDB AtlasWebinar: Come semplificare l'utilizzo del database con MongoDB Atlas
Webinar: Come semplificare l'utilizzo del database con MongoDB Atlas
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 

More from sparkfabrik

KCD Italy 2023 - Secure Software Supply chain for OCI Artifact on Kubernetes
KCD Italy 2023 - Secure Software Supply chain for OCI Artifact on KubernetesKCD Italy 2023 - Secure Software Supply chain for OCI Artifact on Kubernetes
KCD Italy 2023 - Secure Software Supply chain for OCI Artifact on Kubernetessparkfabrik
 
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...sparkfabrik
 
IAD 2023 - 22 Years of Agile and all I got is this lousy t-shirt
IAD 2023 - 22 Years of Agile and all I got is this lousy t-shirtIAD 2023 - 22 Years of Agile and all I got is this lousy t-shirt
IAD 2023 - 22 Years of Agile and all I got is this lousy t-shirtsparkfabrik
 
2023 - Drupalcon - How Drupal builds your pages
2023 - Drupalcon - How Drupal builds your pages2023 - Drupalcon - How Drupal builds your pages
2023 - Drupalcon - How Drupal builds your pagessparkfabrik
 
2023 - TAC23 - Agile HR - Racconti dal fronte
2023 - TAC23 - Agile HR - Racconti dal fronte2023 - TAC23 - Agile HR - Racconti dal fronte
2023 - TAC23 - Agile HR - Racconti dal frontesparkfabrik
 
CodeMotion 2023 - Deep dive nella supply chain della nostra infrastruttura cl...
CodeMotion 2023 - Deep dive nella supply chain della nostra infrastruttura cl...CodeMotion 2023 - Deep dive nella supply chain della nostra infrastruttura cl...
CodeMotion 2023 - Deep dive nella supply chain della nostra infrastruttura cl...sparkfabrik
 
What is the Secure Supply Chain and the Current State of the PHP Ecosystem
What is the Secure Supply Chain and the Current State of the PHP EcosystemWhat is the Secure Supply Chain and the Current State of the PHP Ecosystem
What is the Secure Supply Chain and the Current State of the PHP Ecosystemsparkfabrik
 
UX e Web sostenibile (UXday 2023).pdf
UX e Web sostenibile (UXday 2023).pdfUX e Web sostenibile (UXday 2023).pdf
UX e Web sostenibile (UXday 2023).pdfsparkfabrik
 
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...sparkfabrik
 
Deep dive nella supply chain della nostra infrastruttura cloud
Deep dive nella supply chain della nostra infrastruttura cloudDeep dive nella supply chain della nostra infrastruttura cloud
Deep dive nella supply chain della nostra infrastruttura cloudsparkfabrik
 
KCD Italy 2022 - Application driven infrastructure with Crossplane
KCD Italy 2022 - Application driven infrastructure with CrossplaneKCD Italy 2022 - Application driven infrastructure with Crossplane
KCD Italy 2022 - Application driven infrastructure with Crossplanesparkfabrik
 
Come Drupal costruisce le tue pagine
Come Drupal costruisce le tue pagineCome Drupal costruisce le tue pagine
Come Drupal costruisce le tue paginesparkfabrik
 
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernoDrupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernosparkfabrik
 
Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)
Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)
Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)sparkfabrik
 
Do you know what your Drupal is doing_ Observe it!
Do you know what your Drupal is doing_ Observe it!Do you know what your Drupal is doing_ Observe it!
Do you know what your Drupal is doing_ Observe it!sparkfabrik
 
From React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedFrom React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedsparkfabrik
 
Headless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIsHeadless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIssparkfabrik
 
Cloud-Native Drupal: a survival guide
Cloud-Native Drupal: a survival guideCloud-Native Drupal: a survival guide
Cloud-Native Drupal: a survival guidesparkfabrik
 
Retro gaming machine made with Javascript and Kubernetes
Retro gaming machine made with Javascript and Kubernetes Retro gaming machine made with Javascript and Kubernetes
Retro gaming machine made with Javascript and Kubernetes sparkfabrik
 
Gitops: the kubernetes way
Gitops: the kubernetes wayGitops: the kubernetes way
Gitops: the kubernetes waysparkfabrik
 

More from sparkfabrik (20)

KCD Italy 2023 - Secure Software Supply chain for OCI Artifact on Kubernetes
KCD Italy 2023 - Secure Software Supply chain for OCI Artifact on KubernetesKCD Italy 2023 - Secure Software Supply chain for OCI Artifact on Kubernetes
KCD Italy 2023 - Secure Software Supply chain for OCI Artifact on Kubernetes
 
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
 
IAD 2023 - 22 Years of Agile and all I got is this lousy t-shirt
IAD 2023 - 22 Years of Agile and all I got is this lousy t-shirtIAD 2023 - 22 Years of Agile and all I got is this lousy t-shirt
IAD 2023 - 22 Years of Agile and all I got is this lousy t-shirt
 
2023 - Drupalcon - How Drupal builds your pages
2023 - Drupalcon - How Drupal builds your pages2023 - Drupalcon - How Drupal builds your pages
2023 - Drupalcon - How Drupal builds your pages
 
2023 - TAC23 - Agile HR - Racconti dal fronte
2023 - TAC23 - Agile HR - Racconti dal fronte2023 - TAC23 - Agile HR - Racconti dal fronte
2023 - TAC23 - Agile HR - Racconti dal fronte
 
CodeMotion 2023 - Deep dive nella supply chain della nostra infrastruttura cl...
CodeMotion 2023 - Deep dive nella supply chain della nostra infrastruttura cl...CodeMotion 2023 - Deep dive nella supply chain della nostra infrastruttura cl...
CodeMotion 2023 - Deep dive nella supply chain della nostra infrastruttura cl...
 
What is the Secure Supply Chain and the Current State of the PHP Ecosystem
What is the Secure Supply Chain and the Current State of the PHP EcosystemWhat is the Secure Supply Chain and the Current State of the PHP Ecosystem
What is the Secure Supply Chain and the Current State of the PHP Ecosystem
 
UX e Web sostenibile (UXday 2023).pdf
UX e Web sostenibile (UXday 2023).pdfUX e Web sostenibile (UXday 2023).pdf
UX e Web sostenibile (UXday 2023).pdf
 
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...
 
Deep dive nella supply chain della nostra infrastruttura cloud
Deep dive nella supply chain della nostra infrastruttura cloudDeep dive nella supply chain della nostra infrastruttura cloud
Deep dive nella supply chain della nostra infrastruttura cloud
 
KCD Italy 2022 - Application driven infrastructure with Crossplane
KCD Italy 2022 - Application driven infrastructure with CrossplaneKCD Italy 2022 - Application driven infrastructure with Crossplane
KCD Italy 2022 - Application driven infrastructure with Crossplane
 
Come Drupal costruisce le tue pagine
Come Drupal costruisce le tue pagineCome Drupal costruisce le tue pagine
Come Drupal costruisce le tue pagine
 
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernoDrupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
 
Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)
Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)
Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)
 
Do you know what your Drupal is doing_ Observe it!
Do you know what your Drupal is doing_ Observe it!Do you know what your Drupal is doing_ Observe it!
Do you know what your Drupal is doing_ Observe it!
 
From React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedFrom React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I started
 
Headless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIsHeadless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIs
 
Cloud-Native Drupal: a survival guide
Cloud-Native Drupal: a survival guideCloud-Native Drupal: a survival guide
Cloud-Native Drupal: a survival guide
 
Retro gaming machine made with Javascript and Kubernetes
Retro gaming machine made with Javascript and Kubernetes Retro gaming machine made with Javascript and Kubernetes
Retro gaming machine made with Javascript and Kubernetes
 
Gitops: the kubernetes way
Gitops: the kubernetes wayGitops: the kubernetes way
Gitops: the kubernetes way
 

Applicazioni Serverless con AWS

  • 1. APPLICAZIONI SERVERLESS CON AWS Progettare e sviluppare soluzioni basate sulle tecnologie serverless 10/2020
  • 2. IMAGE GOES OVER HERE Marcello Testi ● Solution Architect (cert. AWS), Scrum Master (cert. SA) ● Agile mindset, Cloud Native tech ● https://www.linkedin.com/in/mtesti/?locale=it_IT ● https://www.sparkfabrik.com/
  • 3. Oggi ● Panoramica su soluzioni disponibili ● Considerazioni sul design ● Demo su concetti e soluzioni presentati Domani ● Hands-on! ● Implementazione pratica di un piccolo progetto ● Lavoro a gruppi
  • 4. Non sarà possibile parlare in modo approfondito di ogni servizio AWS citato AWS disclaimer!
  • 5. Di cosa parleremo… 1. DEFINIZIONE FaaS/BaaS/IaaS/PaaS Le promesse di serverless Use case 2. I PRODOTTI DISPONIBILI Il mercato serverless La famiglia AWS serverless 4. STRUMENTI E BEST PRACTICE Framework e ambienti di sviluppo Testing Debug, log, monitoraggio 3. DESIGN E ARCHITETTURA Strumenti AWS Performance e Capacity Deploy e Release Gestione costi
  • 7. Serverless ● Competenza del cloud provider: gestire i server e l'allocazione di risorse in modo dinamico ● Costi basati su consumo effettivo di risorse ● Scaling, capacity planning e manutenzione possono essere resi trasparenti rispetto a sviluppatori e operatori ● Applicazioni serverless possono essere costituite anche da elementi server-based, o rappresentare architetture interamente serverless Wikipedia
  • 8. Serverless ● Servizi di backend tariffati in base all'utilizzo ● Per effettuare deployment non serve occuparsi di infrastruttura ● Applicazioni event-driven ed eseguite in edge-computing» Cloudflare
  • 9. Serverless ● Creare ed eseguire applicazioni senza dover gestire i server ● Applicazioni = bundle di una o più funzioni ● Caricate su una piattaforma ● Esecuzioni, scaling e billing basati sulla precisa richiesta di servizio CNCF
  • 10. Serverless ● Architettura nativa dei servizi cloud ● Non si deve pensare ai server ● No attività di gestione dell'infrastruttura da parte dell’utente ● Managed high availability (replica automatica su AZ multiple) AWS
  • 11. Serverless riguarda prima di tutto la UX degli sviluppatori! ● Efficienza nei costi e nell’utilizzo di risorse (possibile scaling a ZERO) ● Utilizzo (e pagamento) on-demand ● Automazione per scaling e recovery
  • 13. IaaS: Infrastructure as a Service Servizi che permettono tramite API di richiedere risorse (networking, computing, storage, ecc.) , delegando al provider la gestione e la configurazione dell’infrastruttura
  • 14. PaaS: Platform as a Service Servizi Cloud che permettono di sviluppare, eseguire e gestire applicazioni rimuovendo la complessità di creare e mantenere l’infrastruttura
  • 15. BaaS: Backend as a Service Fornisce alle applicazioni servizi di storage e API integrate per funzionalità comuni (autenticazione e gestione utenti, notifiche, integrazione social network…)
  • 16. FaaS: Functions as a Service Servizio che permette di eseguire e gestire il codice delle applicazioni come singole funzioni che sono chiamate attraverso eventi o richieste HTTP
  • 17. FaaS: Functions as a Service La più importante differenza operativa tra PaaS e FaaS è lo scaling: che con FaaS può diventare completamente trasparente per chi usa il servizio
  • 18. Le promesse di serverless 1. DEFINIZIONE
  • 19. Promesse da serverless… ● Nessuna gestione dei server ● Scaling automatico in base all’uso ● Nessun addebito per il tempo di non utilizzo ● (High) availability e tolleranza degli errori incluse
  • 20. Promesse da serverless… Minori costi fissi: si paga per valore e servizi effettivamente utilizzati AWS
  • 21. Promesse da serverless… Focus sullo sviluppo del prodotto e sulle sue caratteristiche uniche, possibilità di non preoccuparsi di implementazione (e costi) dei backing services (BaaS) AWS
  • 22. Promesse da serverless… Nessun bisogno di gestire server: il perimetro di release e deployment è più circoscritto, riducendo la complessità, aumentando (potenzialmente) la frequenza di rilasci e il time-to-market AWS
  • 23. Serverless non può promettere… Gestione dello stato (memory e storage) attraverso diverse invocazioni della stessa funzione
  • 25. Serverless non può promettere… Tempi di risposta garantiti (cold start può non essere breve)
  • 26. Serverless non può promettere… #NoOps: i sistemi non richiedono amministrazione, ma servono monitoraggio, debug, configurazione…
  • 31. Architettura microservices con frontend HTTP-based
  • 34. Data e media processing Specialmente in modalità asincrona
  • 35. 2. I PRODOTTI DISPONIBILI
  • 36. Principali prodotti serverless disponibili 2. I PRODOTTI DISPONIBILI
  • 37. Serverless (FaaS) vendor AWS Lambda Azure Functions Google Cloud Functions IBM Cloud Functions Oracle Cloud Functions Cloudflare Workers Alibaba Cloud Function Compute
  • 38. Fattori nel confronto di prodotti serverless ● Supporto per linguaggi ● Integrazione con altri servizi (ecosistema vendor) ● Facilità d’uso / Developer UX ● Prestazioni: disponibilità “@Edge” e tempo di cold-start
  • 39. Fattori nel confronto di prodotti serverless ● Pricing e billing ○ http://serverlesscalc.com/ ○ Da considerare anche free tier
  • 40. Fattori nel confronto di prodotti serverless ● Limiti ○ Memoria ○ Durata esecuzione ○ Dimensioni payload
  • 41. Vendor lock-in ● Disponibilità dei linguaggi (oggi problema abbastanza circoscritto) ● Formati proprietari di eventi - legati a integrazione con ecosistema vendor ● Sistemi proprietari di packaging e deploy per le funzioni
  • 42. Vendor lock-in Soluzioni? Progetti open - CNCF ● CloudEvents: standard per descrivere i dati degli eventi ● Vari prodotti da eseguire on-premises e in-cloud (es. Knative) CNCF
  • 43. Famiglia dei prodotti serverless AWS 2. I PRODOTTI DISPONIBILI
  • 44. Prodotti serverless AWS Computing ● Lambda ● Lambda@Edge ● Fargate (serverless container) ● Step Functions (orchestrazione di funzioni)
  • 45. Prodotti serverless AWS Storage ● S3 Data Store ● DynamoDB (NoSQL) ● Aurora Serverless (RDB) API ● API Gateway ● AppSync
  • 46. Prodotti serverless AWS Stream di dati e messaggi ● SNS ● SQS ● Kinesis Analytics ● Athena (serverless SQL su dati da S3)
  • 47. Lambda 2. I PRODOTTI DISPONIBILI
  • 48. Lambda ● Lambda è l’implementazione FaaS di AWS ● Esegue on-demand e scala a zero ● Perno di ecosistema serverless AWS, ma non tutte le implementazioni serverless passano da Lambda (es. RDB Aurora Serverless, Fargate per i container)
  • 49. Lambda: sicurezza e permessi ● IAM per gestire l’accesso a funzioni e altre risorse (versioni, alias, config) da parte di utenti o altri servizi AWS ● Execution role: assegnato a funzione per interagire con altri servizi ○ Di base contiene accesso a CloudWatch ○ Serve anche per accedere ai servizi che funzionano da trigger (es. S3)
  • 50. Lambda: componenti in AWS Console ● Lambda (codice, layer) ● Trigger (origini eventi) ● Destinazioni (possono essere diverse, anche in base a successo esecuzione) ● Versioni e Alias -> performance ● Configurazione (specifica per elemento selezionato: Lambda, trigger o destinazione)
  • 51. Anatomia di una funzione Lambda ● Handler: la funzione che viene eseguita ● Event Object: dati (JSON) dell’evento che ha invocato la funzione ● Runtime: ambiente in cui viene eseguita la funzione (es. NodeJS) ● Context: metodi e proprietà disponibili in base a runtime
  • 52. Lambda: configurazione base ● Scelta runtime ● Indicazione handler ● Assegnazione memoria ● Timeout esecuzione
  • 53. Lambda: altre configurazioni ● Concurrency ● Comportamento async ○ Numero retry ○ Età max evento ○ Queue per eventi falliti (SQS) ● Monitoraggio (CloudWatch, X-Ray, Lambda Insight)
  • 54. Lambda: altre configurazioni ● Tag ● Variabili d’ambiente ● Collegamenti a risorse altri servizi ○ File System (EFS) ○ VPC ○ DB Proxy (interazione con RDS)
  • 55. DynamoDB 2. I PRODOTTI DISPONIBILI
  • 56. DynamoDB ● NoSQL ● Focus su performance e scalabilità ● Caratteristiche ○ Capacity configurabile o on-demand ○ High Availability ○ Backup on-demand e point-in-time recovery ○ TTL e eliminazione automatica item “scaduti”
  • 57. DynamoDB: concetti base ● Table, Item, Attribute ● Primary key (partition o partition+sort) ● Schemaless ● Read consistency (eventual vs strong) ● Query vs Scan
  • 58. API Gateway 2. I PRODOTTI DISPONIBILI
  • 59. API Gateway ● Servizio managed per creare API HTTP (RESTful), REST, Websocket ● Permette di delegare: ○ Routing ○ Autenticazione ○ CORS ○ Deployment ○ Mapping risorse (es. tabelle DynamoDB)
  • 60. Utenti di API Gateway ● Sviluppatori di API ○ Configurano API per fornire le funzionalità richieste ○ Configurano l’accesso ● Sviluppatori di app che consumano API per accedere a dati e funzionalità
  • 61. Integrare API REST con Lambda ● Lambda proxy integration ○ Richieste inviate direttamente a Lambda, che provvede a eventuali trasformazioni e a fornire risposta ● Lambda non-proxy integration ○ Richieste processate da API Gateway, che provvede anche a fornire risposta
  • 62. Strumenti AWS per lo sviluppo serverless 2. I PRODOTTI DISPONIBILI
  • 63. Applicazioni Lambda in Lambda Console ● Applicazioni: combinazioni di funzioni Lambda, origini di eventi e altre risorse usate per eseguire task ● Lambda Console permette di gestire le applicazioni ● Elenca gli stack CloudFormation che contengono risorse Lambda
  • 64. Applicazioni Lambda in Lambda Console ● La sezione di monitoraggio di un’applicazione aggrega le metriche per tutte le risorse osservabili dello stack
  • 65. Applicazioni Lambda in Lambda Console ● Creare un’applicazione configura anche i servizi consigliati per gestirne il ciclo di vita ○ Permessi e Ruoli ○ CodeCommit (git) ○ CloudFormation ○ CodePipeline ○ CodeBuild
  • 66. Serverless Application Model ● Estensione di CloudFormation ● Template YAML che definiscono risorse e configurazione ● Parametri per gestire input e creare stack dinamici da stesso template
  • 68. Serverless Application Model ● Fornisce sintassi per definire ○ Funzioni (runtime, codice, handler) ○ API endpoint ○ Tabelle DB (DynamoDB) ○ Mapping di origini eventi ○ Policy di accesso / permessi ● In quanto estensione di CloudFormation, è possibile definire anche risorse non-serverless
  • 69. Serverless Application Model ● Essendo template, è possibile effettuare il deployment con caratteristiche identiche su ambienti multipli (es. dev, test, prod)
  • 70. SAM CLI ● Interfaccia da terminale per ○ Build ○ Test ○ Debug ○ Deployment ● Permette anche di eseguire e testare in locale le funzioni
  • 71. Serverless Application Repository ● Archivio di applicazioni riutilizzabili ● Possono essere condivise pubblicamente o con specifici account AWS ● Pacchetti basati su template SAM + link a codice funzioni (per applicazioni pubbliche)
  • 72. 3. DESIGN E ARCHITETTURA
  • 73. Performance e capacity 3. DESIGN E ARCHITETTURA
  • 74. Concurrency limits ● Concurrency : FaaS = Horizontal Scaling : EC2 ● Quante istanze della funzione possono essere eseguite allo stesso tempo
  • 75. Cold start ● Problema visibile soprattutto in caso di scaling (rischia di allungare tempi e ridurre efficacia) ● Soluzioni primitive prevedevano di “pingare” periodicamente una funzione per tenerla “calda” (timeout per vita di una funzione: 10, max 15 minuti) ● AWS offre soluzione (per $)
  • 76. Cold start ● Fattori che influenzano cold start ○ Linguaggio (ling. compilati richiedono ambienti più complessi e più tempo) ○ Dimensioni pacchetto ○ Risorse assegnate (+ risorse, - tempo) ○ Numero di dipendenze Ricerca
  • 77. AWS: concurrency ● Limite regionale per tutte le funzioni ● Reserved concurrency ○ Riserva slot di esecuzione non utilizzabili da funzioni unreseved ○ Imposta un limite alla concurrency della funzione
  • 78. AWS: concurrency ● Provisioned concurrency ○ Mitiga il problema del cold-start, esegue codice di inizializzazione prima dell’invocazione delle funz. ● Application autoscaling ○ Automatizza la quantità di provisioned concurrency in base al carico
  • 79. AWS: limiti di configurazione Lambda ● Esecuzioni contemporanee: base 1000 ● Storage: base 75GB (512MB per /tmp) ● Memoria: 128 > 3008MB (64MB incr.) ● Timeout: max 15 minuti ● Payload: 6MB sync / 256KB async
  • 80. AWS: limiti di configurazione Lambda ● Dimensioni pacchetto ○ Zip: 50MB (250MB dopo unzip) ○ Da console: 3MB
  • 81. Deployment e release 3. DESIGN E ARCHITETTURA
  • 82. AWS Lambda: deployment ● Gestione manuale per singole funzioni con versioni e alias ● Gestione stack (CloudFormation) come “Applications” ○ Da console ○ Con SAM CLI ○ Con altri framework (es. Serverless Framework)
  • 83. AWS Lambda: deployment ● Con le versioni è possibile taggare un determinato stato della funzione (codice, runtime, impostazioni) ● A ogni versione è assegnato un ARN specifico, referenziato per esempio da un API Gateway endpoint
  • 84. AWS Lambda: deployment ● Con gli alias è possibile referenziare una versione per mantenere stabile il riferimento a ARN ● Nel definire un alias si possono referenziare 2 versioni e quindi realizzare un deployment graduale (“traffic shifting”)
  • 85. AWS Lambda: application deployment ● Tramite la console e (via CLI) con SAM o altri framework è possibile gestire il deployment di interi stack (funzioni, trigger/origini di eventi, API endpoint) basati su CloudFormation ● In questo caso si può usare il versioning di Lambda ma di solito è preferibile una gestione del codice con git o equivalente
  • 86. AWS Lambda: best practice per deployment ● Usare i layer (max 5 per funzione) per il codice condiviso tra funzioni (es. logging) ● Usare integrazione di CodeDeploy (anche in SAM) ○ Versionamento funzioni ○ Traffic shifting: spostamento graduale del traffico su nuove versioni
  • 87. AWS Lambda: best practice per deployment ● Traffic shifting ○ Canary: 2 fasi. Config intervallo tra fasi e % traffico spostato nella prima fase ○ Linear: spostamento a intervalli regolari. Config durata e % traffico spostato per ogni intervallo ● Allarmi CloudWatch possono essere usati per controllare deployment ed eventualmente fare rollback
  • 88. Gestione dei costi 3. DESIGN E ARCHITETTURA
  • 89. Pricing Lambda ● Numero di richieste ● Durata*memoria utilizzata ● Traffico in/out (stessi prezzi EC2) ○ Traffico gratuito verso servizi AWS dell’ecosistema serverless: S3, SQS, DynamoDB, SNS e altri ● Costi per richieste e durata superiori per provisioned concurrency
  • 90. Pricing DynamoDB ● On-demand (RRU/WRU) / Provisioned (RCU/WCU) ● Storage ● Backup ● Extra per Global Tables e DAX ● Traffico out gratis verso altri servizi AWS in stessa regione
  • 91. Pricing API Gateway ● Numero di richieste ● Tipo di API (HTTP/REST) ● Traffico in/out (stessi prezzi EC2)
  • 92. Pricing Lambda best practice ● Non aumentare oltre il necessario il timeout per le funzioni ● Ottimizzare al massimo l’uso della memoria ● Usare CloudWatch per controllare concurrency, errori/retry e utilizzo memoria ● Usare AWS Budget
  • 93. Pricing serverless costi da controllare ● Servizi esterni che possono rallentare esecuzione ● Cold start ● Retry in caso di errori ● Richieste e traffico API Gateway ● Traffico Lambda verso servizi non serverless o verso internet Approfondimento
  • 94. 4. STRUMENTI E BEST PRACTICE
  • 95. Framework e ambienti di sviluppo 4. STRUMENTI E BEST PRACTICE
  • 96. Ambiente di sviluppo serverless ● Architettura applicazioni serverless è basata su integrazione tra servizi AWS ● Costruire un ambiente locale di sviluppo non è banale ● Framework, IDE aiutano a questo scopo
  • 97. Framework ● Serverless framework ● Serverless Application Model (SAM) ● Spring Cloud Function ● Altri…
  • 98. Serverless framework ● CLI + hosted dashboard ● Rispetto a SAM, aggiunge monitor, alert, strumenti di supporto ai test Link
  • 99. Serverless framework vs SAM ● SAM è più opinionato (si intuisce vedendo la struttura del progetto base creato) ● Efficacia della rimozione delle risorse dello stack è migliore in SF (SAM non rimuove automaticamente S3)
  • 100. Serverless framework vs SAM ● Il supporto community è migliore per SF (più attività su Github/StackOF, più disponibilità di esempi e tutorial, ecosistema plugin) ● SF supporta multi-cloud ● SAM include strumenti per testing
  • 101. IDE/CLI ● AWS SAM CLI ● AWS CLoud9 ● Plugin per Eclipse (Java) e Visual Studio (.NET) ● Visual Studio Code AWS Toolkit
  • 102. Testing 4. STRUMENTI E BEST PRACTICE
  • 103. Testing best practice ● Scrivere funzioni secondo design pattern che le rendano facilmente oggetto di unit test ● Focus su unit test e test di integrazione ● Non eseguire test di integrazione su simulazioni locali dei servizi ● Eseguire test end-to-end in cloud, possibilmente in ambiente creato per ogni singola esecuzione test
  • 104. Debug, log, monitoraggio 4. STRUMENTI E BEST PRACTICE
  • 105. Gestione errori di una chiamata Lambda ● Errori invocazione (prima di esecuzione): codici errore 4xx-5xx ○ Validità JSON, dimensioni richiesta, permessi, limite richieste raggiunto ● Errori di funzione (codice Lambda o runtime): non codici errore ma header ○ Timeout, eccezioni, errori sintassi Errori invocazione Errori runtime nodejs
  • 106. Strumenti per debugging locale ● AWS SAM ● Serverless Offline (by Serverless framework) ● Visual Studio Code AWS Toolkit
  • 107. Strumenti per debugging in cloud ● Postman per chiamate API ● AWS Lambda Console (permette di scrivere event object di test per le funzioni) ● AWS CloudWatch (un log group per ogni Lambda)
  • 108. Strumenti per logging avanzato in cloud ● AWS X-Ray: dati approfonditi su eventi/trigger, chiamate API, esecuzione funzioni, chiamate ai servizi di destinazione ● Lambda Insights: aggiunge automaticamente layer a funzioni per monitoraggio più approfondito tramite estensione di CloudWatch