Zrównoważona inżynieria oprogramowania
Zrównoważonym rozwojem kieruje się w swoich działaniach coraz więcej podmiotów. W końcu dobro planety to dobro nas wszystkich oraz przyszłych pokoleń. A czy możliwe jest kierowanie się zasadami zrównoważonego rozwoju podczas tworzenia produktów cyfrowych? Zrównoważona inżynieria oprogramowania udowadnia, że jak najbardziej. Poprzez włączenie do swoich działań i produktów zasad przyjaznego dla środowiska rozwoju oprogramowania, deweloperzy oraz inni pracownicy branży ICT mogą zmieniać świat na lepsze.
Rozwój branży ICT a zużycie energii
Rozwój branży ICT (ang. Information and Communications Technology) w ostatnich dekadach doprowadził do znacznego wzrostu zużycia energii elektrycznej. W 2010 roku wynosiło ono 2000 TWh (dla przypomnienia – jedna terawatogodzina to miliard kilowatogodzin), a według prognoz w 2030 roku wzrośnie do 8000 TWh. Dodatkowo przewiduje się, że odsetek energii elektrycznej zużywanej przez ICT wzrośnie z 5% w 2012 roku do około 21% w 2030 roku.
Czym jest zrównoważona inżynieria oprogramowania?
Zrównoważona inżynieria oprogramowania (ang. sustainable software engineering lub green software engineering) to nowo powstała dyscyplina na styku nauk o klimacie, praktyk tworzenia oprogramowania, rynków energii elektrycznej, projektowania hardware’u czy centrów danych.
Kierowanie się zasadami zrównoważonej inżynierii oprogramowania oznacza tworzenie oprogramowania przyjaznego dla środowiska. Coraz więcej programistów przywiązuje wagę do tzw. „zielonego IT”. Tworzą oni aplikacje w taki sposób, aby miało to wpływ na zmniejszanie się emisji dwutlenku węgla do atmosfery.
Oczywiście głównym powodem, dla którego osoby z branży ICT kierują się zasadami zrównoważonej inżynierii oprogramowania jest chęć wsparcia idei zrównoważonego rozwoju. Te działania przynoszą jednak dodatkowe korzyści – powstałe w ten sposób aplikacje są często tańsze, bardziej wydajne i co ciekawe, mniej zawodne.
Osiem zasad zrównoważonej inżynierii oprogramowania
Zasady zrównoważonej inżynierii oprogramowania to podstawowy zestaw kompetencji potrzebnych do definiowania, tworzenia i wypuszczania na rynek ekologicznych, zrównoważonych aplikacji. Zostały opracowane przez Asima Hussaina, Green Cloud Advocacy Lead w firmie Microsoft. Tworzą one obraz odpowiedzialnego za środowisko naturalne inżyniera oprogramowania – niezależnie od branży, wielkości firmy, języka programowania, specjalistycznej wiedzy itd.
1. Tworzenie aplikacji, które są efektywne pod względem emisji dwutlenku węgla
Procesy wytwórcze wiążą się z emisją dwutlenku węgla (CO2). Efektywność w przypadku emisji dwutlenku węgla polega na zminimalizowaniu ilości CO2 wysyłanego do atmosfery na jednostkę pracy. Celem zrównoważonej inżynierii oprogramowania jest wyciągnięcie jak największej wartości z każdego grama węgla emitowanego do atmosfery. Inżynierowie powinni więc tworzyć aplikacje, które mają dla użytkowników taką samą wartość, przy zmniejszonej emisji CO2.
2. Tworzenie aplikacji, które są energooszczędne
Twórcy oprogramowania często nie biorą pod uwagę ilości energii elektrycznej, którą zużywają ich aplikacje. Jest to efekt zewnętrzny, czyli problem konsumentów i środowiska. Zrównoważona inżyniera oprogramowania bierze odpowiedzialność za energię elektryczną zużywaną przez aplikacje. Są one zaprojektowane tak, aby zużywać jej jak najmniej.
3. Intensywność emisji dwutlenku węgla
Elektrownie wykorzystujące energię odnawialną umożliwiają zmniejszenie emisji dwutlenku węgla. Jeśli korzystamy w 100% z energii odnawialnej, to intensywność emisji CO2 jest bliska zeru. Osiągnięcie nadpodaży energii, dzięki źródłom odnawialnym, zwiększa szanse na czasowe wyłączenie elektrowni emitujących do atmosfery dwutlenek węgla.
Istnieją przykłady działania serwerów w całości w oparciu o „zieloną energię”. Przykładem jest centrum danych w Nevadzie, które zasilają panele słoneczne oraz system magazynowania energii Tesla Megapack.
Niektóre firmy, jak np. Google, używają narzędzi takich jak Electricity Map lub innych interfejsów API związanych z intensywnością emisji dwutlenku węgla, aby dostosować zadania obliczeniowe do czasów wysokiej dostępności energii niskoemisyjnej.
4. Maksymalizacja wydajności sprzętu
Jedną ze strategii zwiększania wydajności sprzętu jest wydłużenie jego żywotności, co zmniejsza roczny koszt emisji dwutlenku węgla. Inżynierowie mogą projektować oprogramowanie, które jest efektywne pod względem dostępnych zasobów i może działać płynnie na starszych urządzeniach.
Ponadto projektując oprogramowanie, które jest energooszczędne, przyczyniają się do zmniejszenia liczby cykli ładowania w danym przedziale czasowym w przypadku urządzeń takich jak laptopy, tablety czy smartfony. W ten sposób przyczyniają się do ich dłuższej żywotności, a tym samym do zmniejszenia kosztów emisji dwutlenku węgla dla tych urządzeń.
5. Proporcjonalność energetyczna
Proporcjonalność energetyczna jest miarą zależności pomiędzy mocą pobieraną przez system komputerowy, a szybkością, z jaką wykonywane są przydatne działania (jego wykorzystaniem). Serwery zwykle nie są skonfigurowane pod kątem oszczędzania energii. Wiele firm wymaga ich pełnej wydajności jak najszybciej.
Może to prowadzić do pozostawiania wielu serwerów w trybie bezczynności (ang. idle mode) w okresach niskiego zapotrzebowania na energię. Pozostawanie urządzenia w tym trybie wiąże się z jego nieefektywnym wykorzystaniem. Najbardziej ekologicznym (i wydajnym) podejściem jest praca na jak najmniejszej liczbie serwerów o najwyższym stopniu wykorzystania.
Częstotliwość zegara to szybkość działania urządzenia lub jego mikroprocesora wyrażona w cyklach na sekundę (megahercach), czyli mówiąc inaczej – szybkość, z jaką komputer może wykonywać instrukcje. Na konsumenckich urządzeniach stosowane bywa dynamiczne dostosowywanie się częstotliwości zegara. Pozwala ono uzyskać lepszą proporcjonalność energetyczną, a tym samym zmaksymalizować sprawność energetyczną sprzętu.
6. Zmniejszenie ilości danych i odległości, jakie muszą one pokonać w sieci
Kiedy dane są wysyłane przez internet, to przechodzą przez wiele urządzeń, a każde z nich zużywa energię. W rezultacie wszelkie dane, które wysyłasz lub odbierasz przez internet, emitują do atmosfery CO2. Czasami rezygnacja z przesyłania niewielkiej tylko ilości danych może mieć spory pozytywny wpływ na środowisko.
Zastosowanie technik, takich jak np. buforowanie HTTP, sieci dostarczania treści (CDN), zmniejszenie wykorzystania JavaScript (JS), minimalizacja i kompresja JS i CSS, prowadzi do poprawy wydajności sieci, a co za tym idzie, zmniejszenia emisji dwutlenku węgla.
7. Kształtowanie popytu, czyli tworzenie aplikacji uwzględniających emisję dwutlenku węgla
Kształtowanie popytu to technika, która dostosowuje zapotrzebowanie energetyczne aplikacji do aktualnej podaży „zielonej energii”. Aby je uruchomić, aplikacja musi być świadoma emisji dwutlenku węgla, na przykład poprzez użycie jednego z dostępnych API intensywności emisji dwutlenku węgla.
Kształtowanie popytu może odbywać się automatycznie lub poprzez danie użytkownikom możliwości wyboru, np. opcji „trybu ekologicznego”. Przypomina to progresywne ulepszanie, w którym system dostosowuje zużycie energii w oparciu o bieżącą jej dostawę.
8. Pomiar i optymalizacja
Zrównoważona inżynieria oprogramowania to nie jedna optymalizacja, lecz tysiące. Programiści powinni spojrzeć na całość procesu i podjąć działania krok po kroku. Wysiłek włożony w jego zrozumienie prowadzi do prostych rozwiązań, które znacznie poprawiają wydajność węglową. Dobrą praktyką jest także zestawienie skutków działań wymaganych do obniżenia emisyjności z ich potencjalnymi korzyściami.
Kluczem do sukcesu optymalizacji jest wybór kryterium pomiarowego, które wskaże, gdzie najlepiej ją przeprowadzić. Na przykład, czy warto poświęcić dwa tygodnie na zmniejszenie megabajtów w komunikacji sieciowej, jeśli zapytania do bazy danych skutkują 10 razy większą emisją CO2?
W Exorigo-Upos wspieramy zrównoważony rozwój i pod nazwą Go Green Retail podejmujemy różne inicjatywy proekologiczne, dotyczące oszczędności energii, czasu, czy kosztów dla klienta.
Zobacz także jak ograniczyć zwroty w e-commerce.