Slide 1

Slide 1 text

Semplificare l'observability per progetti Serverless Luciano Mammino ( ) @loige 2021-10-21 loige.link/simple-obs 1

Slide 2

Slide 2 text

Get these slides! loige loige.link/simple-obs 2

Slide 3

Slide 3 text

CIAO 👋 3

Slide 4

Slide 4 text

CIAO 👋 Sono Luciano 3

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

CIAO 👋 Sono Luciano Senior Architect @ fourTheorem (Dublin ) nodejsdp.link Co-Autore di Node.js Design Patterns 👉 3

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

loige awsbites.com Ho da poco avviato un podcast settimanale su AWS 5

Slide 10

Slide 10 text

"Observability" loige 6

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Observability su AWS = CloudWatch loige CloudWatch é un servizio che fornisce: Logs (e insights) 📈 Metriche 📊 Dashboard 🚨 Allarmi 🐥 Canaries 🔍 Tracing distribuito (X-Ray) 8

Slide 13

Slide 13 text

Alternative ad AWS loige Soluzioni comuni (as a service) Soluzioni "fai da te" Nuove Soluzioni 9

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Possiamo automatizzare? loige 15

Slide 22

Slide 22 text

Possiamo automatizzare? loige Magically generated alarms and dashboards for each application! 15

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

loige Senza SLIC watch! 18

Slide 31

Slide 31 text

loige Con SLIC watch! 19

Slide 32

Slide 32 text

loige Con SLIC watch! 20

Slide 33

Slide 33 text

loige Con SLIC watch! 21

Slide 34

Slide 34 text

loige Con SLIC watch! 22

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

Configurazione loige 🎀 SLIC Watch ha una buona configurazione di default 📝 ... e puoi comunque cambiare tutti i parametri 🔌 ... o disabilitare specifiche dashboard o allarmi 24

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

DEMO TIME! loige 26

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

Cover Photo by on Maarten van den Heuvel Unsplash loige.link/simple-obs loige nodejsdp.link 28