Бэкап ≠ кнопка "включить обратно"
Или ещё одна важная штука про восстановление сервисов
После ударов по ЦОДам Яндекса я написал два успокоительных поста: мол, бэкапы есть, всё восстановят, не переживайте. От своих слов не отказываюсь. Но буквально сразу легла инфра моего собственного Лаба - упал и платёжный сервис, и штука, на которой крутится всё управление подпиской. Три дня не работало вообще ничего, и подписчики писали "Алексей, чо за фигня", я писал в саппорт, отвечал на возмущения, успокаивал людей как мог, и... не буду врать, бесился не меньше вашего.
Сейчас у меня уже всё работает штатно. Так что, если не могли продлить подписку (кого-то даже выкинуло), сейчас уже спокойно можно.
Так вот, по итогам всего этого хотел бы дополнить те свои мысли одним важным тезисом: "Данные целы" и "сервис работает" - это две сильно разные точки, и между ними может быть несколько дней. Почему так:
Бэкап - это, грубо говоря, комплект деталей, а не собранная машина. Сохранённым данным нужны серверы, диски, сеть и свободные мощности, которые надо развернуть, проверить и подключить. И всё это упирается в базовые законы физики. Тот же Amazon много лет держал сервис Snowmobile - фуру с контейнером вместимостью до 100 петабайт - потому что иногда быстрее отвезти данные на грузовике, чем перегнать их по сети.
Короче, сервис - это цепочка, и она возвращается по частям. За кнопкой "заказать" стоят авторизация, расчёты, оплата, пуши и много чего ещё. При восстановлении можно сначала вернуть основное действие, а допники - уже после. У того же Гугла в учебнике по надёжности прямо описано: при нехватке ресурсов можно временно пожертвовать дополнительными функциями ради основных. Отсюда и может получаться картина, которая всех так бесила: 13 октября Пэй сообщил о возвращении переводов части юзеров, 19-го Go - о восстановлении основных функций. Думаю, и Диск скоро вернется. Такая постепенность сама по себе ещё не означает, что чинят криво: разные функции зависят от разных систем и возвращаются в разное время.
Нагрузку тоже возвращают по чуть-чуть. Ведь если открыть всё сразу, можно снова перегрузить только что восстановленную систему толпой вернувшихся. Собственно, Пэй так поэтапный доступ и объяснял.
С банками/финтехом всё ещё сложнее, т.к. нельзя поднять сервис, где у половины юзеров баланс из вторника, а у половины из пятницы. Дима Пирогов (руководит финтехом Яндекса) говорил, что данные об операциях Пэя копировались в несколько ЦОДов одновременно, и после повреждения площадок инфру пришлось перестраивать так, чтобы этот принцип сохранился. То есть вернуть операции нужно с сохранением надёжности хранения финансовых данных. Просто запустить приложение недостаточно.
У меня в Лабе снаружи это выглядело похоже, только на моём "игрушечном" масштабе. Три дня тишины, потом неделю всё поднималось кусками. И знаете что? Понимание механики ни капли не отменяет желания написать провайдеру всё, что думаешь. Но зато отменяет панику, а это в нашем деле главное.
В общем, прикладной вывод такой. Если ваш бизнес живёт на чужой инфре (а у многих так), спросите у поставщика не только "Есть ли бэкап?" (и не забудьте сделать собственный, если пользуетесь личным), но и "За какое время вы рассчитываете восстановить сервис и когда последний раз проверяли это на учениях?". Наличие копии само по себе не говорит, когда снова заработает кнопка. А именно от этого зависит, сколько дней вы будете раздавать узбагоин по праву бесящимся клиентам.