Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Semplificare l'observability per progetti Serverless

Semplificare l'observability per progetti Serverless

Hai mai pensato che le tue lambda functions possano fallire senza che tu te ne accorga? Se la risposta é "SI" probabilmente é perché ti sei giá "bruciato" giocando con il cloud, dove errori e fallimenti sono sempre dietro l'angolo. Purtroppo non possiamo prevenire tutti i fallimenti, pero' possiamo essere notificati quando qualcosa va storto cosí da poter reagire tempestivamente. Ma come fare a configurare il nostro ambiente AWS per raggiungere un buon livello di "Observability"? Se hai giá provato ad utilizzare CloudWatch saprai giá quanto possa essere complesso. In questo talk, esploreremo il tema dell'observability per applicazioni Serverless su AWS. Discuteremo problemi e best practices. Infine vi proporró un tool che permette di automatizzare la configurazione di CloudWatch per l'80% delle esigenze in pochi minuti!

Luciano Mammino

October 21, 2021
Tweet

More Decks by Luciano Mammino

Other Decks in Technology

Transcript

  1. CIAO 👋 Sono Luciano Senior Architect @ fourTheorem (Dublin )

    nodejsdp.link Co-Autore di Node.js Design Patterns 👉 3
  2. 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
  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
  4. 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
  5. Observability su AWS = CloudWatch loige CloudWatch é un servizio

    che fornisce: Logs (e insights) 📈 Metriche 📊 Dashboard 🚨 Allarmi 🐥 Canaries 🔍 Tracing distribuito (X-Ray) 8
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. Come funziona SLIC watch? 🛠 loige la tua applicazione serverless.yml

    Stack CloudFormation very-big.json sls deploy 17
  14. Come funziona SLIC watch? 🛠 loige la tua applicazione serverless.yml

    Stack CloudFormation very-big.json sls deploy SLIC Watch 👀🛠 17
  15. 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
  16. 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
  17. Configurazione loige 🎀 SLIC Watch ha una buona configurazione di

    default 📝 ... e puoi comunque cambiare tutti i parametri 🔌 ... o disabilitare specifiche dashboard o allarmi 24
  18. 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
  19. 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