Ideał samonaprawialności

Wzrost złożoności systemów IT i ich znaczenia dla naszej cywilizacji sprawia, że dotychczasowe metody projektowania i eksploatacji systemów IT nie gwarantują żądanego poziomu niezawodności. Laboratoria badawcze zastanawiają się więc nad tym, czy jesteśmy w stanie implementować paradygmat bioorganizacyjnej homeostazy.

Wzrost złożoności systemów IT i ich znaczenia dla naszej cywilizacji sprawia, że dotychczasowe metody projektowania i eksploatacji systemów IT nie gwarantują żądanego poziomu niezawodności. Laboratoria badawcze zastanawiają się więc nad tym, czy jesteśmy w stanie implementować paradygmat bioorganizacyjnej homeostazy.

4 czerwca 1996 r. egzotyczną roślinnością dżungli Gujany Francuskiej targa potężny wstrząs, huk oszałamiającego wybuchu momentalnie głuszy śpiew bajecznie kolorowego ptactwa. To właśnie eksploduje rakieta nośna Ariane 5 wraz z kilkoma satelitami na pokładzie, z których każdy kosztuje od kilkudziesięciu do kilkuset milionów dolarów.

Ten niezamierzony fajerwerk jest bodaj najbardziej spektakularnym przykładem konsekwencji niewielkiego błędu oprogramowania. W ułamku sekundy zniweczone zostają efekty wielomiliardowej inwestycji, a w pył obraca się jedna z najbardziej złożonych konstrukcji wytworzonych ludzką ręką. Jak mogło do tego dojść?

Ideał samonaprawialności
Początkowy kamyczek prowadzący do katastrofalnej lawiny zdarzeń uruchamia komputer nawigacyjny: nieprawidłowo dokonuje konwersji 64-bitowej liczby zmiennoprzecinkowej na 16-bitową stałoprzecinkową. Ściślej rzecz ujmując, początkowa wartość liczbowa była po prostu zbyt duża, więc logika programu kieruje jego przebieg do modułu obsługi sytuacji wyjątkowych (exception section). Tu z kolei nie bardzo wiadomo, co zrobić z tymi danymi - część systemów pomiaru pozycji po prostu się wyłącza, inne pracują dalej w oparciu o fałszywe już informacje. Komputer pokładowy stara się zapanować nad sytuacją i zmienia pozycję dysz, jak gdyby rakieta nagle zmieniła kurs. W rzeczywistości kurs jest cały czas prawidłowy i dochodzi do niepotrzebnej zmiany kąta lotu o ponad 20 stopni - w efekcie gwałtownie narastają obciążenia aerodynamiczne. Wszystko dzieje się w ciągu sekund; wreszcie algorytm wchodzi na swoją końcową ścieżkę i rakieta zostaje zdetonowana automatyzmem mechanizmu samozniszczenia.

Przyczyn katastrofy należy szukać w złożoności tego typu systemów. Żaden z nich nie powstaje na nowo, od podstaw. Złożone systemy konstruuje się warstwami, etapami i modułami. Zakłada się przy tym, że poprzedni poziom jest czymś sprawdzonym - budowniczy domu koncentruje się na jego konstrukcji jako całości. Nie prowadzi obliczeń czy testów dla pojedynczych cegieł, przyjmując, że mają one określone właściwości, odpowiednią wytrzymałość itp. Podobnie było w przypadku rakiety Ariane 5. Jej twórcy nie wyrzucali do kosza dorobku zgromadzonego przy budowie poprzednich modeli. Wręcz przeciwnie, postanowiono wykorzystać sprawdzone oprogramowanie Ariane 4. Niby słusznie, tyle że Ariane 5 miała inne właściwości mechaniczne niż jej poprzedniczka. To spowodowało, że procesor "zgłupiał", kiedy zaczął przetwarzać zmienne o wartościach nieprzewidzianych dla wcześniejszego typu rakiety.

Czy od kierownictwa projektu i zatrudnionych w nim informatyków można było wymagać ponownej analizy i szczegółowych testów feralnego, jak się okazało, oprogramowania? Pytanie jest oczywiście retoryczne, ale wydaje się, że słabym punktem organizacyjnym przedsięwzięcia była specyfikacja wymagań dla systemu software'owego. Nie "zagrała" współpraca na linii inżynierowie-mechanicy-programiści. Ci ostatni wykonali swoją robotę, tyle że na podstawie źle sprecyzowanych warunków.

Kosmiczna informatyka

Próby podboju przestrzeni kosmicznej dostarczają także pozytywnych przykładów i udanych rozwiązań, gwarantujących wysoką niezawodność urządzeń technicznych. Jednym z nich jest amerykański Pioneer 10 - pierwszy próbnik Jowisza, który po starcie w marcu 1972 r. minął planetę półtora roku później, przesyłając serię zdjęć na Ziemię. Na tym jednak nie zakończyła się jego misja. 10 lat później dotarł aż do granic Układu Słonecznego i jako pierwszy obiekt wykonany przez człowieka rozpoczął podróż w głąb Galaktyki, niczym poczta butelkowa rzucona w niezmierzone przestrzenie gwiezdnego oceanu, w nadziei na odebranie przez inne istoty rozumne. Dekadę później był już w odległości 50 j.a. (jednostek astronomicznych) od naszej planety, bijąc także rekordy dystansu łączności radiowej.

Podobnie niezawodne okazały się inne amerykańskie próbniki - Voyagery. Czas ich działania można już liczyć nie w latach, ale wręcz dziesięcioleciach (od 1977 r. począwszy). Pierwszy z nich odkrył m.in. czynne wulkany na księżycu Jowisza, zaś drugi 10 nowych księżyców Urana, a także zbadał atmosferę księżyca Neptuna - Trytona, niejako "z marszu" odkrywając 6 nowych księżyców tej odległej planety. Znaczne sukcesy mogą w tej dziedzinie zanotować także Europejczycy - rzecz jest całkiem świeżej daty. Oto przed kilkoma miesiącami zgromadzeni w budynku niedaleko dworca w Darmstadt (Hesja) inżynierowie Europejskiej Agencji Kosmicznej ESA w napięciu wpatrywali się w ekrany kontrolne ESOC (European Space Operating Center). Wreszcie jest sygnał - po latach przygotowań, zapoczątkowanych przez francuskiego naukowca Daniela Gautiera w 1988 r., i starcie rakiety nośnej Titan-Centaur w 1997 r. - sonda Cassini ląduje w odległości 1,2 mld km od Ziemi, na księżycu Saturna, Tytanie.

To jasne, że w projekcie kosztującym 500 mln euro nie można było pozwolić sobie na błędy. Każdy z nich mógłby zniweczyć misję. Trudno też byłoby je naprawiać z odległości, na pokonanie której światło potrzebuje godzinę - wyobraźmy sobie dialog z komputerem w czasie "rzeczywistym", gdzie na każdą odpowiedź maszyny czekalibyśmy dwie godziny od zadania pytania. Podobnie wysokie wymagania co do niezawodności napotkamy w systemach medycznych, telekomunikacyjnych, kontroli lotów czy energetycznych. I chodzi tu nie tylko o odporność na błędy (te się mogą przecież zawsze zdarzyć) i możliwości samokorekcyjne, ale także o umiejętność przewidywania wystąpienia trudnych sytuacji.

Od niedomiaru głowa boli

Magicznym słowem pojawiającym się w kontekście niezawodności systemów jest redundancja. Nadmiarowość może być gorąca (hot) lub zimna (cold). Z pierwszym przypadkiem spotykamy się np. w systemach RAID. Nadmieńmy jedynie, że pierwowzorem akronimu była praca autorstwa Gibsona i Pattersona z Uniwersytetu Berkeley (Kalifornia) - "A case study for Redundand Arrays of Inexpensive Disks". Zachodzi przy tym podejrzenie, że przymiotnik "niedrogi" miał pełnić w nazwie funkcję bardziej marketingowo-kosmetyczną niż merytoryczną. W każdym razie dziś chętnie zastępuje się go słowem "niezależny" (independent). W szczególności w RAID-1, czyli popularnej "lustrzance" (mirroring, odbicie lustrzane) mamy 100% nadmiarowości, natomiast na poziomie 0 nie ma jej w ogóle, a występuje jedynie "paskowanie" danych, czyli ich fragmentacja (stripping), zwiększająca szybkość konfiguracji.

Kombinacja obu poziomów daje fragmentowane odbicie lustrzane (stripped mirroring), czyli RAID-10. O RAID-2 warto wspomnieć głównie z uwagi na autokorekcyjny kod Hamminga, kojarzony z komputerami mainframe; poziom ten stracił na znaczeniu z uwagi na wbudowaną logikę ECC (Error Code Correction) w nowoczesnych dyskach. Wspomnijmy jeszcze o swego rodzaju optimum (w ogólnym przypadku może być ono inne dla określonej aplikacji) cenowo-niezawodnościowym, jakie stanowi RAID-5. Na każdym z N dysków tracimy 1/N pojemności na dane kontrolne, które pozwalają automatycznie zrekonstruować uszkodzony dysk po jego wymianie na sprawny. Widzimy zatem, że jeden dysk w grupie jest nadmiarowy, a więc niezawodność układu rośnie ze spadkiem N, natomiast z ceną jest dokładnie odwrotnie: np. dla 3 dysków ich użytkowa pojemność wynosi 66% nominalnej, dla 8 - 87%.

Natomiast zimna rezerwa polega na możliwości włączania dodatkowych zasobów systemowych w sytuacji krytycznej. Zabrakło jej na portalu największego domu aukcyjnego świata online - eBay. Zapewne jego administratorzy nie zapomną trzech piątek w pechowej dacie: 5 maja 2005 r. W tym dniu sprzedano na internetowej giełdzie używany samochód papieża Benedykta XVI za sumę wielokrotnie przekraczającą wartość nowego auta. Za Volkswagena zapłacono niemal 190 tys. euro. Przypuszcza się jednak, że kwota mogłaby być większa, gdyby serwis eBay był w stanie prawidłowo zareagować na wyjątkowo dużą liczbę uczestników licytacji. Taką umiejętnością wykazało się wiele renomowanych portali informacyjnych pamiętnego 11 września 2001 r. W czasie tej tragedii lawinowy wzrost zainteresowania aktualnymi informacjami groził załamaniem się internetowych serwerów - niektóre z nich potrafiły jednak sobie z tym poradzić, przełączając się na tryb znakowy ASCII i zachowując w ten sposób operatywność.

Naturalna niezawodność

Podnoszeniu wiarygodności (dependability) systemów sprzyja także stosowanie układów głosujących. Przykładowo rozważmy weryfikator TMR (Triple Modular Redundancy) składający się z trzech równoległych modułów roboczych o niezawodności NM każdy, przetwarzających te same dane i dostarczających wyniki do komparatora decyzyjnego o niezawodności ND. W takiej sytuacji niezawodność całości opisuje funkcja ND (NM3 + 3NM 2(1- NM)). Dla uproszczenia przyjmijmy teraz 100% niezawodności dla ND. Rozwiązując nierówność NM3 + 3NM 2(1- NM) NM, dla wartości nietrywialnych i mających znaczenie praktyczne zobaczymy, że dla niezawodności modułu poniżej 50% konfiguracja z redundancją staje się bardziej zawodna niż pojedynczy moduł. Efektywne stosowanie nadmiarowości wymaga zatem spełnienia przez konfigurację określonych warunków; w szczególności w tym przykładzie krytyczny dla całości układ decyzyjny powinien być wysoce niezawodny, a w przypadku jego awarii zawsze mieć jeszcze zdolność zasygnalizowania własnego defektu.

Samo jednak udoskonalanie cząstkowych technik, podnoszących niezawodność sprzętu i oprogramowania, nie zapewni nam stabilności działania systemów, których złożoność rośnie wykładniczo zgodnie z prawem Moore'a. Musimy szukać natchnienia w naturze, która znakomicie potrafi budować niezawodne homeostaty z elementów zawodnych. Właściwym krokiem w tym kierunku są metody sztucznej inteligencji, algorytmy genetyczne, sieci neuronowe, logika rozmyta i paradygmat bioorganizacyjny w sferze projektowania oraz użytkowania technologii IT.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200