Semplificare l'observability

per progetti Serverless

Luciano Mammino (@loige)

2021-10-21

Get these slides!

CIAO 👋

Sono Luciano

Senior Architect @ fourTheorem (Dublin 🇮🇪) 👨‍💻

Co-Autore di Node.js Design Patterns  👉

Ci connettiamo?

  loige.co (blog)

  @loige (twitter)

  loige (twitch)

  lmammino (github)

We are business focused technologists that deliver.


Accelerated Serverless | AI as a Service | Platform Modernisation

⭐️ Stiamo assumendo:  ti va di lavorare con noi?

Ho da poco avviato un podcast settimanale su AWS

"Observability"

Observability nel Cloud ☁️

" Una misura di quanto si riesca a comprendere lo stato di un sistema osservandone esclusivamente gli output

🪵

Log strutturati

🔍

Tracing

📈

Metriche

🚨

Allarmi

Observability su AWS = CloudWatch

CloudWatch é un servizio che fornisce:

 

  🪵  Logs (e insights)

  📈   Metriche

  📊   Dashboard

  🚨   Allarmi

  🐥   Canaries

  🔍   Tracing distribuito (X-Ray)

Alternative ad AWS

Soluzioni comuni (as a service)

Soluzioni "fai da te"

Nuove Soluzioni

CloudWatch 
out of the box 📦

😍 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!

Utilizzando
servizi terzi 🐶

✅ 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

Come utilizzare CloudWatch al meglio!

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!)

 

Best practices

😇 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

Scrivere allarmi con CloudFormation

{
  "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",
        "...":"..."
      }
    }
  }
]

Possiamo automatizzare?

Magically generated alarms and dashboards for each application!

Ecco a voi

SLIC watch!

Come funziona SLIC watch? 🛠

la tua applicazione

serverless.yml

Stack CloudFormation

very-big.json

Stack CloudFormation ++

even-bigger.json

sls deploy
SLIC Watch

Deploy ☁️

👀🛠

📈📊

Senza SLIC watch!

Con SLIC watch!

Con SLIC watch!

Con SLIC watch!

Con SLIC watch!

Con SLIC watch!

Dai un'occhiata a SLIC Slack

Configurazione

🎀 SLIC Watch ha una buona configurazione di default

 

📝 ... e puoi comunque cambiare tutti i parametri

 

🔌 ... o disabilitare specifiche dashboard o allarmi

Come iniziare

 📣  Crea un Topic SNS come destinazione per gli allarmi (opzionale)

 

📦 ❯npm i serverless-slic-watch-plugin --save-dev

 

✍️ Aggiorna serverless.yml per attivare il plugin:

    plugins:
      - serverless-slic-watch-plugin


⚙️ Modifica la configurazione (opzionale)

 

🚢 ❯ sls deploy

  

💡 Il repo ufficiale contiene un

progetto esempio!

DEMO TIME!

In conclusione 🤌

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

 

Cover Photo by Maarten van den Heuvel on Unsplash

Semplificare l'observability per progetti Serverless

By Luciano Mammino

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!

  • 3,677