◦ 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
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])
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
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
• 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
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])
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.
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
• 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"]
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
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]))
([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
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
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/