Z Marcinem Gandor, ekspertem ds. IT w ING Banku Śląskim rozmawiamy o wynikach hackatonu „Zielona Tesla za zielony kod”; podejściu do „zielonego programowania”’; najlepszych praktykach w zakresie green coding; optymalizacji programów pod kątem zapotrzebowania na energię; a także tym w jaki sposób tworzenie oprogramowania może wspierać cele z obszaru zrównoważonego rozwoju.
W jaki sposób tworzenie oprogramowania może wspierać cele z obszaru zrównoważonego rozwoju?
Celem specjalistów IT jest dostarczanie narzędzi wspomagających współpracę, obsługę klienta, sprzedaż produktów, automatyzujących procesy biznesowe, wspomagających podejmowanie decyzji. Organizacje, które w swoich celach założyły budowanie gospodarki niskoemisyjnej, będą potrzebować nowych narzędzi, metryk niezbędnych w okresie transformacji. To na pewno przyczyni się do działań jakie będą podejmowane przez IT.
Platformy i aplikacje wykorzystywane zarówno przez biznes, jak i użytkowników indywidualnych, mają wpływ na ilość konsumowanej energii. Dlatego na znaczeniu zyskuje tworzenie kodu z większą świadomością tego problemu. Ten trend to green coding. Zdobywa on coraz większą popularność w branży IT.
Green coding, to podejście do programowania skupiające się na tworzeniu aplikacji i systemów IT, które minimalizują ich negatywny wpływ na środowisko naturalne. Green coding może przybierać wiele form i zawiera mnogość działań podejmowanych przez programistów oraz całe zespoły projektowe.
Jakość kodu źródłowego wpływa na to, jak dużo mocy obliczeniowych i energii będzie potrzebować aplikacja do działania. W ramach green coding programiści, testerzy i pozostali specjaliści z branży IT dążą do ograniczania zużycia energii, wykorzystując różnego rodzaju metryki [AJ1] oraz zwiększając świadomość wpływu technologii na środowisko naturalne, przyczyniając się tym samym do minimalizowania emisji gazów cieplarnianych.
Jaka jest idea Green Coding i na czym polegają takie praktyki? Jaka jest wiedza na rynku o tej koncepcji?
Green coding, to podejście do programowania skupiające się na tworzeniu aplikacji i systemów IT, które minimalizują ich negatywny wpływ na środowisko naturalne. Green coding może przybierać wiele form i zawiera mnogość działań podejmowanych przez programistów oraz całe zespoły projektowe. Oto kilka przykładów zielonych metodyk:
- Wykorzystywanie możliwie efektywnych algorytmów i kodu, które wymagają mniejszej ilości mocy obliczeniowej i zasobów sprzętowych.
- Optymalizacja aplikacji pod kątem zużycia energii, poprzez m.in. wyłączanie nieużywanych funkcjonalności, zwrócenie uwagi na liniową charakterystykę wzrostu zapotrzebowania na sprzęt wraz ze wzrostem ilości użytkowników.
- Korzystanie z technologii pozwalającej na lepsze wykorzystanie sprzętu, np. wirtualizacji serwerów w chmurach prywatnych, czy publicznej chmury obliczeniowej z której korzysta wiele organizacji, gdzie zawsze można udostępnić wolną pojemność każdemu, kto jej potrzebuje, dzięki czemu żaden serwer nie pozostaje bezczynny.
- W przypadku użycia sprzętu ważnym aspektem wpływającym na obniżanie emisji gazów cieplarnianych jest również jego lokalizacja. Mamy regiony, gdzie produkowana energia ma niższy wskaźnik emisji dwutlenku węgla.
- Czynnikiem wpływającym na obniżenie emisji jest też czas uruchomienia przetwarzania. Mając wpływ na ten element wybieramy pory dnia, w których współczynnik zielonej energii produkowanej w danym regionie w ciągu dnia jest najwyższy.
- Wykorzystywanie praktyk programowania, które minimalizują emisję gazów cieplarnianych. Zaliczają się do nich m.in.: unikanie nadmiernego zużycia zasobów sprzętowych, używanie wstępnie przetworzonych danych czy minimalizowanie powtarzających się operacji.
Czy green coding stanie się w przyszłości standardem w programowaniu?
O tym, że green coding może być przyszłością branży IT świadczyć może coraz większa liczba działań podejmowanych przez firmy na rzecz ograniczania energii oraz ochrony środowiska naturalnego. Uwarunkowania geopolityczne, regionu świata, w jakim funkcjonujemy, a w konsekwencji normy społeczne i prawne jakie funkcjonują lub zostaną wprowadzone mogą doprowadzić w przyszłości do potrzeby pomiaru cyfrowego śladu węglowego, a w następstwie do jego zmniejszania.
Sprawdziliśmy aplikację uczestników hackatonu pod dużym obciążeniem i obserwowaliśmy, która z nich jest najszybsza, przy ograniczonym w zasoby środowisku uruchomieniowym. Wskaźnikiem był 90 percentyl czasów odpowiedzi na testy które dobieraliśmy w taki sposób, aby nie przekraczały magicznej liczby 3 sekund.
Jedną z dróg jest stosowanie zasad green coding, ale czy jedyną? Proces transformacji jest nieunikniony, a będzie to czas w którym wciąż musimy się uczyć, dostosowywać, poszukiwać lepszych rozwiązań i technologii. Aby promować ideę green coding, ING Bank Śląski uruchomił konkurs skierowany do programistów, który polegał na napisaniu określonego kodu programistycznego w taki sposób, by zużywał jak najmniej energii. Nagrodą była atrakcyjna opcja korzystania przez rok z samochodu Tesla 3.
Jakie wyzwania postawiono przed uczestnikami hackatonu „Zielona Tesla za zielony kod”?
Przede wszystkim wspomnę, że odzew na konkurs świadczy o dużym zainteresowaniu branży tym tematem. Nadesłano ponad 130 rozwiązań. Szukaliśmy entuzjastów Javy, którzy chcą pokazać najlepsze praktyki użycia tego języka programowania. W ramach zadania konkursowego uczestnik miał stworzyć kod źródłowy programu i programów uruchamiających zoptymalizowanych pod kątem zapotrzebowania na energię niezbędną do ich prawidłowego działania.
Na zadanie konkursowe składają się trzy niezależne wyzwania. Kod źródłowy programu musiał zostać przygotowany w języku Java, a programy uruchamiające, czyli build.sh i run.sh, muszą być przygotowane w języku skryptowym bash. Zadaniem było stworzenie aplikacji, która rozwiązuje trzy, różne problemy programistyczne, które nawiązywały do tematyki branży finansowej.
Problemy nie były trudne, ponieważ zależało nam na dużej liczbie zgłoszeń. Stworzone przez nas testy obciążeniowe sprawdzały, czy aplikacja uczestnika odpowiada poprawnie na zapytania, które zawierały znacząco więcej danych niż te podane jako przykłady. Wiele rozwiązań które zawierały poprawny jakościowo kod odpadało po wejściu w fazę testu obciążeniowego. Patrząc na wyniki, część rozwiązań odpadała na gorszej jakości jednego z zadanych, trzech problemów. W przypadku najlepszych rozwiązań, kod bardzo często zawierał testy, które uczestnicy zaprojektowali po to, aby optymalizować przekazane rozwiązania. Było to bardzo dobrą strategią.
Sprawdziliśmy aplikację pod dużym obciążeniem i obserwowaliśmy, która z nich jest najszybsza, przy ograniczonym w zasoby środowisku uruchomieniowym. Wskaźnikiem, który braliśmy pod uwagę był 90 percentyl czasów odpowiedzi na testy. Dobieraliśmy je w taki sposób, aby rozwiązania które nie zostały poddane przez uczestników konkursu analizie i optymalizacjom, nie przekraczały magicznej liczby 3 sekund.
Podejście to pozwoliło nam na wyłowienie 10 prawdziwych perełek kunsztu developerskiego, które w kolejnych etapach poddaliśmy ocenie ekspertów pracujących w ING Banku Śląskim. Drugi etap ocen polegał na analizie kodu, komentarzy dokumentujących wykonywane optymalizacje oraz przygotowanych przez uczestników testów, bazując na wiedzy eksperckiej oraz praktykom Software Craftmanship.
Najlepsze 3 rozwiązania były naprawdę świetne, ale zwycięzca konkursu mógł być tylko jeden. Z tej grupy jury wybrało jednogłośnie zwycięzcę, wybierając najbardziej poprawne inżyniersko rozwiązanie. Zwycięzcą konkursu zostało rozwiązanie Przemko Robakowskiego. Nagrodą dla zwycięzcy jest roczne korzystanie z samochodu Tesla 3.