SlideShare a Scribd company logo
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/
Serverless  uso di lambda per esigenze (non) convenzionali
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

PDF
PHP Serverless in ambiente AWS
PDF
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
PDF
AWS CDK infrastructure is code
PDF
Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud...
PPTX
Francesco Arcieri - La monetizzazione delle API - Codemotion Milan 2017
PPTX
(N+1) Lezioni sul serverless
PDF
Applicazioni Serverless con AWS
PPTX
AWS (Amazon Web Services) - Trevisan Davide
PHP Serverless in ambiente AWS
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
AWS CDK infrastructure is code
Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud...
Francesco Arcieri - La monetizzazione delle API - Codemotion Milan 2017
(N+1) Lezioni sul serverless
Applicazioni Serverless con AWS
AWS (Amazon Web Services) - Trevisan Davide

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

PDF
[Laravel Day 2022] Deploy di Laravel su AWS Lambda (from Zero to Hero).pdf
PPTX
Aws (amazon web services) - Slide
PDF
Progettare e sviluppare soluzioni serverless con AWS
PDF
Cloud e innovazione
PDF
Amazon Web Services
PDF
Mobile app and disaster recovery with aws
PDF
Mulesoft milano meetup #5 florence consulting
PDF
AWS: gestire la scalabilità su larga scala
PDF
Cloud Amazon IaaS aws
PPTX
Davide tarsi 871138 cloud computing e aws
PDF
Alla ricerca della ricerca - JeffConf Milan 2017
PDF
Milano Meetups XIII - Official.pdf
PDF
festival ICT 2013: Versatilità del Cloud Computing: dalle APP al Disaster Rec...
PPTX
Netflix: cos'è, come funziona
PDF
Sotto il letto, sopra il cloud: costruirsi un’infrastruttura da zero
PDF
Amazon Web Services - Le potenzialità di AWS e il mondo di Amazon Alexa by Ni...
PDF
Homemade Linux Server
PDF
October 2009 - JBoss Cloud
PDF
JBoss Clouds - JBug Roma october 2009
[Laravel Day 2022] Deploy di Laravel su AWS Lambda (from Zero to Hero).pdf
Aws (amazon web services) - Slide
Progettare e sviluppare soluzioni serverless con AWS
Cloud e innovazione
Amazon Web Services
Mobile app and disaster recovery with aws
Mulesoft milano meetup #5 florence consulting
AWS: gestire la scalabilità su larga scala
Cloud Amazon IaaS aws
Davide tarsi 871138 cloud computing e aws
Alla ricerca della ricerca - JeffConf Milan 2017
Milano Meetups XIII - Official.pdf
festival ICT 2013: Versatilità del Cloud Computing: dalle APP al Disaster Rec...
Netflix: cos'è, come funziona
Sotto il letto, sopra il cloud: costruirsi un’infrastruttura da zero
Amazon Web Services - Le potenzialità di AWS e il mondo di Amazon Alexa by Ni...
Homemade Linux Server
October 2009 - JBoss Cloud
JBoss Clouds - JBug Roma october 2009
Ad

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/
  • 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