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. Semplificare l'observability
    per progetti Serverless
    Luciano Mammino ( )
    @loige
    2021-10-21
    loige.link/simple-obs
    1

    View full-size slide

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

    View full-size slide

  3. CIAO
    👋
    Sono Luciano
    3

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  6. 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

    View full-size slide

  7. 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

    View full-size slide

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

    View full-size slide

  9. "Observability"
    loige 6

    View full-size slide

  10. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  13. 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

    View full-size slide

  14. 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

    View full-size slide

  15. 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

    View full-size slide

  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

    View full-size slide

  17. 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

    View full-size slide

  18. 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

    View full-size slide

  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

    View full-size slide

  20. Possiamo automatizzare?
    loige 15

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  27. 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

    View full-size slide

  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 Deploy

    👀🛠
    📈📊
    17

    View full-size slide

  29. loige
    Senza SLIC watch!
    18

    View full-size slide

  30. loige
    Con SLIC watch!
    19

    View full-size slide

  31. loige
    Con SLIC watch!
    20

    View full-size slide

  32. loige
    Con SLIC watch!
    21

    View full-size slide

  33. loige
    Con SLIC watch!
    22

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  36. 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

    View full-size slide

  37. DEMO TIME!
    loige 26

    View full-size slide

  38. 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

    View full-size slide

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

    View full-size slide