Anche lo sviluppo del software ha un impatto importante sul clima e sull’ambiente.
Qualche esempio?
I Bitcoin producono tra 22 e 22.9 milioni di tonnellate di anidride carbonica all’anno
Minecraft, il videogioco più giocato al mondo, ha prodotto nella sua vita 600 milioni di kg di CO2
Gli sviluppatori che hanno realizzato questi software non pensavano di avere un impatto così importante sul clima mondiale.
Ora, però, è il momento di pensarci per il futuro.
Per questo ho realizzato kube-green, un progetto OSS su GitHub che ha l’obiettivo di ridurre la carbon footprint di applicativi Cloud Native.
In questo talk vedremo come funziona, una live demo e la sua roadmap per avere un mondo sempre più pulito e un software funzionante e scalabile.
2. https://github.com/davidebianchi/kube-green
Inquinamento? E’ un problema anche del digitale
0,6 milioni di
tonnellate di CO2
in tutta la vita*
*https://www.saveonenergy.com/uk/en
vironmental-impact-of-video-games/
22 milioni di
tonnellate
CO2/anno
*https://www.reuters.com/technology/h
ow-big-is-bitcoins-carbon-footprint-202
1-05-13/
Gli sviluppatori che hanno realizzato questi software non pensavano di avere un impatto così
importante sul clima mondiale.
Impariamo dal passato e guardiamo al futuro. Il Cloud Native è una grande opportunità e un grande
rischio se non gestito in modo opportuno. Ognuno di noi può contribuire!
3. https://github.com/davidebianchi/kube-green
I costi, e i consumi energetici, sono dovuti a
*https://thestack.technology/google-cloud-emissions-tool-low-carbon/
Consumo elettrico dovuto a:
● CPU
● Storage
● Networking
● Tutti gli apparati che servono per
rinfrescare, illuminare e gestire i
data center
5. https://github.com/davidebianchi/kube-green
Quanto CO2e produce un cluster kubernetes?
*https://www.goclimate.com/blog/the-carbon-footprint-of-servers/#:
~:text=Emissions%20from%20production%20of%20servers,consu
mption%3A%200%20kg%20CO2e%2Fyear
Caratteristiche del cluster con nodi da 2 core:
● 3 worker node
● 1 master node
Worker
node
2 core
Worker
node
2 core
Worker
node
2 core
Master Node
Control Plane
2 core
Server K8s: 640Kg C02e / anno
Autovettura euro 6 che fa
15.000km/anno
750Kg C02 / anno (stimato)
Ogni server: 160Kg C02e / anno
Pod medi su un cluster di questa
dimensione, circa 50
Ogni Pod produce: 12Kg C02e / anno
Dobbiamo piantare 50 alberi!
*https://en.wikipedia.org/wiki/European_emission_
standards
*https://www.reteclima.it/l-albero-mangia-la-co2
6. https://github.com/davidebianchi/kube-green
Con i server nei data center si scalava/a a
gradini alti.
PRO: costi sotto controllo, automazione
meno spinta
CONTRO: si consuma più del necessario
costs
time
Performance request
costs
time
Infrastructure scaling
Con K8s si scala a con piccoli incrementi.
PRO: si spende quello che serve
CONTRO: si segue la curva in automatico
e non sempre la crescita è legata a una
crescita del business
Spreco
Perché rischiamo di andare fuori controllo?
7. https://github.com/davidebianchi/kube-green
Quali insidie nasconde una soluzione Cloud Native?
Design e scrittura del codice troppo complesso e che fa cose che non servono
● Algoritmi complessi inutilmente
● Deframmentazione delle responsabilità: troppi microservizi
● Framework istanziati ma inutili
● Resource request/limits sovra dimensionati
● Repliche statiche per alta affidabilità non necessarie
● HPA configurate male
● Ambienti di runtime replicati eccessivamente (dev, test, preprod, collaudo,
prod, disaster recovery, hot fix, l’ambiente per il team a, l’ambiente per il team
b ecc)
8. https://github.com/davidebianchi/kube-green
Scalare Bene VS Male
Male
Perché il codice è scritto male, ci
sono tanti ambienti che non sono
utilizzati se non sporadicamente.
Bene
Perché il business scala
E... fa anche downscale
Lo scaling non genera valore
di business o per i clienti finali
ma per inefficienze interne
23. https://github.com/davidebianchi/kube-green
Un po’ di numeri
Totali Kube-green attivo Differenza
N di pod 1050 450 -600
Memory consumed [Gb] 54 21 -33
CPU consumed [cpu] 4.5 1 -3.5
Memory allocated [Gb] 75 30 -45
CPU allocated [cpu] 40 15 -25
CO2e/week [kg] 242 151 -91
48/75 namespace con kube-green attivato
26. https://github.com/davidebianchi/kube-green
Roadmap
● Salvare uno storico delle modifiche fatte dal controller sul cluster
● Sospensione dei cronjob [WIP]
● Fare un frontend per gestire le risorse e visualizzare lo storico
● Una dashboard per visualizzare il risparmio energetico [WIP]
● Poter sospendere il funzionamento
● Fare un trigger immediato
● Usare delle custom metrics per decidere se fare la sleep
● Restart in caso di chiamate API a uno dei namespace spento
● Disattivare il namespace con un countdown
● Gestione per cluster con annotation su namespace