SlideShare a Scribd company logo
1 of 17
Download to read offline
Serverless: Uso di Lambda per esigenze
(non) convenzionali
Riccardo Capecchi
Serverless con Lambda
AWS Lambda consente di eseguire codice senza dover effettuare il provisioning né
gestire server. Le tariffe sono calcolate in base ai tempi di elaborazione, perciò non
viene addebitato alcun costo quando il codice non è in esecuzione.
Con Lambda, puoi eseguire codice per qualsiasi tipo di applicazione o servizio di
back-end, senza alcuna amministrazione. Una volta caricato il codice, Lambda si
prende carico delle azioni necessarie per eseguirlo e ricalibrarne le risorse con la
massima disponibilità. Puoi configurare il codice in modo che venga attivato
automaticamente da altri servizi AWS oppure che venga richiamato direttamente da
qualsiasi app Web o mobile.
https://aws.amazon.com/it/lambda/
Chi sono io ?
Alcuni dei filoni tecnologici che ho seguito nella mia carriera.
● 1999 Administration Unix/Linux
● 2004 Application Farms
● 2006 Virtualization
● 2009 Disaster Recovery
● 2013 Infrastructure as a service
● 2014 DevOps
● 2016 AWS
● 2018 Big Data
Usi Convenzionali di Lambda
Nella maggior parte dei casi una funziona Lambda viene utilizzata per effettuare un
piccolo passo in una elaborazione a molti passaggi.
Negli esempi successivi si utilizza il principio del microservizio o della filosofia Unix
“Scrivete programmi che facciano una cosa e che la facciano bene. Scrivete
programmi che funzionino insieme.”
Modifica di file caricati su Lambda
Possiamo utilizzare Amazon S3 per attivare il servizio AWS Lambda per elaborare i
dati immediatamente dopo un caricamento.
ETL con Lambda
E’ possibile utilizzare il servizio AWS Lambda per eseguire la convalida, filtrare,
ordinare o fare altre trasformazioni dei dati per ogni modifica dei dati in una tabella
DynamoDB e caricare i dati trasformati in un altro archivio dati.
Applicazioni Web con Lambda
Combinando il servizio AWS Lambda con altri servizi AWS, gli sviluppatori possono
creare potenti applicazioni Web che si espandono e scendono di potenza
automaticamente.
Usi non Convenzionali di Lambda
Avendo un background da amministratore di sistemi ho visto, da principio, l’utilizzo
di una funziona Lambda come la sostituzione di un cron, ovvero di una esecuzione
programmata di un programma per eseguire un task generico.
Con il tempo ho apprezzato anche la possibilità di utilizzare “trigger” diversi per far
partire questi task a seguito di condizioni particolari.
Da Backup a Content Replication
Tra i primi compiti messi una piedi una volta che abbiamo migrato la nostra
infrastruttura su aws c’è stato quello di eseguire dei backup, in particolare la copia
di tutti i contenuti di un bucket S3 da un account aws ad un altro con una
operazione di aws s3 sync.
Questa è una soluzione poco efficiente a livello di costi e di tempo, per cui
conviene passare ad una replica dei contenuti utilizzando una lambda che viene
invocata al caricamento di ogni oggetto all’interno del bucket.
Questa soluzione è ottima anche in contesti di Disaster Recovery.
https://aws.amazon.com/blogs/compute/content-replication-using-aws-lambda-and-amazon-s3/
Monitoraggio
Il servizio cloudwatch offre molte funzionalità di monitoraggio delle risorse AWS,
ma mi è capitato di voler controllare il tempo di risposta di un sito web o altri aspetti
di applicazioni web ed in questi casi una funzione lambda fatta su misura è una
ottima soluzione.
In questo caso si può utilizzare una Lambda lanciata con cadenza temporale (ogni
X minuti) e farsi mandare una notifica in caso di errore.
Un uso più avanzato potrebbe anche quello di eseguire altri task per provare ad
eseguire dei fix in caso di errore.
http://marcelog.github.io/articles/aws_lambda_check_website_http_online.html
Correggere Bucket con accesso pubblico
Come amministratori di account AWS può essere utile dare i permessi di creare e
gestire bucket S3 ad altro personale o a funzioni automatiche, questo potrebbe
generare, in seguito ad errori umani o di programmazione, alla creazione di bucket
con permessi con accesso pubblico e quindi al divulgare informazioni preziose per
l’azienda.
Un approccio per difendersi da questa eventualità è quella di creare delle regole
all’interno del servizio AWS Config per verificare questa condizione ed usare poi un
trigger che invochi una lambda che “ripari” questa situazione.
https://aws.amazon.com/blogs/security/how-to-use-aws-config-to-monitor-for-and-respond-to-amazon-s3-buckets-allowing-public-acce
ss/
Correggere Bucket con accesso pubblico
Automazione di Start/Stop Ec2
Su AWS tutto è pagato per secondi o minuti di utilizzo, avere quindi la possibilità di
spegnere in automatico gli ambienti di stg non utilizzati in periodi definiti (fuori
dall’orario di lavoro, solo il sabato o la domenica) può portare grossi risparmi sulle
spese di questi ambienti.
In alcuni casi noi abbiamo usato una funzione Lambda per fare lo start di alcuni
ambienti di test, che vengono utilizzati saltuariamente (e vengono poi spenti di
notte automaticamente)
https://medium.com/@Hironsan/save-aws-ec2-cost-by-automatically-stopping-idle-instance-using-lambda-and-cloudwatch-759edd62b
27d
Automazione delle regole WAF
AWS WAF è un firewall che aiuta a proteggere le applicazioni Web dagli exploit
Web che possono intaccare la disponibilità delle applicazioni, compromettere la
sicurezza o consumare risorse.
AWS WAF consente di selezionare regole di sicurezza personalizzate con cui
definire il traffico verso le applicazioni Web consentite o da bloccare.
Con Lambda possiamo reagire dinamicamente e modificare queste regole quando
siamo sottoposti ad attacchi o DoS.
https://aws.amazon.com/solutions/aws-waf-security-automations/
Automazione delle regole WAF
Conclusioni
In generale le funzioni Lambda sono ottime in molti contesti diversi, dall’erogazione
dei servizi al monitoraggio o correzione degli stessi.
L’unica nota di attenzione è quella di impostare da subito delle best practice sul
come svilupparle all’interno dell’azienda, come condividere e mantenere il codice
nel tempo e come fare deploy delle stesse in maniera controllata.
AWS SAM e Serverless Application Framework sono due buoni punti di partenza
per avere maggiori informazioni su queste tematiche.
https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html
https://serverless.com

More Related Content

Similar to Serverless uso di lambda per esigenze (non) convenzionali

Fondamenti di cloud computing
Fondamenti di cloud computingFondamenti di cloud computing
Fondamenti di cloud computingGianluigi Cogo
 
AWS (Amazon Web Services) - Trevisan Davide
AWS (Amazon Web Services) - Trevisan DavideAWS (Amazon Web Services) - Trevisan Davide
AWS (Amazon Web Services) - Trevisan DavideDavide Trevisan
 
Applicazioni Serverless con AWS
Applicazioni Serverless con AWSApplicazioni Serverless con AWS
Applicazioni Serverless con AWSsparkfabrik
 
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
 
(N+1) Lezioni sul serverless
(N+1) Lezioni sul serverless(N+1) Lezioni sul serverless
(N+1) Lezioni sul serverlessPiero Bozzolo
 
Il futuro fra le nuvole
Il futuro fra le nuvoleIl futuro fra le nuvole
Il futuro fra le nuvoleGianluigi Cogo
 
Con Aruba, a lezione di cloud #lezione 31: 'API e Cloud Computing, personali...
Con Aruba, a lezione di cloud  #lezione 31: 'API e Cloud Computing, personali...Con Aruba, a lezione di cloud  #lezione 31: 'API e Cloud Computing, personali...
Con Aruba, a lezione di cloud #lezione 31: 'API e Cloud Computing, personali...Aruba S.p.A.
 
Be02 portare la nostra applicazione su azure
Be02   portare la nostra applicazione su azureBe02   portare la nostra applicazione su azure
Be02 portare la nostra applicazione su azureDotNetCampus
 
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloudAutomatic Cloud Deployment: un caso di studio basato sul software OwnCloud
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloudSonia Pepe
 
I Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaI Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaSoluzioni Futura
 
I Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaI Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaValerio Versace
 
Cloud Computing: Tecnologie ed Opportunità - Domenico Talia
Cloud Computing: Tecnologie ed Opportunità - Domenico TaliaCloud Computing: Tecnologie ed Opportunità - Domenico Talia
Cloud Computing: Tecnologie ed Opportunità - Domenico TaliaCentro di competenza ICT-SUD
 
Cloud infrastructure
Cloud infrastructureCloud infrastructure
Cloud infrastructureMattia Azzena
 
Azure WebSites for Developers
Azure WebSites for DevelopersAzure WebSites for Developers
Azure WebSites for DevelopersLuca Milan
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloudRiccardo Zamana
 
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
 
2011.06.30 scenari applicativi per il cloud computing
2011.06.30   scenari applicativi per il cloud computing2011.06.30   scenari applicativi per il cloud computing
2011.06.30 scenari applicativi per il cloud computingMarco Parenzan
 
Multi Cloud essentials
Multi Cloud essentialsMulti Cloud essentials
Multi Cloud essentialsantimo musone
 
Con Aruba, a lezione di cloud #lezione 1 - parte 2: 'Da server dedicato a clo...
Con Aruba, a lezione di cloud #lezione 1 - parte 2: 'Da server dedicato a clo...Con Aruba, a lezione di cloud #lezione 1 - parte 2: 'Da server dedicato a clo...
Con Aruba, a lezione di cloud #lezione 1 - parte 2: 'Da server dedicato a clo...Aruba S.p.A.
 

Similar to Serverless uso di lambda per esigenze (non) convenzionali (20)

Fondamenti di cloud computing
Fondamenti di cloud computingFondamenti di cloud computing
Fondamenti di cloud computing
 
AWS (Amazon Web Services) - Trevisan Davide
AWS (Amazon Web Services) - Trevisan DavideAWS (Amazon Web Services) - Trevisan Davide
AWS (Amazon Web Services) - Trevisan Davide
 
Applicazioni Serverless con AWS
Applicazioni Serverless con AWSApplicazioni Serverless con AWS
Applicazioni Serverless con AWS
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
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...
 
(N+1) Lezioni sul serverless
(N+1) Lezioni sul serverless(N+1) Lezioni sul serverless
(N+1) Lezioni sul serverless
 
Il futuro fra le nuvole
Il futuro fra le nuvoleIl futuro fra le nuvole
Il futuro fra le nuvole
 
Con Aruba, a lezione di cloud #lezione 31: 'API e Cloud Computing, personali...
Con Aruba, a lezione di cloud  #lezione 31: 'API e Cloud Computing, personali...Con Aruba, a lezione di cloud  #lezione 31: 'API e Cloud Computing, personali...
Con Aruba, a lezione di cloud #lezione 31: 'API e Cloud Computing, personali...
 
Be02 portare la nostra applicazione su azure
Be02   portare la nostra applicazione su azureBe02   portare la nostra applicazione su azure
Be02 portare la nostra applicazione su azure
 
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloudAutomatic Cloud Deployment: un caso di studio basato sul software OwnCloud
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud
 
I Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaI Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni Futura
 
I Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaI Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni Futura
 
Cloud Computing: Tecnologie ed Opportunità - Domenico Talia
Cloud Computing: Tecnologie ed Opportunità - Domenico TaliaCloud Computing: Tecnologie ed Opportunità - Domenico Talia
Cloud Computing: Tecnologie ed Opportunità - Domenico Talia
 
Cloud infrastructure
Cloud infrastructureCloud infrastructure
Cloud infrastructure
 
Azure WebSites for Developers
Azure WebSites for DevelopersAzure WebSites for Developers
Azure WebSites for Developers
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloud
 
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
 
2011.06.30 scenari applicativi per il cloud computing
2011.06.30   scenari applicativi per il cloud computing2011.06.30   scenari applicativi per il cloud computing
2011.06.30 scenari applicativi per il cloud computing
 
Multi Cloud essentials
Multi Cloud essentialsMulti Cloud essentials
Multi Cloud essentials
 
Con Aruba, a lezione di cloud #lezione 1 - parte 2: 'Da server dedicato a clo...
Con Aruba, a lezione di cloud #lezione 1 - parte 2: 'Da server dedicato a clo...Con Aruba, a lezione di cloud #lezione 1 - parte 2: 'Da server dedicato a clo...
Con Aruba, a lezione di cloud #lezione 1 - parte 2: 'Da server dedicato a clo...
 

Serverless uso di lambda per esigenze (non) convenzionali

  • 1. Serverless: Uso di Lambda per esigenze (non) convenzionali Riccardo Capecchi
  • 2. Serverless con Lambda AWS Lambda consente di eseguire codice senza dover effettuare il provisioning né gestire server. Le tariffe sono calcolate in base ai tempi di elaborazione, perciò non viene addebitato alcun costo quando il codice non è in esecuzione. Con Lambda, puoi eseguire codice per qualsiasi tipo di applicazione o servizio di back-end, senza alcuna amministrazione. Una volta caricato il codice, Lambda si prende carico delle azioni necessarie per eseguirlo e ricalibrarne le risorse con la massima disponibilità. Puoi configurare il codice in modo che venga attivato automaticamente da altri servizi AWS oppure che venga richiamato direttamente da qualsiasi app Web o mobile. https://aws.amazon.com/it/lambda/
  • 3.
  • 4. Chi sono io ? Alcuni dei filoni tecnologici che ho seguito nella mia carriera. ● 1999 Administration Unix/Linux ● 2004 Application Farms ● 2006 Virtualization ● 2009 Disaster Recovery ● 2013 Infrastructure as a service ● 2014 DevOps ● 2016 AWS ● 2018 Big Data
  • 5. Usi Convenzionali di Lambda Nella maggior parte dei casi una funziona Lambda viene utilizzata per effettuare un piccolo passo in una elaborazione a molti passaggi. Negli esempi successivi si utilizza il principio del microservizio o della filosofia Unix “Scrivete programmi che facciano una cosa e che la facciano bene. Scrivete programmi che funzionino insieme.”
  • 6. Modifica di file caricati su Lambda Possiamo utilizzare Amazon S3 per attivare il servizio AWS Lambda per elaborare i dati immediatamente dopo un caricamento.
  • 7. ETL con Lambda E’ possibile utilizzare il servizio AWS Lambda per eseguire la convalida, filtrare, ordinare o fare altre trasformazioni dei dati per ogni modifica dei dati in una tabella DynamoDB e caricare i dati trasformati in un altro archivio dati.
  • 8. Applicazioni Web con Lambda Combinando il servizio AWS Lambda con altri servizi AWS, gli sviluppatori possono creare potenti applicazioni Web che si espandono e scendono di potenza automaticamente.
  • 9. Usi non Convenzionali di Lambda Avendo un background da amministratore di sistemi ho visto, da principio, l’utilizzo di una funziona Lambda come la sostituzione di un cron, ovvero di una esecuzione programmata di un programma per eseguire un task generico. Con il tempo ho apprezzato anche la possibilità di utilizzare “trigger” diversi per far partire questi task a seguito di condizioni particolari.
  • 10. Da Backup a Content Replication Tra i primi compiti messi una piedi una volta che abbiamo migrato la nostra infrastruttura su aws c’è stato quello di eseguire dei backup, in particolare la copia di tutti i contenuti di un bucket S3 da un account aws ad un altro con una operazione di aws s3 sync. Questa è una soluzione poco efficiente a livello di costi e di tempo, per cui conviene passare ad una replica dei contenuti utilizzando una lambda che viene invocata al caricamento di ogni oggetto all’interno del bucket. Questa soluzione è ottima anche in contesti di Disaster Recovery. https://aws.amazon.com/blogs/compute/content-replication-using-aws-lambda-and-amazon-s3/
  • 11. Monitoraggio Il servizio cloudwatch offre molte funzionalità di monitoraggio delle risorse AWS, ma mi è capitato di voler controllare il tempo di risposta di un sito web o altri aspetti di applicazioni web ed in questi casi una funzione lambda fatta su misura è una ottima soluzione. In questo caso si può utilizzare una Lambda lanciata con cadenza temporale (ogni X minuti) e farsi mandare una notifica in caso di errore. Un uso più avanzato potrebbe anche quello di eseguire altri task per provare ad eseguire dei fix in caso di errore. http://marcelog.github.io/articles/aws_lambda_check_website_http_online.html
  • 12. Correggere Bucket con accesso pubblico Come amministratori di account AWS può essere utile dare i permessi di creare e gestire bucket S3 ad altro personale o a funzioni automatiche, questo potrebbe generare, in seguito ad errori umani o di programmazione, alla creazione di bucket con permessi con accesso pubblico e quindi al divulgare informazioni preziose per l’azienda. Un approccio per difendersi da questa eventualità è quella di creare delle regole all’interno del servizio AWS Config per verificare questa condizione ed usare poi un trigger che invochi una lambda che “ripari” questa situazione. https://aws.amazon.com/blogs/security/how-to-use-aws-config-to-monitor-for-and-respond-to-amazon-s3-buckets-allowing-public-acce ss/
  • 13. Correggere Bucket con accesso pubblico
  • 14. Automazione di Start/Stop Ec2 Su AWS tutto è pagato per secondi o minuti di utilizzo, avere quindi la possibilità di spegnere in automatico gli ambienti di stg non utilizzati in periodi definiti (fuori dall’orario di lavoro, solo il sabato o la domenica) può portare grossi risparmi sulle spese di questi ambienti. In alcuni casi noi abbiamo usato una funzione Lambda per fare lo start di alcuni ambienti di test, che vengono utilizzati saltuariamente (e vengono poi spenti di notte automaticamente) https://medium.com/@Hironsan/save-aws-ec2-cost-by-automatically-stopping-idle-instance-using-lambda-and-cloudwatch-759edd62b 27d
  • 15. Automazione delle regole WAF AWS WAF è un firewall che aiuta a proteggere le applicazioni Web dagli exploit Web che possono intaccare la disponibilità delle applicazioni, compromettere la sicurezza o consumare risorse. AWS WAF consente di selezionare regole di sicurezza personalizzate con cui definire il traffico verso le applicazioni Web consentite o da bloccare. Con Lambda possiamo reagire dinamicamente e modificare queste regole quando siamo sottoposti ad attacchi o DoS. https://aws.amazon.com/solutions/aws-waf-security-automations/
  • 17. Conclusioni In generale le funzioni Lambda sono ottime in molti contesti diversi, dall’erogazione dei servizi al monitoraggio o correzione degli stessi. L’unica nota di attenzione è quella di impostare da subito delle best practice sul come svilupparle all’interno dell’azienda, come condividere e mantenere il codice nel tempo e come fare deploy delle stesse in maniera controllata. AWS SAM e Serverless Application Framework sono due buoni punti di partenza per avere maggiori informazioni su queste tematiche. https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html https://serverless.com