Wypuszczenie w świat dużej aplikacji zawsze wiąże się ze sporym ryzykiem, że coś pójdzie nie tak. Teraz już wiemy, z jakimi problemami musiał zmierzyć się mObywatel w wersji 2.0. Odpowiedź przyszła z samej góry.
Trudny start
14 lipca miał być nowym rozdziałem w historii cyfrowych dokumentów w Polsce. Tego dnia startowała bowiem aplikacja mObywatel w wersji 2.0. Nie była to zwyczajna aktualizacja, a oprogramowanie zbudowane niemal od zera. Obecnie sytuacja wygląda obiecująco: wkrótce banki umożliwią używanie aplikacji do legitymowania się w placówkach, a za kilka dni powinno zakończyć się wdrażanie tymczasowego prawa jazdy.
Nie wszystko jednak poszło w dniu premiery zgodnie z planem. Zalogowanie się lub założenie nowego konta w nowej edycji aplikacji było niemal niemożliwe 14 lipca, niezależnie od tego, czy korzystaliśmy z Androida czy iOS-a. Dlaczego tak się stało i czy można było tego uniknąć? Odpowiedź na te pytania postanowił udzielić Minister cyfryzacji – Janusz Cieszyński.
Dlaczego mObywatel 2.0 wystartował z problemami?
Źródłem informacji nt. premiery aplikacji rządowej jest wpis Ministra w serwisie LinkedIn. Odpowiada tam na cztery pytania:
- Dlaczego premiera odbyła się w piątek?
- Dlaczego debiut się nie udał? Zabrakło testowania?
- Czemu testy nie wykryły błędów?
- Czy nie można było dokupić odpowiedniego osprzętu?
Jak wyglądają wyjaśnienia osoby, która nadzorowała prace nad aplikacją?
Pierwsza kwestia okazuje się powiązana z tym, jak wygląda obciążenie mObywatela. Ruch użytkowników jest najmniejszy właśnie w piątki, a że zespół mógł wybrać dowolny dzień tygodnia, statystyka podpowiadała aby postawić na 14 lipca. Mimo wszystko była to dobra decyzja – gdyby aplikacja ruszyła np. w środę, problemy nie ustąpiłyby przez kilka dni, a wpływ awarii na biznes byłby bardziej dotkliwy.
Druga sprawa związana z testami również ma proste wyjaśnienie. Oprogramowanie przetestowano zgodnie z procedurami Centralnego Ośrodka Informatyki, a publiczne beta testy, choć szeroko zakrojone, nie wykazywały żadnych nieprawidłowości. Nie było zatem argumentów za tym, aby opóźnić debiut aplikacji.
Czemu więc testy zawiodły? Urządzenia kryptograficzne w momencie zmasowanego napływu zapytań o wygenerowanie dokumentu zostały zapchane. Powstała kolejka, a odpowiedź backendu (to, co dzieje się poza widokiem użytkownika) była dłuższa niż przewidywał timeout (czas, po którym zapytanie zwraca błąd). mObywatel próbował zrealizować żądanie użytkownika, a aplikacja już pokazywała, że nie udało się nawiązać połączenia. Co zrobi przeciętny użytkownik? Wyśle zapytanie ponownie, czym jeszcze bardziej „dorzuci do pieca” sprzętowi do kryptografii.
Inną przyczyną problemów był niespotykany podczas testów scenariusz: mDowód nie pobierał się do aplikacji z serwerów. Sytuacja przytrafiła się kilkudziesięciu tysiącom osób a rozwiązaniem problemu okazało się wyczyszczenie bazy i wprowadzenie łatki blokującej możliwość powtórzenia się tego błędu.
A co z opcją dokupienia większej ilości sprzętu? Nie było takiej potrzeby – szczytowe zainteresowanie było i minęło – po miesiącu liczba użytkowników korzystających w tym samym czasie z mObywatela zmalała wielokrotnie. Sprzęt trzeba byłoby zakupić od 6 do 9 miesięcy wcześniej, a teraz stałby „nieużywany”.
Poprosiłem osobę, która sama zajmuje się pisaniem oprogramowania komercyjnego o komentarz w tym temacie i potwierdza ona słowa Ministra cyfryzacji. Nieważne, czy mowa o aplikacji rządowej obsługującej cyfrowe dokumenty osobiste czy o systemie zarządzania pracownikami w prywatnej firmie – dopiero tzw. public release pozwala wyłapać wszystkie błędy, których nie przewidzieli programiści lub które powstały z winy „nieszablonowo” korzystających z oprogramowania użytkowników.
Czy wydłużenie timeoutu na frontendzie rozwiązałoby problem? Częściowo tak, choć wchodzi tutaj kwestia UX (user experience). Użytkownik przy zbyt długim czasie oczekiwania wycofałby zapytanie i wprowadził ponownie, co wcale nie przyspieszyłoby jego żądania w kolejce – serwer nadal pozostałby zapchany, być może w mniejszej skali. Nadal jednak mogłoby to być za dużo dla obecnych sprzętów i timeout pojawiłby się prędzej czy później.
Miejmy nadzieję, że w przyszłości nie zajdzie potrzeba wdrażania całkowicie nowej aplikacji „mObywatel 3.0” a zespół odpowiedzialny za obecne oprogramowanie uniknie większych problemów i w spokoju będzie mógł wprowadzać kolejne poprawki oraz nowe funkcje.