Już wiemy, dlaczego mObywatel 2.0 zaliczył taką wpadkę na start

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.

aplikacja mObywatel 2.0
Ciężki był start nowego mObywatela… (źródło: gov.pl)

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.

Nie był to najpiękniejszy widok, jaki można było spotkać 14 lipca tego roku (fot. Bartosz Kaja | Tabletowo.pl)

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.

mobywatel tymczasowe prawo jazdy
Jedna z nowinek, która spodoba się chętnym do wsiadania za kółko świeżo po zdaniu egzaminu praktycznego na prawo jazdy (Źródło: Ministerstwo Cyfryzacji)

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.