Semplificare l'observability
per progetti Serverless
Luciano Mammino ( )
@loige
2021-10-21
loige.link/simple-obs
1
Get these slides!
loige
loige.link/simple-obs
2
CIAO 👋
3
CIAO 👋
Sono Luciano
3
CIAO 👋
Sono Luciano
Senior Architect @ fourTheorem (Dublin )
3
CIAO 👋
Sono Luciano
Senior Architect @ fourTheorem (Dublin )
nodejsdp.link
Co-Autore di Node.js Design Patterns  👉
3
CIAO 👋
Sono Luciano
Senior Architect @ fourTheorem (Dublin )
nodejsdp.link
Co-Autore di Node.js Design Patterns  👉
Ci connettiamo?
  (blog)
  (twitter)
  (twitch)
  (github)
loige.co
@loige
loige
lmammino
3
We are business focused
technologists that deliver.
 |  |
Accelerated Serverless AI as a Service Platform Modernisation
⭐Stiamo assumendo:  ti va di ?
lavorare con noi
loige 4
loige
awsbites.com
Ho da poco avviato un podcast settimanale su AWS
5
"Observability"
loige 6
Observability nel Cloud ☁
loige
" Una misura di quanto si riesca a comprendere
lo stato di un sistema osservandone
esclusivamente gli output
Log strutturati
🔍
Tracing
📈
Metriche
🚨
Allarmi
7
Observability su AWS = CloudWatch
loige
CloudWatch é un servizio che fornisce:
 
   Logs (e insights)
  📈   Metriche
  📊   Dashboard
  🚨   Allarmi
  🐥   Canaries
  🔍   Tracing distribuito (X-Ray)
8
Alternative ad AWS
loige
Soluzioni comuni (as a service) Soluzioni "fai da te"
Nuove Soluzioni
9
CloudWatch 
out of the box 📦
loige
😍Un toolkit completo per l'observability 
🤩Colleziona metriche automaticamente per ogni
servizio AWS
😟Tante dashboards, ma organizzate per servizio
e non per applicazione!
😢Zero allarmi pre-configurati!
10
Utilizzando
servizi terzi 🐶
loige
✅I prodotti terzi hanno una UX migliore
❌Bisogna esportare i dati da AWS
❌  Alcune feature potrebbero non essere ben
integrate o richiedere integrazioni
personalizzate
❌  Potresti restare bloccato in dual-mode
11
Come utilizzare CloudWatch al meglio!
loige
Cloudwatch puó diventare il tuo miglior amico se...
📚  Studi e comprendi tutte le metriche disponibili
📐  Decidi le varie soglie per i tuoi allarmi
📊  Scrive codice (IaC) per creare dashboards per le tue
applicazioni
⏰  Scrivi codice (IaC) anche per gli allarmi
⏪  Aggiorni questo codice quando la tua applicazione
cambia (e.g. nuovi servizi AWS vengono utilizzati)
📋  Copi ed incolli (e modifichi) tutto questo codice per
ogni stack delle tue applicazioni su AWS!
 
(a.k.a. TANTO DURO LAVORO!)
  12
Come utilizzare CloudWatch al meglio!
loige
Cloudwatch puó diventare il tuo miglior amico se...
📚  Studi e comprendi tutte le metriche disponibili
📐  Decidi le varie soglie per i tuoi allarmi
📊  Scrive codice (IaC) per creare dashboards per le tue
applicazioni
⏰  Scrivi codice (IaC) anche per gli allarmi
⏪  Aggiorni questo codice quando la tua applicazione
cambia (e.g. nuovi servizi AWS vengono utilizzati)
📋  Copi ed incolli (e modifichi) tutto questo codice per
ogni stack delle tue applicazioni su AWS!
 
(a.k.a. TANTO DURO LAVORO!)
  12
Best practices
loige
😇AWS Well Architected Framework
🏛  5 pilastri 
⚙  Il pilastro "Operational excellence" copre
l'argomento "observability"
🧐Serverless lens applica questi pilastri
 
👍Ottima guida sulle metriche da utilizzare
👎Altra roba da studiare
👎Devi comunque decidere le soglie
13
Scrivere allarmi con CloudFormation
loige
{
"Type":"AWS::CloudWatch::Alarm",
"Properties":{
"ActionsEnabled":true,
"AlarmActions":[
"arn:aws:sns:eu-west-1:665863320777:FTSLICAlarms"
],
"AlarmName":"LambdaThrottles_serverless-test-project-dev-hello",
"AlarmDescription":"Throttles % for serverless-test-project-dev-hello ..
"EvaluationPeriods":1,
"ComparisonOperator":"GreaterThanThreshold",
"Threshold":0,
"TreatMissingData":"notBreaching",
"Metrics":[
{
"Id":"throttles_pc",
"Expression":"(throttles / throttles + invocations) * 100",
"Label":"% Throttles",
"ReturnData":true
},
{
"Id":"throttles",
"...":"..."
}
]
}
}
[
{
"...":"...",
"MetricStat":{
"Metric":{
"Namespace":"AWS/Lambda",
"MetricName":"Throttles",
"Dimensions":[
{
"Name":"FunctionName",
"Value":"serverless-test-project-dev-hello"
}
]
},
"Period":60,
"Stat":"Sum"
},
"ReturnData":false
},
{
"Id":"invocations",
"MetricStat":{
"Metric":{
"Namespace":"AWS/Lambda",
"MetricName":"Invocations",
"...":"..."
}
}
}
]
14
Scrivere allarmi con CloudFormation
loige
{
"Type":"AWS::CloudWatch::Alarm",
"Properties":{
"ActionsEnabled":true,
"AlarmActions":[
"arn:aws:sns:eu-west-1:665863320777:FTSLICAlarms"
],
"AlarmName":"LambdaThrottles_serverless-test-project-dev-hello",
"AlarmDescription":"Throttles % for serverless-test-project-dev-hello ..
"EvaluationPeriods":1,
"ComparisonOperator":"GreaterThanThreshold",
"Threshold":0,
"TreatMissingData":"notBreaching",
"Metrics":[
{
"Id":"throttles_pc",
"Expression":"(throttles / throttles + invocations) * 100",
"Label":"% Throttles",
"ReturnData":true
},
{
"Id":"throttles",
"...":"..."
}
]
}
}
[
{
"...":"...",
"MetricStat":{
"Metric":{
"Namespace":"AWS/Lambda",
"MetricName":"Throttles",
"Dimensions":[
{
"Name":"FunctionName",
"Value":"serverless-test-project-dev-hello"
}
]
},
"Period":60,
"Stat":"Sum"
},
"ReturnData":false
},
{
"Id":"invocations",
"MetricStat":{
"Metric":{
"Namespace":"AWS/Lambda",
"MetricName":"Invocations",
"...":"..."
}
}
}
]
14
Possiamo automatizzare?
loige 15
Possiamo automatizzare?
loige
Magically
generated alarms
and dashboards for
each application!
15
Ecco a voi
SLIC watch!
loige
fth.link/slic-watch
16
Come funziona SLIC watch? 🛠
loige
la tua applicazione
serverless.yml
17
Come funziona SLIC watch? 🛠
loige
la tua applicazione
serverless.yml
sls deploy
17
Come funziona SLIC watch? 🛠
loige
la tua applicazione
serverless.yml
Stack CloudFormation
very-big.json
sls deploy
17
Come funziona SLIC watch? 🛠
loige
la tua applicazione
serverless.yml
Stack CloudFormation
very-big.json
sls deploy SLIC Watch
👀🛠
17
Come funziona SLIC watch? 🛠
loige
la tua applicazione
serverless.yml
Stack CloudFormation
very-big.json
Stack CloudFormation ++
even-bigger.json
sls deploy SLIC Watch
👀🛠
📈📊
17
Come funziona SLIC watch? 🛠
loige
la tua applicazione
serverless.yml
Stack CloudFormation
very-big.json
Stack CloudFormation ++
even-bigger.json
sls deploy SLIC Watch Deploy ☁
👀🛠
📈📊
17
loige
Senza SLIC watch!
18
loige
Con SLIC watch!
19
loige
Con SLIC watch!
20
loige
Con SLIC watch!
21
loige
Con SLIC watch!
22
Con SLIC watch!
loige
Dai un'occhiata a SLIC Slack
23
Configurazione
loige
🎀SLIC Watch ha una buona
configurazione di default
 
📝... e puoi comunque cambiare
tutti i parametri
 
🔌... o disabilitare specifiche
dashboard o allarmi
24
Come iniziare
loige
 📣  Crea un Topic SNS come destinazione per gli allarmi (opzionale)
 
 
✍Aggiorna serverless.yml per attivare il plugin:
⚙Modifica la configurazione (opzionale)
 
  
📦 ❯npm i serverless-slic-watch-plugin --save-dev
plugins:
- serverless-slic-watch-plugin
🚢 ❯ sls deploy
💡Il repo ufficiale contiene un
!
progetto esempio
25
DEMO TIME!
loige 26
In conclusione
loige
CloudWatch é un ottimo servizio se configurato ed utilizzato correttamente!
 
L'automazione puó rimuovere le componenti piú tediose
 
SLIC Watch mira a fornire questo tipo di automazione
 
... lasciandoti comunque la possibilitá di personalizzare la configurazione
 
🔬Provalo!   🗣Dacci un feedback!   🌈Contribuisci!
 
fth.link/slic-watch
27
Cover Photo by on
Maarten van den Heuvel Unsplash
loige.link/simple-obs
loige
nodejsdp.link
28

Semplificare l'observability per progetti Serverless

  • 1.
    Semplificare l'observability per progettiServerless Luciano Mammino ( ) @loige 2021-10-21 loige.link/simple-obs 1
  • 2.
  • 3.
  • 4.
  • 5.
    CIAO 👋 Sono Luciano SeniorArchitect @ fourTheorem (Dublin ) 3
  • 6.
    CIAO 👋 Sono Luciano SeniorArchitect @ fourTheorem (Dublin ) nodejsdp.link Co-Autore di Node.js Design Patterns  👉 3
  • 7.
    CIAO 👋 Sono Luciano SeniorArchitect @ fourTheorem (Dublin ) nodejsdp.link Co-Autore di Node.js Design Patterns  👉 Ci connettiamo?   (blog)   (twitter)   (twitch)   (github) loige.co @loige loige lmammino 3
  • 8.
    We are businessfocused technologists that deliver.  |  | Accelerated Serverless AI as a Service Platform Modernisation ⭐Stiamo assumendo:  ti va di ? lavorare con noi loige 4
  • 9.
    loige awsbites.com Ho da pocoavviato un podcast settimanale su AWS 5
  • 10.
  • 11.
    Observability nel Cloud ☁ loige "Una misura di quanto si riesca a comprendere lo stato di un sistema osservandone esclusivamente gli output Log strutturati 🔍 Tracing 📈 Metriche 🚨 Allarmi 7
  • 12.
    Observability su AWS =CloudWatch loige CloudWatch é un servizio che fornisce:      Logs (e insights)   📈   Metriche   📊   Dashboard   🚨   Allarmi   🐥   Canaries   🔍   Tracing distribuito (X-Ray) 8
  • 13.
    Alternative ad AWS loige Soluzionicomuni (as a service) Soluzioni "fai da te" Nuove Soluzioni 9
  • 14.
    CloudWatch  out of thebox 📦 loige 😍Un toolkit completo per l'observability  🤩Colleziona metriche automaticamente per ogni servizio AWS 😟Tante dashboards, ma organizzate per servizio e non per applicazione! 😢Zero allarmi pre-configurati! 10
  • 15.
    Utilizzando servizi terzi 🐶 loige ✅Iprodotti terzi hanno una UX migliore ❌Bisogna esportare i dati da AWS ❌  Alcune feature potrebbero non essere ben integrate o richiedere integrazioni personalizzate ❌  Potresti restare bloccato in dual-mode 11
  • 16.
    Come utilizzare CloudWatchal meglio! loige Cloudwatch puó diventare il tuo miglior amico se... 📚  Studi e comprendi tutte le metriche disponibili 📐  Decidi le varie soglie per i tuoi allarmi 📊  Scrive codice (IaC) per creare dashboards per le tue applicazioni ⏰  Scrivi codice (IaC) anche per gli allarmi ⏪  Aggiorni questo codice quando la tua applicazione cambia (e.g. nuovi servizi AWS vengono utilizzati) 📋  Copi ed incolli (e modifichi) tutto questo codice per ogni stack delle tue applicazioni su AWS!   (a.k.a. TANTO DURO LAVORO!)   12
  • 17.
    Come utilizzare CloudWatchal meglio! loige Cloudwatch puó diventare il tuo miglior amico se... 📚  Studi e comprendi tutte le metriche disponibili 📐  Decidi le varie soglie per i tuoi allarmi 📊  Scrive codice (IaC) per creare dashboards per le tue applicazioni ⏰  Scrivi codice (IaC) anche per gli allarmi ⏪  Aggiorni questo codice quando la tua applicazione cambia (e.g. nuovi servizi AWS vengono utilizzati) 📋  Copi ed incolli (e modifichi) tutto questo codice per ogni stack delle tue applicazioni su AWS!   (a.k.a. TANTO DURO LAVORO!)   12
  • 18.
    Best practices loige 😇AWS WellArchitected Framework 🏛  5 pilastri  ⚙  Il pilastro "Operational excellence" copre l'argomento "observability" 🧐Serverless lens applica questi pilastri   👍Ottima guida sulle metriche da utilizzare 👎Altra roba da studiare 👎Devi comunque decidere le soglie 13
  • 19.
    Scrivere allarmi conCloudFormation loige { "Type":"AWS::CloudWatch::Alarm", "Properties":{ "ActionsEnabled":true, "AlarmActions":[ "arn:aws:sns:eu-west-1:665863320777:FTSLICAlarms" ], "AlarmName":"LambdaThrottles_serverless-test-project-dev-hello", "AlarmDescription":"Throttles % for serverless-test-project-dev-hello .. "EvaluationPeriods":1, "ComparisonOperator":"GreaterThanThreshold", "Threshold":0, "TreatMissingData":"notBreaching", "Metrics":[ { "Id":"throttles_pc", "Expression":"(throttles / throttles + invocations) * 100", "Label":"% Throttles", "ReturnData":true }, { "Id":"throttles", "...":"..." } ] } } [ { "...":"...", "MetricStat":{ "Metric":{ "Namespace":"AWS/Lambda", "MetricName":"Throttles", "Dimensions":[ { "Name":"FunctionName", "Value":"serverless-test-project-dev-hello" } ] }, "Period":60, "Stat":"Sum" }, "ReturnData":false }, { "Id":"invocations", "MetricStat":{ "Metric":{ "Namespace":"AWS/Lambda", "MetricName":"Invocations", "...":"..." } } } ] 14
  • 20.
    Scrivere allarmi conCloudFormation loige { "Type":"AWS::CloudWatch::Alarm", "Properties":{ "ActionsEnabled":true, "AlarmActions":[ "arn:aws:sns:eu-west-1:665863320777:FTSLICAlarms" ], "AlarmName":"LambdaThrottles_serverless-test-project-dev-hello", "AlarmDescription":"Throttles % for serverless-test-project-dev-hello .. "EvaluationPeriods":1, "ComparisonOperator":"GreaterThanThreshold", "Threshold":0, "TreatMissingData":"notBreaching", "Metrics":[ { "Id":"throttles_pc", "Expression":"(throttles / throttles + invocations) * 100", "Label":"% Throttles", "ReturnData":true }, { "Id":"throttles", "...":"..." } ] } } [ { "...":"...", "MetricStat":{ "Metric":{ "Namespace":"AWS/Lambda", "MetricName":"Throttles", "Dimensions":[ { "Name":"FunctionName", "Value":"serverless-test-project-dev-hello" } ] }, "Period":60, "Stat":"Sum" }, "ReturnData":false }, { "Id":"invocations", "MetricStat":{ "Metric":{ "Namespace":"AWS/Lambda", "MetricName":"Invocations", "...":"..." } } } ] 14
  • 21.
  • 22.
  • 23.
    Ecco a voi SLICwatch! loige fth.link/slic-watch 16
  • 24.
    Come funziona SLICwatch? 🛠 loige la tua applicazione serverless.yml 17
  • 25.
    Come funziona SLICwatch? 🛠 loige la tua applicazione serverless.yml sls deploy 17
  • 26.
    Come funziona SLICwatch? 🛠 loige la tua applicazione serverless.yml Stack CloudFormation very-big.json sls deploy 17
  • 27.
    Come funziona SLICwatch? 🛠 loige la tua applicazione serverless.yml Stack CloudFormation very-big.json sls deploy SLIC Watch 👀🛠 17
  • 28.
    Come funziona SLICwatch? 🛠 loige la tua applicazione serverless.yml Stack CloudFormation very-big.json Stack CloudFormation ++ even-bigger.json sls deploy SLIC Watch 👀🛠 📈📊 17
  • 29.
    Come funziona SLICwatch? 🛠 loige la tua applicazione serverless.yml Stack CloudFormation very-big.json Stack CloudFormation ++ even-bigger.json sls deploy SLIC Watch Deploy ☁ 👀🛠 📈📊 17
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
    Con SLIC watch! loige Daiun'occhiata a SLIC Slack 23
  • 36.
    Configurazione loige 🎀SLIC Watch hauna buona configurazione di default   📝... e puoi comunque cambiare tutti i parametri   🔌... o disabilitare specifiche dashboard o allarmi 24
  • 37.
    Come iniziare loige  📣  Creaun Topic SNS come destinazione per gli allarmi (opzionale)     ✍Aggiorna serverless.yml per attivare il plugin: ⚙Modifica la configurazione (opzionale)      📦 ❯npm i serverless-slic-watch-plugin --save-dev plugins: - serverless-slic-watch-plugin 🚢 ❯ sls deploy 💡Il repo ufficiale contiene un ! progetto esempio 25
  • 38.
  • 39.
    In conclusione loige CloudWatch éun ottimo servizio se configurato ed utilizzato correttamente!   L'automazione puó rimuovere le componenti piú tediose   SLIC Watch mira a fornire questo tipo di automazione   ... lasciandoti comunque la possibilitá di personalizzare la configurazione   🔬Provalo!   🗣Dacci un feedback!   🌈Contribuisci!   fth.link/slic-watch 27
  • 40.
    Cover Photo byon Maarten van den Heuvel Unsplash loige.link/simple-obs loige nodejsdp.link 28