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