Pierwszy język, w jakim programowałem, to był Fortran. Nauczyłem się go w 1969 roku, czytając książkę i ćwicząc na komputerze IBM 1130, który uruchamiał jedno zadanie naraz i praktycznie nie posiadał systemu operacyjnego. Podłączało się sterowniki urządzeń do programu i, zamiast systemu operacyjnego, uruchamiało się ten program. Kilka lat później opowiadałem moim studentom, że nie była to „inżynieria komputerowa”, ale „komputerowa czarna magia”.
Niewiele było systemów podłączonych w sieć, a jeśli już, to były to sieci telefoniczne, utrzymujące tablice ogłoszeń do wymiany programów i danych. Muzyka dostępna była na płytach winylowych, a za grafikę służyły obrazy ASCII, drukowane (przeważnie) na drukarkach wierszowych.
Piszę o tym dzisiaj z powodu wideo autorstwa Russela Brandoma na YouTubie, w którym krytykuje on rząd Stanów Zjednoczonych, dlatego że ciągle w niektórych systemach używa się COBOL-a. Twierdzi, że systemy te nie były gotowe na tak dużą liczbę wniosków o zasiłek dla bezrobotnych, jaka ostatnio się pojawiła, podczas gdy na przykład Netflix nie ma problemu ze skalowaniem potrzeb, nawet przy olbrzymim zapotrzebowaniu na ich usługi „w czasach epidemii koronawirusa”. Wywnioskował, że jest to „wina” COBOL-a.
Jeden z moich fanów na Facebooku poprosił o komentarz i porównanie pomiędzy „systemem rządowym” a Netfliksem.
Najpierw, zanim nawet zacznę, kilka zastrzeżeń.
Po pierwsze, wnioski dla bezrobotnych obsługiwane są w podziale na stan, więc ich systemy, oprogramowanie i zasady są różne w każdym ze stanów.
Po drugie, nie studiowałem żadnego z systemów w poszczególnych stanach ani nie przyglądałem się bliżej Netfliksowi.
Po trzecie, wiem, że w wielu rządowych instytucjach trudno jest uzyskać pieniądze na aktualizację systemów, które „działają dobrze”, a szczególnie kiedy nie możemy udowodnić, że pojawi się oszczędność przy pracy, którą aktualnie wykonujemy.
Mając za sobą te trzy zastrzeżenia, zacząłem porównania.
Systemy do przetwarzania wniosków od bezrobotnych były prawdopodobnie napisane dawno temu i COBOL był całkiem dobrym językiem do opisywania transakcji opartych na regułach.
Systemy te zwykle przyjmują dane w czasie specyficznych godzin, pomiędzy 9 rano i 5 po południu (zauważcie ten osobliwy sposób oznaczania czasu), 5 dni w tygodniu, z wyłączeniem świąt.
Kiedy bezrobocie jest niskie, obsługa nowych wniosków nie stwarza problemów, a kiedy zaczyna nagle wzrastać (łagodna recesja, zmiany sezonowe), ludzie muszą pracować po godzinach i w weekendy, aby przerobić wszystkie wnioski.
Najczęściej praca ta może być wykonana na niezwykle godnych zaufania urządzeniach mainframe, dających możliwość wymiany urządzeń peryferyjnych bez przerwy w zasilaniu i zapewniających redundancję. Nawet jeśli mainframe ulega awarii, maszyna może być naprawiona całkiem szybko, a przyjmowanie wniosków może być kontynuowane.
W szczycie obsługa wniosków może być opóźniona o dzień czy dwa, a ludzie nawet tego nie zauważą.
Przygotowanie na taki szczyt przetwarzania trwający dłużej niż zwykle byłoby kosztowo nieefektywne, gdyż poza nim komputer pewnie nie byłby współdzielony z innymi departamentami (na przykład z rolnictwem).
W ciągu ostatnich kilku lat bezrobocie było bardzo niskie. W „normalnych” latach wynosiło między 3,5 a 4,5 procent. Kiedy bezrobocie dochodzi do zera procent (każdy ma pracę), pracodawcom trudno jest znaleźć pracownika.
W czasie kryzysu w 2008 roku bezrobocie wzrosło, chociaż nie gwałtownie, ale przez kilka miesięcy, do 10 procent, licząc dla całej siły roboczej. Ludzie tracili pracę i rejestrowali się po zasiłek dla bezrobotnych. System mógł to obsłużyć, ponieważ w szczycie kryzysu wniosków było nieco poniżej jednego miliona na tydzień.
W czasie tej pandemii bezrobocie z 3,5 procent zwiększyło się, zgodnie z szacunkami, do ponad 25 procent populacji. W ciągu 6 tygodni pojawiło się ponad 30 milionów wniosków, czyli jakieś 5–6 razy tyle co w piku recesji z 2008 roku i 10–12 razy tyle co „normalnie”.
Netflix (i inne usługi online) realizuje inne żądania. Ma być dostępny „24 na 7”. Zwykle żądania obsługi przychodzą i są dystrybuowane na dużą grupę serwerów, a serwery można dodawać lub odejmować (na potrzeby utrzymania) zgodnie z aktualną potrzebą.
Usługom takim zdarzają się „piki w przetwarzaniu”, ale przeważnie pojawiają się one w okolicach wolnych dni i świąt. W każdym razie Netflix prawdopodobnie ma teraz większe niż zwykle obciążenie, ale wątpię, aby było ono 10–12 razy większe niż „normalny” ich pik. Nawet pewnie nie jest to 5–6 razy.
Netflix posługuje się też innymi technikami do obsługi obciążenia. Może zaoferować filmy w jakości SD, zamiast HD. Może też strumieniować z mniejszą prędkością.
COVID-19 wiele nas nauczył. Kiedy w Stanach Zjednoczonych mówimy o wymianie „starzejącej się infrastruktury”, zwykle chodzi o autostrady i mosty. Może powinniśmy zacząć też mówić o naszych starzejących się systemach komputerowych.
Jon „maddog” Hall jest autorem, wykładowcą, informatykiem i jednym z pionierów Wolnego Oprogramowania. Od 1994 roku, kiedy po raz pierwszy spotkał Linusa Torvaldsa i ułatwił przeniesienie jądra na systemy 64-bitowe, pozostaje orędownikiem Linuksa. Obecnie jest prezesem Linux International®.