Tropem była płyta, a nie logowanie

Pierwsze zgłoszenia pojawiły się około 23:10 czasu wschodniego 26 lipca, według własnej rejestracji Microsoftu, a w poniedziałek rano strona stanu Xboxa oznaczała cztery obszary usług jako poważną awarię: konto i profil, sklep i subskrypcje, gry oraz aplikacje i mobilne. Xbox Support podał na oficjalnym kanale, że użytkownicy napotykają błędy przy próbie zalogowania się, wyświetlenia biblioteki gier lub uruchomienia gier, a inżynierowie aktywnie pracują nad złagodzeniem problemu. O 9:43 czasu wschodniego firma oświadczyła, że ustaliła przyczynę we wszystkich czterech obszarach, a rozwiązanie wciąż jest w toku.

Downdetector wskazał szczyt na 3.296 zgłoszeń około północy, spadający do około 700 o dziewiątej rano, przy czym 67 procent skarg wymieniało wprost uruchamianie gier, a nie logowanie czy sklep. Ten rozkład jest pierwszym tropem. Gdyby chodziło o zwykłą awarię sieci albo uwierzytelniania, w zgłoszeniach dominowałoby logowanie.

Rozstrzygający szczegół to, co jeszcze przestało działać. Dotknięci gracze nie mogli uruchomić pobranych tytułów i nie mogli też zagrać w gry z płyt ani w tytuły wstecznie zgodne. Płyta w kieszeni jest tak lokalna, jak oprogramowanie tylko może być. Zawiodła, bo serwery nie mogły ukończyć weryfikacji licencji, której płyta wymaga przed startem. To nie była awaria sieci, która przypadkiem przeszkodziła graczom. To była awaria uprawnień, a płyta jest tego dowodem.

Twoja dostępność to niższa z dwóch liczb

Każdy produkt, który sprawdza licencję przy uruchomieniu, dziedziczy dostępność tego, co sprawdza. Zostaje ci więc faktyczna dostępność równa mniejszej z dwóch liczb: dostępności twojej aplikacji i dostępności twojej usługi uprawnień. To prosta arytmetyka i niemal nigdy nie widnieje na tablicy wskaźników, bo logikę uprawnień zwykle buduje się raz, na początku, mały zespół, a potem traktuje ją jak instalację hydrauliczną.

Wzorzec sięga daleko poza konsole. Oprogramowanie na komputery z wywołaniem aktywacji, systemy we własnej serwerowni pytające o liczbę licencji, urządzenia wbudowane sprawdzające przy włączeniu, maszyny przemysłowe z funkcjami za subskrypcją, każdy produkt, którego ścieżka logowania zależy od osobnej usługi licencyjnej: wszystkie mają ten sam kształt. Klient ma pliki. To, czego mu brakuje w czasie awarii, to zgoda na ich uruchomienie.

Ten tryb awarii jest ponadto wyjątkowo szkodliwy dla zaufania, bo przeczy temu, co klient sądzi, że kupił. Przestój w usłudze strumieniowej jest irytujący, ale zrozumiały. Niemożność uruchomienia gry z płyty, która jest twoja, na konsoli stojącej przed tobą, przypomina raczej złamaną obietnicę. Ta reakcja nie jest nierozsądna, a w Europie nie jest wyłącznie reakcją.

W Unii powtarzająca się przerwa przestaje być niedogodnością

Unijna dyrektywa o umowach o dostarczanie treści cyfrowych i usług cyfrowych ustala tu standard, a jest on surowszy, niż zakłada większość zespołów produktowych. Jeśli umowa przewiduje ciągłe dostarczanie w pewnym okresie, treść cyfrowa lub usługa musi być zgodna z umową przez cały ten okres. Przedsiębiorca odpowiada za każdy brak zgodności, który ujawni się w okresie dostarczania, a nie tylko za stan w chwili sprzedaży.

Dyrektywa zajmuje się następnie awariami wprost. Krótkie przerwy w dostarczaniu należy traktować jako przypadki braku zgodności, gdy te przerwy nie są nieistotne albo gdy się powtarzają. Przeczytaj ten przepis z tym weekendem w pamięci: to była druga awaria Xboxa w dwa dni, a kilka dni wcześniej wystąpiła awaria PlayStation Network. Próg nie dotyczy wyłącznie tego, jak długo trwało jedno zdarzenie. Powtarzalność jest samodzielną drogą do tego samego wniosku i to właśnie jest pułapka dla usługi z krótkimi, częstymi drgnięciami zamiast jednej długiej awarii.

Gdy brak zgodności zostaje ustalony, konsument ma prawo doprowadzenia usługi do zgodności z umową, a jeśli to nie nastąpi, do proporcjonalnego obniżenia ceny albo do rozwiązania umowy. Czy konkretna awaria przekracza tę granicę, to kwestia okoliczności faktycznych, a wielka platforma to zaabsorbuje. Dla mniejszego operatora liczy się to, że taka ocena w ogóle istnieje i że wystawiony na nią jest twój przychód z subskrypcji.

Próba, którą warto przeprowadzić w tym tygodniu na własnym produkcie

Zacznij od spisu, nie od debaty o architekturze. Wypisz każde miejsce w produkcie, gdzie działanie klienta czeka na wywołanie do twojej infrastruktury po zgodę, a nie po dane: aktywacja, potwierdzanie stanowisk, przełączniki funkcji, odświeżenie uprawnień, puls licencji. Dla każdego zapisz zwykłym językiem, co widzi klient, gdy to wywołanie zawiedzie. Zespoły często są zdziwione, bo ścieżkę błędu napisał lata temu ktoś, kto już odszedł.

Potem napraw te dwie rzeczy, które są tanie. Daj każdemu sprawdzeniu licencji okres tolerancji bez łączności, żeby przejściowa awaria degradowała się do opóźnienia, a nie do blokady, i ustaw ten okres na tyle długo, by pokrył złą noc, a nie złą minutę. Po drugie, monitoruj usługę uprawnień jako osobną, widoczną dla klienta zależność z własnym alarmem i publikuj jej stan tam, gdzie klienci mogą go zobaczyć, bo w czasie awarii to brak informacji zamienia irytację w rezygnacje.

Microsoft pozbiera się z tego do obiadu i nie straci nic trwałego. Średniej wielkości polska firma softwarowa z bazą subskrypcyjną i sprawdzeniem przy uruchomieniu nie ma takiej poduszki. Lekcja architektoniczna jest w tym tygodniu darmowa, a to najtańszy sposób, żeby się jej nauczyć.