Inleiding
Als ontwikkelaar en architect hebben wij veel invloed op onze leefomgeving; hier moeten we wat mee! Veel mensen gebruiken thuis groene stroom of zijn op andere manieren bezig met een beter milieu. Denk je hierover ook na wanneer je software ontwikkelt? Het idee van green computing gaat gelukkig steeds meer leven: wij als software bouwers moeten bijdragen aan een beter milieu. Dit artikel geeft een overzicht van green computing. Het gaat uiteindelijk allemaal over delen, simpel toch, dus begin er vandaag nog mee!
Wat is het probleem?
In basis is het probleem eenvoudig: we verbruiken als IT-industrie teveel energie. Deze energie moet worden opgewekt en dit is niet goed voor de CO2-uitstoot, en daarmee slecht voor het milieu. Deze energie wordt gebruikt om onze computers in leven te houden. De CPU eet energie, de disks eten energie, maar ook de koeling van onze rekencentra verbruikt veel energie.
De hoeveelheid energie die door computers wordt opgeslokt is enorm. Je moet denken aan ongeveer 2% van alle energie die wordt verbruikt in een gemiddeld West Europees land! De benodigde energie schijnt iedere vijf jaar ook nog eens te verdubbelen. Kortom het is substantieel!
Ook wij, als developers en architecten, kunnen ons dit aantrekken. Jarenlang zijn wij verwend dankzij de wet van Moore. De hoeveelheid rekenkracht, disk en geheugen kon niet op. Het tijdperk dat we er serieus over nadachten om ons programma zo klein en efficiënt mogelijk te maken li9t al ver achter ons. Kortom, wij consumeren al die resources zonder enig nadenken.

Fig. 1: De wet van Moore
Zo ontwikkelen wij b.v. de meeste van onze code niet alleen op een single-processor machine, maar ook voor een single-processor machine. Het is niet ongebruikelijk dat deze code vervolgens op een server komt te draaien die meerdere processoren heeft. Dat betekent dat de code draait op een machine die een overvloed heeft aan rekenkracht waar geen gebruik van wordt gemaakt, maar waar helaas wel voor moet worden betaald. Ook wanneer een processor niets doet, wordt er de nodige energie verbruikt, helaas. Herken je deze situatie?
Waarschijnlijk is het grootste probleem dat we helemaal geen rekening houden met green computing tijdens ons ontwikkelproces. We vinden het gewoonweg niet belangrijk genoeg. Er worden geen eisen gesteld ten aanzien van green computing, maar wel aan schaalbaarheid, performance en beschikbaarheid. Sterker nog, vaak staan de eisen die we stellen green computing in de weg. Beschikbaarheid wordt vaak opgelost met meer en redundante hardware. Schaalbaarheid betekent vaak dat we uitgaan van het scenario dat we de maximale load op ieder willekeurig moment aan moeten kunnen; opnieuw resulteert dit in veel hardware.
Wat is green computing?
Waar hebben we het eigenlijk over wanneer we over green computing praten? Bij green computing denken we na over hoe we software en infrastructuur kunnen ontwikkelen die vriendelijk zijn voor het milieu. We denken na over hoe we applicaties kunnen ontwerpen en realiseren die het gebruik van resources minimaliseert. Bij green computing wordt vaak alleen aan infrastructuur gedacht, maar de software-architect en -ontwikkelaar hebben minimaal evenveel invloed. Zij nemen dagelijks diverse beslissingen die een positieve of negatieve invloed hebben op green computing.
Is green computing voor iedereen interessant? Ik denk van wel. We hebben met elkaar natuurlijk een morele verantwoordelijkheid, maar er is ook een andere reden. De belangrijkste reden om na te denken over green computing is geld! De hoeveelheid energie die wordt verbruikt is natuurlijk aanzienlijk voor een organisatie, en hiervoor moet worden betaald. In de toekomst kunnen we verwachten dat de kosten, maar ook zeker de belastingen, voor energie zullen toenemen. Green computing betekent dat er minder energie wordt gebruikt, en dus dat er bespaard kan worden. Dat is toch voor iedereen interessant?
Green computing == delen
Hoe begin je met green computing? De basisgedachte van green computing is om niet alles voor jezelf te willen hebben, maar dat je juist gaat delen. Eigenlijk is green computing niets meer of minder dan alles eerlijk delen.
Eigenlijk is green computing niets meer of minder dan alles eerlijk delen
Dit klinkt logisch maar is helaas voor de meeste ontwikkelaars en architecten niet vanzelfsprekend. Wij realiseren vaak producten waarvan we eisen dat deze exclusief en zelfstandig op een machine draaien. Deze software heeft dan specifieke afhankelijkheden, anders dan een eventueel ander product. Om conflicten te vermijden eisen we exclusiviteit.
Het delen wordt vaak gerealiseerd door virtualisatie. Dit is een begrip dat de laatste jaren steeds meer aan populariteit heeft gewonnen. In basis is virtualisatie niets anders dan het idee om met elkaar resources te delen. Virtualisatie kan klein beginnen en uiteindelijk eindigen in cloud computing. Recentelijk kwam ik bij Microsoft de volgende tabel tegen met virtualisatieniveaus:
| Virtualisatie- niveaus |
Naam |
Applicatie |
Infrastructuur |
Locatie |
Eigenaar |
| Niveau 0 |
Local |
Dedicated |
Fixed |
Gedistribueerd |
Intern |
| Niveau 1 |
Logical |
Shared |
Fixed |
Gecentraliseerd |
Intern |
| Niveau 2 |
Data center |
Shared |
Virtueel |
Gecentraliseerd |
Intern |
| Niveau 3 |
Cloud |
Software as a Service |
Virtueel |
Virtueel |
Virtueel |
Tabel 1: Virtualisatieniveaus
De meeste organisaties verkeren momenteel op niveau 1, al heeft niveau 2 de laatste tijd sterk aan populariteit gewonnen. Aan de niveaus kunnen ook technologieën worden gekoppeld. Deze technologieën zijn weergegeven in tabel 2.
| Virtualisatie- niveaus |
Technologie-Aspecten |
| Naam |
Server |
Opslag |
Netwerk |
| Niveau 0 |
Local |
Standalone PC |
Lokale disk |
Geen |
| Niveau 1 |
Logical |
Client/server
N-tier |
File server
Database server |
LAN |
| Niveau 2 |
Data center |
Server virtualisatie |
SAN |
WAN/VPN |
| Niveau 3 |
Cloud |
Cloud platform |
Cloud storage |
Internet |
Tabel 2: Technologie-aspecten voor virtualisatie
Op ieder niveau zijn er verbeteringen mogelijk. In de rest van dit artikel worden de niveaus in meer detail beschreven en wordt er ingegaan op de mogelijke design- en implementatie-verbeteringen.
Wat kun je doen op niveau 0?
Dit is het niveau waar alles lokaal draait, op de eigen machine dus. Op dit niveau wordt er eigenlijk niets gedeeld. Toch zijn er op dit niveau verbeteringen mogelijk. Er wordt namelijk energie verbruikt. Wanneer we de hoeveelheid benodigde energie naar beneden kunnen brengen is dat dus ook winst.
Traditionele ontwerpen houden vaak op geen enkele wijze rekening met de hoeveelheid energie die nodig is. Bij veel operating systems is daar al wel over nagedacht. Vaak heeft dit geresulteerd in een slaap/wachtstand-mode waarin de computer aanzienlijk minder energie verbruikt. Onze software staat echter een dergelijke mode vaak in de weg omdat we resources blijven claimen. Denk hierbij bijvoorbeeld aan connecties die we open hebben staan, ook op het moment dat er niets gebeurt in de applicatie.
Verder gebruiken we in onze applicaties vaak een overdaad aan data. Deze data moet van disk komen (en weer worden teruggezet). De disk is vaak niet de duurste resource, maar blijft toch een resource die energie nodig heeft. Heb je ooit naar je applicatie gekeken met de gedachte om de hoeveelheid disk-access te beperken?
Verder raad ik iedereen aan om eens met een device driver programmeur te praten. Bij deze programmeurs staat een minimaal en efficiënt design nog steeds hoog op de prioriteitenlijst. Een applicatie-ontwerp waarbij zo min mogelijk gebruik gemaakt wordt van de processor en het geheugen is ook efficiënter met energiegebruik.
Wat kun je doen op niveau 1?
Op dit niveau beginnen we met delen. De eerste stap is vaak een gemeenschappelijke database-server, maar ook mail-, internet-, file- en print-servers worden gedeeld. Dit is het niveau waarop client/server applicaties worden ontwikkeld. Wanneer gekozen wordt voor een n-tier architectuur wordt vaak ook een applicatie-server geïntroduceerd.
Van niveau 0 naar niveau 1 is een flinke stap voorwaarts. Op dit niveau kan ook nog de nodige consolidatie plaatsvinden. Heb je echt al die servers nodig? Het is aan de applicatie-programmeur om er voor te zorgen dat de applicatie geen exclusiviteit nodig heeft, en dat is een essentiële voorwaarde om te kunnen delen.
De software-architect speelt op dit niveau ook een belangrijke rol. Het is aan de architect om te zorgen dat er een architectuur en infrastructuur komt waarin kan worden gedeeld. Het is bijvoorbeeld makkelijker om met elkaar dezelfde SQL Server instantie te delen dan wanneer het noodzakelijk is om én Oracle én SQL Server op een systeem te delen. Zorg als architect voor een enterprise architectuur waarin delen mogelijk is!
Dit is ook het niveau waarop ik thuiswerken zie. Maak het dus mogelijk om thuis te werken. Zorg dat je remote bij mail, files en andere resources kunt komen, b.v. door gebruik van VPN. Thuiswerken past prima in het plaatje van green computing!
Thuiswerken past prima in het plaatje van green computing!
Wat kun je doen op niveau 2?
Dit is het niveau waaraan de meeste mensen denken wanneer ze het woord ‘virtualisatie’ horen. Dit is het niveau waarop alle data wordt geconsolideerd op een SAN in een rekencentrum. Dit is het niveau waar virtualisatiesoftware zoals Microsoft Virtual Server of VMWare wordt gebruikt.
Op dit niveau gaan we nadenken over het optimaal gebruiken van onze servers. Een zeer aansprekend voorbeeld voor software-ontwikkelaars is de virtualisatie van de OTAP-omgeving. Het is toch niet noodzakelijk om voor iedere omgeving binnen de OTAP een fysieke server beschikbaar te hebben … logisch toch?
Maar er zijn meer mogelijkheden. Je kunt b.v. bedenken om de print- of applicatie-server ’s avonds te stoppen en in de ochtend weer te starten. Het starten en stoppen van virtuele machines is standaard functionaliteit die kan worden toegepast.
Wat kunnen wij doen als ontwikkelaars? Zorg ervoor dat je applicatie geen directe afhankelijkheid heeft van de onderliggende hardware. Zorg ervoor dat jouw applicatie kan draaien in een virtuele machine!
Wat kun je doen op niveau 3?
Dit is het niveau waarop de droom van alles delen werkelijkheid wordt. We delen resources in ‘de cloud’ en richten niet meer onze eigen rekencentra in. We maken gebruik van de schaalgrootte die voordelig is voor het totale energieverbruik. Heel eenvoudig: 2 servers die voor 50% worden belast zijn nadeliger voor het milieu dan 1 server waarop 2 virtuele omgevingen draaien waardoor de machine voor 100% wordt belast.
Veel leveranciers zijn momenteel bezig om cloud computing te realiseren. Partijen als Amazon en Google hebben of richten grote rekencentra in om ons te voorzien van cloud computing. Ook Microsoft begeeft zich nadrukkelijk op dit front met het Azure Services Platform. Ook binnen cloud computing kennen we verschillende varianten:
- Software as a Service (SaaS)
- Attached services
- Cloud platforms
De verschillende typen cloud computing zijn weergegeven in figuur 1.

Fig. 2: Verschillende typen cloud computing
Ook bij cloud computing zijn er dus nog diverse keuzes te maken. De ene keuze heeft een voordeliger effect voor green computing dan de andere. Nog steeds blijft gelden: des te meer je deelt, des te beter. Toch blijft het ook noodzaak om bewust voor een leverancier en een datacentrum te kiezen. Hoe gaan de leveranciers met energie om? Waar is het rekencentrum gebouwd? Een rekencentrum in Finland is minder kosten kwijt aan koeling dan een rekencentrum in Zuid-Spanje.
De keuze voor cloud computing levert de ontwikkelaar het meeste werk op. Een applicatie ontwikkelen voor de cloud vereist namelijk specifieke design- en programmeervaardigheden. Is een applicatie werkelijk altijd beschikbaar? Wat wanneer dit niet het geval is? Het ontwerp van de applicatie moet hier mee om kunnen gaan.
De meeste cloud leveranciers bieden momenteel een eigen API. Je moet kennis opdoen van deze API. Daarnaast zijn er op dit moment geen relationele databases beschikbaar in de cloud, maar wordt alle data hiërarchisch opgeslagen. De applicatie moet daar mee om kunnen gaan. Kortom veel werk aan winkel!
Conclusie
Vandaag is een goed moment om na te gaan denken over green computing. Alle middelen en technieken zijn voorhanden om het beter te gaan doen. Dit is een goede zaak voor het milieu, maar zeker ook voor onze portemonnee.
Green computing is ook voor ons als software-ontwikkelaars van belang
Green computing is niet alleen iets voor ‘die ander’, maar is ook voor ons als software-ontwikkelaars van belang. Misschien hebben wij wel de meeste impact wanneer het green computing betreft. We zouden wellicht labels moeten gaan toekennen aan onze software die aangeven hoe “groen” we zijn. De IT zou niet de eerste branche zijn waar dit gebeurt. Laten we in ieder geval beginnen met te delen!
Op z’n minst kunnen we beginnen bij onze eigen computers. Hoe efficiënt is jouw software? Staat jouw ontwikkelcomputer altijd aan? Gebruik je een slaapstand? Een aardige start voor green computing is te vinden op op http://www.eco-button.com/.