Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Green Cloud, Green Code: esploriamo il potenzia...

Avatar for paoloyx paoloyx
October 11, 2024

Green Cloud, Green Code: esploriamo il potenziale green delle tecnologie Cloud Native

Avatar for paoloyx

paoloyx

October 11, 2024

Other Decks in Technology

Transcript

  1. Riscaldiamo i motori • Paolo Filippelli (DevOps Lead @ Radicalbit.ai)

    ◦ X: @paoloyx ◦ LinkedIn: https://www.linkedin.com/in/paolofilippelli/
  2. Riscaldiamo i motori • Paolo Filippelli (DevOps Lead @ Radicalbit.ai)

    ◦ X: @paoloyx ◦ LinkedIn: https://www.linkedin.com/in/paolofilippelli/ • Cosa vedremo in questo talk? ◦ Come usare in modo sostenibile le tecnologie cloud native tramite l’introduzione di principi e di patterns sin da subito applicabili
  3. Impatti tecnologici e sostenibilità Datacenters IEA attribuisce circa l’1,5% del

    consumo totale di elettricità globale ai data center e alle reti di trasmissione dati ([1]) Artificial Intelligence L'addestramento di GPT-3 con 175 miliardi di parametri ha consumato quanto 112 auto a benzina guidate per un anno. ([2]) Cryptocurrencies L’energia usata per il Bitcoin ([3]) equivale a tutto il consumo annuale della Finlandia ([4]) Media Streaming Un’ora di streaming video equivale a 2,5 auto che guidano per 100 metri ([5]) Obsolescenza devices Nel 2022, la quantità di rifiuti elettronici ha raggiunto 59,4 milioni di tonnellate, con un aumento del 33% rispetto al 2016, quando erano già come 4500 Torri Eiffel ([6])
  4. Green Software Principles ([7]) Carbon Efficiency Emit the least amount

    of carbon possible Energy Efficiency Use the least amount of energy possible Carbon Awareness Do more when the electricity is cleaner and do less when the electricity is dirtier Hardware Efficiency Use the least amount of embodied carbon possible Measurement What you can't measure, you can't improve (SCI = Software Carbon Intensity) Climate commitments Understand the exact mechanism of carbon reduction
  5. #1 - Essere Carbon Aware #2 - Scrittura del codice

    #3 - CI/CD Pipelines #4 - Build Artefatti #5 - Deploy & Run #6 - Monitoring & Governance
  6. Essere Carbon Aware #1 - Essere Carbon Aware Adottare tecniche

    di demand shaping/shifting Ricordarsi che l’efficienza energetica dipende dall'efficienza dell'hardware utilizzato e da come l’utente finale userà il software Il nostro target è quello di ridurre la Software Carbon Intensity (SCI) Addestrare modelli di intelligenza artificiale quando le emissioni di carbonio sono inferiori Distribuzione di software nel cloud in luoghi che dispongono di fonti energetiche più ecologiche Esecuzione degli aggiornamenti software in finestre temporali energetiche più ecologiche Promuovere casi aziendali per il cambiamento e creare un futuro più verde
  7. APIs: WattTime ([8]) / ElectricityMaps ([9]) #1 - Essere Carbon

    Aware WattTime (https://watttime.org/docs-dev/coverage-map/) - 30/09/2024 ElectricityMaps (https://app.electricitymaps.com/map) - 30/09/2024
  8. Tools/SDKs #1 - Essere Carbon Aware Carbon Aware SDK ([10])

    • Set di strumenti per la creazione di applicazioni “carbon-aware” (CLI, SDK (.Net) o Rest API) • Utilizza WattTime/ElectricityMaps • Es: in fase di deployment capisco dove inquino meno • Es: faccio forecasting per decidere dove/come spostare il mio workload per inquinare di meno Impact Framework ([11]) • Simulatore basato su un manifest file che definisce l'architettura dell'applicazione, il periodo di osservazione, i calcoli e le trasformazioni da eseguire e il tipo di impatto da calcolare. • Plug-in based e verificabile, blueprint può essere eseguito da chiunque
  9. Principi guida #2 - Scrittura del codice Ottimizzazione codice •

    Preferire operazioni matematiche efficienti, riutilizzare i risultati intermedi • Ridurre loop e salti condizionali • Utilizzare algoritmi e strutture dati efficienti, così come variabili locali anziché globali • Utilizzare architetture event-based e scrivere codice multi-threaded Linguaggi programmazione • I linguaggi più “vicini” al metallo consumano di meno • Diversi studi comparativi su efficienza energetica dei linguaggi ([12])([13])
  10. Green Software Patterns ([14]) #2 - Scrittura del codice Iniziativa

    molto interessante patrocinata dalla Green Software Foundation. “An online open-source database of software patterns reviewed and curated by the Green Software Foundation across a wide range of categories. You can be confident that applying any of our published and live patterns will reduce your software emissions.” Cloud Optimize impact on customer devices and equipment Web Serve images in modern formats AI Use a cloud region which has a lower carbon intensity value for running your AI/ML training workloads. etc. etc.
  11. Principi guida #3 - CI/CD Pipelines Ottimizzazione pipelines • Ridurre

    la durata e limitare le operazioni al minimo necessario per il deploy del software • Strumenti specifici monitorare il consumo energetico e calcolare le emissioni di CO 2 equivalente • Bloccare il deploy se inquino di più Tools • Eco CI ([15]) e permette di stimare il consumo energetico di CI jobs, in base alle caratteristiche di consumo energetico dell'hardware sottostante • GreenFrame CLI ([16]) misura la carbon footprint di una visita ad una qualsiasi pagina web e permette il blocco del deploy se si superano determinate soglie
  12. Principi guida #4 - Build Artefatti Generare OCI images minimali

    • Utilizzo di multistage builds e selezione di una base image pre-ottimizzata come alpine o scratch • Consolidamento ed ottimizzazione dei Docker layers per sfruttare il caching • Immagini minimali con ridotto impatto su storage, rete, tempi di avvio e sicurezza • Tools: dive ([17]), slim ([18]) FROM golang:1.22 as builder WORKDIR /app COPY go.mod go.sum ./ RUN go mod download COPY . . RUN go build -o main . FROM gcr.io/distroless/base-debian10 COPY --from=builder /app/main /main EXPOSE 8080 ENTRYPOINT ["/main"]
  13. Principi guida #5 - Deploy & Run Ottimizzazione computazionale •

    Autoscaling, sia verticale che orizzontale, per allineare l'impiego di risorse in base alla "domanda" • Approccio serverless: eseguire il codice solo quando necessario • Spegnere quello che non serve, quando non serve • Grid energetiche il più possibile green (supporto cloud providers) • Estendere la vita dell’ hardware • Runtimes alternativi come Wasm ([19]) Tools • Knative ([20]), KEDA ([21]), OpenFaas ([22]) • Kube-green [(23)]: Kubernetes Operator che permette di spegnere i workloads quando nessuno li usa apiVersion: kube-green.com/v1alpha1 kind: SleepInfo metadata: name: working-hours spec: weekdays: "1-5" sleepAt: "20:00" wakeUpAt: "08:00" timeZone: "Europe/Rome" suspendCronJobs: true excludeRef: - apiVersion: "apps/v1" kind: Deployment name: my-deployment
  14. Principi guida #6 - Monitoring & Governance Monitoraggio continuo •

    Emissioni di CO 2 equivalente • Infrastruttura accesa ma non utilizzata • Costi, come proxy del consumo energetico e delle emissioni • Performance del software, per individuare/eliminare bottlenecks Governance • GitOps: L'automazione dei deployment riduce gli errori, mentre versionamento e tracciabilità facilitano i rollback e monitorano i server inutilizzati • FinOps: attribuisce responsabilità dei costi, favorendo responsabilità e tracciabilità per identificare risparmi e correggere inefficienze • Abbattere la proliferazione di cluster K8s (Legge di Conway ([24]))
  15. Principi guida #6 - Monitoring & Governance Tools • Kepler

    ([25]) ◦ Exporter Prometheus che usa eBPF ([26]) per monitorare le emissioni di un cluster Kubernetes al livello di container. E’ alla base Clever (VPA recommender[27]) e Peaks (scheduler[28]) • Cloud Carbon Footprint ([29]) ◦ Permette di stimare il consumo di CO 2 equivalente causato dall’utilizzo di risorse cloud dei principali cloud providers (si basa su dataset pubblici) • OpenCost ([30]) ◦ Controllo dei costi associati a risorse k8s/cloud (proxy di consumo energetico e quindi di emissioni) • Grafana Pyroscope ([31]) ◦ Profilazione continua del software, permette di capire l’utilizzo “idle” di risorse computazionali, così come di individuare parti critiche tramite flamegraphs
  16. Wrap-up • La sostenibilità è una questione e necessità importante

    che non possiamo più ignorare • Coordinamento tra comunità scientifiche ed aziende per definire i principi ed implementare i patterns • Molte pratiche/tecnologie che aiutano ad essere più green, a diversi livelli del ciclo di vita del software • Le comunità e le organizzazioni non-profit sono essenziali: ◦ Fare la propria parte è altrettanto essenziale
  17. Bibliografia • Green Software Foundation - Glossary ◦ https://learn.greensoftware.foundation/glossary ◦

    Glossario per definire le terminologie (in modo non ambiguo) • Green Software Principles ◦ certificazione: https://learn.greensoftware.foundation • Green Software ◦ https://github.com/Green-Software-Foundation/awesome-green-software ◦ Ricerca, strumenti, codice, librerie e formazione per la creazione di applicazioni che emettono meno carbonio nella nostra atmosfera. • Green Software Patterns ◦ https://patterns.greensoftware.foundation/
  18. Bibliografia 1. https://www.iea.org/energy-system/buildings/data-centres-and-data-transmission-networks 2. https://arxiv.org/ftp/arxiv/papers/2104/2104.10350.pdf 3. https://ccaf.io/cbnsi/cbeci 4. https://www.eia.gov/international/data/world/electricity/electricity-consumption 5.

    https://ctprodstorageaccountp.blob.core.windows.net/prod-drupal-files/documents/resource/public/Carbon-impact -of-video-streaming.pdf 6. https://eco.kde.org/blog/2024-05-29_introducing-ns4nh/ 7. https://learn.greensoftware.foundation/ 8. https://watttime.org/ 9. https://www.electricitymaps.com/ 10. https://github.com/Green-Software-Foundation/carbon-aware-sdk 11. https://if.greensoftware.foundation/ 12. https://greenlab.di.uminho.pt/wp-content/uploads/2017/10/sleFinal.pdf 13. https://benchmarksgame-team.pages.debian.net/benchmarksgame/ 14. https://patterns.greensoftware.foundation/ 15. https://github.com/green-coding-solutions/eco-ci-energy-estimation 16. https://github.com/marmelab/greenframe-cli?tab=readme-ov-file#greenframe-kube-config 17. https://github.com/wagoodman/dive
  19. Bibliografia 18. https://github.com/slimtoolkit/slim 19. https://webassembly.org/ 20. https://knative.dev 21. https://keda.sh/ 22.

    https://www.openfaas.com/ 23. https://kube-green.dev/ 24. https://it.wikipedia.org/wiki/Legge_di_Conway 25. https://github.com/sustainable-computing-io/kepler 26. https://ebpf.io/ 27. https://github.com/sustainable-computing-io/clever 28. https://github.com/sustainable-computing-io/peaks 29. https://www.cloudcarbonfootprint.org/docs/ 30. https://www.opencost.io/ 31. https://grafana.com/docs/pyroscope/latest/ 32. https://hack.greensoftware.foundation/