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!

F3a6662b3cd161c3c2f13604965ed0f2?s=128

Luciano Mammino

October 21, 2021
Tweet

More Decks by Luciano Mammino

Other Decks in Technology

Transcript

  1. Semplificare l'observability per progetti Serverless Luciano Mammino ( ) @loige

    2021-10-21 loige.link/simple-obs 1
  2. Get these slides! loige loige.link/simple-obs 2

  3. CIAO 👋 3

  4. CIAO 👋 Sono Luciano 3

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

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

    nodejsdp.link Co-Autore di Node.js Design Patterns 👉 3
  7. 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
  8. 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
  9. loige awsbites.com Ho da poco avviato un podcast settimanale su

    AWS 5
  10. "Observability" loige 6

  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 Soluzioni comuni (as a service) Soluzioni

    "fai da te" Nuove Soluzioni 9
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. Possiamo automatizzare? loige 15

  22. Possiamo automatizzare? loige Magically generated alarms and dashboards for each

    application! 15
  23. Ecco a voi SLIC watch! loige fth.link/slic-watch 16

  24. Come funziona SLIC watch? 🛠 loige la tua applicazione serverless.yml

    17
  25. Come funziona SLIC watch? 🛠 loige la tua applicazione serverless.yml

    sls deploy 17
  26. Come funziona SLIC watch? 🛠 loige la tua applicazione serverless.yml

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

    Stack CloudFormation very-big.json sls deploy SLIC Watch 👀🛠 17
  28. 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
  29. 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
  30. loige Senza SLIC watch! 18

  31. loige Con SLIC watch! 19

  32. loige Con SLIC watch! 20

  33. loige Con SLIC watch! 21

  34. loige Con SLIC watch! 22

  35. Con SLIC watch! loige Dai un'occhiata a SLIC Slack 23

  36. Configurazione loige 🎀 SLIC Watch ha una buona configurazione di

    default 📝 ... e puoi comunque cambiare tutti i parametri 🔌 ... o disabilitare specifiche dashboard o allarmi 24
  37. 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
  38. DEMO TIME! loige 26

  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 by on Maarten van den Heuvel Unsplash loige.link/simple-obs

    loige nodejsdp.link 28