Google най-накрая разкри как случаен ред код парализира половината интернет миналата седмица

Всички очакваха обяснение за провала. Сега вече е ясно: това не е случайност, а закономерност...

Най-четени

Емил Василев
Емил Василев
Емил Василев редовно превежда сложни научни теми на достъпен език — от въпроси като „Какво е имало преди Големия взрив?" до практическото приложение на биотехнологиите в лечението на болести. Тази комбинация от технологична и научна журналистика го прави един от най-разностранните автори в екипа на Kaldata.

Миналата седмица интернет по целия свят беше в нестабилно състояние – Cloudflare, Spotify, Discord, Snapchat, Twitch и много други услуги започнаха масово да отказват. Инфраструктурата на Google Cloud беше в центъра на събитията: на 13 юни за почти три часа клиентите по целия свят загубиха достъп до наетите облачни ресурси. Инцидентът предизвика резонанс не само заради мащаба си, но и защото проблемите се разпространиха каскадно – от самата Google към услугите, които са свързани с нея.

Сега корпорацията официално предостави техническо обяснение за случилото се.

Както и в редица други големи инциденти през последните години, в основата на проблема не е злонамерен хакер или външна атака, а грешка в кода, който е бил реализиран в системата за управление на квотите. Повредата се оказа толкова сериозна, че засегна няколко нива на инфраструктурата, включително комуникациите и мониторинга.

Всичко започна с малка актуализация: на 29 май компонентът Service Control – ключов модул, отговорен за проверката на квотите и политиките на API в облака беше актуализиран, за да поддържа допълнителна логика за контрол на ресурсите. Този компонент играе важна роля в архитектурата на Google Cloud, като обслужва заявките чрез разпределени регионални инстанции и налага ограничения на квотите, разрешенията и политиките за достъп.

Нововъведението премина през стандартния поетапен процес на внедряване по региони и на етапа на внедряване всичко изглеждаше добре. Имаше обаче една тънкост: модифицираният код се активираше само при определени условия – когато влизаше в сила нова политика със специфична структура на данните, а точно тази политика не беше активирана на етапа на тестване. Ето защо проблемният фрагмент от кода не се прояви нито в средата за внедряване, нито по време на регионалното разгръщане. Той просто дремеше в системата и чакаше задействане.

Критичният момент настъпи на 12 юни, когато в една от политиките бяха добавени полета с празни стойности. Това беше спусъкът, който стартира неизследван дотогава път за изпълнение на код.

Новият фрагмент се опита да получи достъп до липсващите данни и се натъкна на грешка с нулев указател. Резултатът беше мигновен срив на бинарната програма, отговаряща за Service Control и рестартиране. И проблемът се случи синхронно във всички региони, тъй като всеки регион четеше същите политики и изпълняваше същата верига от действия.

Google потвърди, че кодът не е бил защитен с флаг ficha – механизъм, който обикновено позволява да се забрани непоследователната дейност по всяко време, преди да започне масовото разпространение. Ако флагът беше използван, инженерите щяха да успеят да идентифицират и изолират проблема светкавично. В този случай обаче той просто не е бил предвиден. Липсвала е и обработка на грешките в кода, което е направило повредата невъзможна за отстраняване без ръчна намеса.

Екипът на Google за управление на ресурсите реагира бързо: инцидентът беше отстранен след 2 минути, причината беше определена за около 10 минути, а след 40 инженерите започнаха възстановяването, но проблемите не свършиха дотук.

В големи региони, като us-central1, рестартирането на Service Control предизвикало претоварване на свързаната инфраструктура. Механизмът, предназначен за планирана работа не бил подготвен за лавината от повтарящи се заявки, което предизвикало „ефекта на стадото“ – когато подобни процеси започват едновременно да получават достъп до обща зависимост.

Тъй като Service Control е разпределена система, претоварването в големите локации се получи каскадно, което затрудни възстановяването. В някои региони възстановяването отне почти три часа. В същото време продуктите на Google, свързани с Service Control започнаха да излизат от строя един след друг: Gmail, Drive, Meet, Calendar, Voice – всички те претърпяха сривове в различна степен, a клиентите на Cloudflare, чиято услуга Workers KV разчита на Google Cloud се сблъскаха с провал при 90% от заявките.

И макар че повечето системи бяха възстановени и заработиха до вечерта на 13 юни, последиците от инцидента все още се отстраняват. От Google обещаха не само да не повтарят същите грешки, но и да направят структурни промени в процеса на работа с инфраструктурен код. По-специално, Google смята да подобри както автоматичната, така и ръчната комуникация с клиентите, така че информацията за критични повреди да достига до тях по-бързо и по-точно.

Стигна се и до важен извод: инфраструктурата за уведомяване и наблюдение трябва да бъде изолирана от останалата част на облака, за да продължи да функционира дори в случай на глобално прекъсване.

АбонаментВсичко важно от света на технологиите, директно в пощата ти.

С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.


Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!

3 Коментара
стари
нови оценка

Нови ревюта

Подобни новини