Globalna awaria Google Cloud. Testowali na produkcji

Globalna awaria Google Cloud. Testowali na produkcji

W zeszłym tygodniu klienci Google Cloud na całym świecie doświadczyli poważnych zakłóceń w dostępie do usług. Awaria, która trwała blisko trzy godziny, sparaliżowała m.in. infrastrukturę firmy Cloudflare – a przez to również usługi jej klientów. Teraz Google ujawnia, co doprowadziło do tej sytuacji – i po raz kolejny przyznaje, że sami zawinili.

Awaria miała miejsce 13 czerwca, ale jej źródła sięgają dwóch tygodni wcześniej. 29 maja do komponentu systemu zarządzania dostępem o nazwie Service Control wprowadzono nową funkcję – dodatkowe sprawdzanie zasad dotyczących limitów (ang. quota policies). Sam komponent odpowiada za weryfikację żądań API pod kątem autoryzacji, uprawnień i zużycia zasobów.

Nowa wersja kodu została wdrożona do produkcji, ale – jak ujawnia Google – nie została odpowiednio przetestowana. Problem polegał na tym, że ścieżka kodu, która zawierała krytyczny błąd, aktywowała się dopiero po zmianie zasad dotyczących niezamierzonych pustych pól. Do tego momentu ukryty błąd pozostawał uśpiony.

W wyniku tej zmiany komponent Service Control zaczął przetwarzać błędne dane, co doprowadziło do aktywacji wadliwego fragmentu kodu. Efektem był tzw. null pointer exception – błąd, który spowodował, że kluczowy plik binarny systemu zaczął wpadać w nieskończoną pętlę awarii. Katastrofa rozlała się globalnie, bo awaria objęła regionalne kopie usługi – każda z nich zawierała ten sam defekt.

Lawina błędów

Inżynierowie Google szybko zorientowali się, że coś poszło nie tak – analiza incydentu rozpoczęła się w ciągu dwóch minut, a już po dziesięciu zidentyfikowano źródło problemu. Jednak próba przywrócenia funkcjonowania systemu spowodowała efekt domina.

W większych regionach restart usług wywołał tzw. efekt stada – nagłe, skoordynowane obciążenie podstawowej infrastruktury, od której zależy Service Control. Systemy nie były przygotowane na taką falę żądań i same zaczęły się przeciążać. W rezultacie pełne przywrócenie usług zajęło aż trzy godziny.

Co istotne, proces odzyskiwania danych w wielu przypadkach musiał być wykonywany ręcznie przez zespoły odpowiedzialne za konkretne produkty Google Cloud – automatyzacja zawiodła.

Google bije się w pierś – i zapowiada zmiany

W oficjalnym komunikacie Google podkreśliło, że awaria była wynikiem błędu po stronie firmy i braku odpowiedniego zabezpieczenia wdrożenia nowej funkcji. W szczególności zabrakło tzw. feature flag – mechanizmu pozwalającego testować nowe elementy kodu w sposób kontrolowany.

Firma zapowiedziała szereg działań naprawczych, z których najważniejsze to:

  • Poprawa komunikacji zewnętrznej – zarówno automatycznej, jak i ludzkiej, tak aby klienci jak najszybciej otrzymywali rzetelne informacje o incydentach i mogli skutecznie reagować.

  • Utrzymanie sprawności systemów informacyjnych i monitorujących nawet w przypadku awarii podstawowej infrastruktury Google Cloud.

  • Lepsze testowanie kodu i zabezpieczenie nowych funkcji flagami, co ma zapobiec podobnym incydentom w przyszłości.

Google otwarcie przyznało, że zawiodło nie tylko jako dostawca usług chmurowych, ale też jako partner dla tysięcy firm zależnych od jego infrastruktury. Jednocześnie firma zastrzegła, że mimo najlepszych starań całkowite wyeliminowanie dużych awarii w tak skomplikowanych środowiskach pozostaje praktycznie niemożliwe.

Obserwuj nas w Google News

Pokaż / Dodaj komentarze do: Globalna awaria Google Cloud. Testowali na produkcji

 0
Kolejny proponowany artykuł
Kolejny proponowany artykuł
Kolejny proponowany artykuł
Kolejny proponowany artykuł