Гарантии безотказной работы — реалистичный подход

Vitalii Filiuchkov
5 min readApr 17, 2023

--

“Uptime Guarantees — A Pragmatic Perspective” by Itzy Sabo

Инженеры не скажут вам об этом. Это не то, о чем они думают. Им нравится работать над хорошими задачами и иметь возможность указывать их в своих резюме.

💡 Для большинства стартапов создание системы с доступностью в 99,5% более эффективно с точки зрения затрат, чем 99,99% !

“Но почему мои инженеры не должны стремиться к совершенству?”
Они должны, но гарантировать доступность в 99,99% невозможно только за счет безупречного выполнения задач. Для обеспечения такого уровня надежности требуется специализированная архитектура, избыточная инфраструктура и оптимизированные операционные и организационные процедуры. Если вам это не нужно — это неэффективно с точки зрения затрат. Большинству бизнесов не нужны 99,999% (“пять девяток”) или даже на 99,99% (“четыре девятки”). 99,5% (“две с половиной девятки”) — очень приличный результат.

В чем тут дело?

💡 Система с доступностью 99,99% должна быть в 50 раз (!) надежнее системы с “всего” 99,5%.
Это становится ясно, если сравнить время простоя: 0,01% против 0,50%.

Сколько это стоит?

Стоимость создания и эксплуатации системы с гарантиями безотказной работы в 99,99% в несколько раз выше, чем для 99,5%. Это связано со сложностью системы, количеством требуемых инженеров, их специализацией, уровнем опыта и соответствующей заработной платой, а также со значительно возросшими эксплуатационными расходами и договоренностями.

К какому уровню надежности я должен стремиться?

Оцените влияние простоя на бизнес еще до того, как приступать к обсуждению технических последствий. Это бизнесовое решение, а не техническое.

Во сколько вам обходится час простоя?

Задайте себе эти вопросы:

  • Если у вас есть интернет-магазин, какой доход (или, осмелюсь сказать, прибыль) он приносит в час?
  • Сколько времени простоя вытерпят ваши клиенты?
  • Какой ущерб нанесет час простоя? Это может быть как из-за прямой потери дохода, так и из-за возможного оттока клиентов из-за потери доверия.
  • Дополнительный вопрос: все ли часы простоя равны или некоторые часы обходятся дешевле, например, в выходные или после полуночи?

Сколько простоев вы можете выдержать?

Это общее время простоя, на которое вы можете рассчитывать при соответствующих гарантиях безотказной работы:

Операционные и организационные аспекты

Ваши ограничения в работе скорее всего являются операционными, а не техническими. Как правило, у вас более высокий риск простоя из-за проблем с эксплуатацией, чем из-за технических проблем. Может быть, и меньше вещей, которые могут пойти не так, но когда они случаются, на их исправление уходит много часов.

Давайте предположим, что система, спроектированная с гарантией безотказной работы 99,99%, упала. На технологическом уровне такая система будет иметь избыточность, гарантирующую отсутствие единичных точек отказа. Однако, отдельные точки отказа не обязательно должны быть техническими; они также могут быть административными.

💡 Кредитная карта может быть единственной точкой отказа.

Я видел, как операционные счета замораживались из-за превышения лимита расходов по кредитной карте. Сколько часов вам потребуется, чтобы сначала заметить наличие серьезной проблемы, определить, что причина не техническая, а затем действительно устранить ее? Одно такое событие уничтожит ваш рекорд безотказной работы на 99,99%.

Запланированный простой для технического обслуживания — это дополнительный операционный момент, который следует учитывать. Вы вообще это допускаете? Если да, то входит ли этот простой в те рамки, которые вы себе позволяете? Каковы риски того, что это продлится дольше, чем вы запланировали? Решение может быть техническим, но это бизнес-решение.

Гарантии поставщика инфраструктуры и SaaS

“Инфраструктура, которую я использую, гарантирует безотказную работу на 99,xx%”.
Давайте разберем это утверждение. Возьмем, к примеру, Amazon Web Services (AWS).

  • РезервированиеAmazon SLA для EC2 гарантирует время безотказной работы в 99,5% для одного экземпляра машины. Запустив несколько резервных машин, вы можете увеличить это значение, но что, если сбой EC2 повлияет на несколько машин
  • Зоны доступности = лучшее резервирование — ответ заключается в том, чтобы резервная система работала по крайней мере в какой-то другой “зоне доступности”. Каждая зона географически разделена, имеет независимое электроснабжение, независимое подключение к Интернету и т.д. Запуск двух машин, по одной в каждой из двух таких независимых зон доступности, позволяет вам умножить вероятности и получить время безотказной работы на 99,75%. На самом деле, SLA Amazon фактически определяет 99,99% для этой комбинации (1).
  • Время простоя в разных сервисах суммируется — вы будете использовать несколько разных сервисов AWS (например, EC2, ELB, S3, CloudFront). В SLA каждой службы указано свое собственное время безотказной работы. Время простоя является кумулятивным с точки зрения вероятности. Это означает, что даже если вы используете четыре сервиса, каждый из которых имеет SLA безотказной работы на 99,99%, общее ожидаемое время безотказной работы составит 99,96% (2). Это не “почти 99,99%”, это увеличивает время простоя в 4 раза! Поэтому, если вы используете несколько служб, SLA времени безотказной работы вашего облачного провайдера для любой одной службы следует рассматривать как верхний предел для всей вашей системы.

Что означает “гарантия” для вас и для облачного провайдера

В дополнение к приведенным выше математическим расчетам, нам необходимо рассмотреть, что подразумевается под термином “гарантия”. Вероятно, вы не найдете этого слова ни в одном соглашении об уровне обслуживания. Облачные провайдеры обещают приложить “коммерчески обоснованные усилия”, чтобы сделать свои сервисы доступными с определенным процентом безотказной работы. Если они не выполняют это требование в течение определенного месяца, они соглашаются (обычно по вашему прямому запросу) вычесть из вашего счета пропорциональную сумму, соответствующую продолжительности простоя, или фиксированный процент, основанный на фактическом периоде безотказной работы, который они предоставили. Поставщики облачных услуг не возмещают вам фактические потери (3). Итак, исходя из ваших ежемесячных расходов, сколько для вас стоит 99,99% SLA облачного провайдера?

Другие поставщики в вашей цепочке поставок SaaS

Есть ли у вас другие поставщики в вашей цепочке поставок, такие как GitHub, npm и CircleCI? Возможно, они не критичны для продакшна, но любые возникающие проблемы могут задержать доставку фикса до прода.

Ваш собственный код также должен соответствовать вашим требованиям по времени безотказной работы!

Ваш собственный код выполняется поверх инфраструктуры, которую мы обсуждали выше. Если вы стремитесь к 99,99%, ваш собственный код должен быть частью этого. Является ли ваш собственный контроль качества и нагрузочное тестирование достаточно тщательными, чтобы гарантировать безотказную работу вашего собственного кода на 99,99%, даже без учета надежности уровня инфраструктуры?

Итого

  • Доведение времени безотказной работы до 99,5% разумно достижимо без чрезмерных затрат. Все остальное стоит намного дороже.
  • Хорошей новостью является то, что если ваша собственная система сконструирована хорошо, ваше фактическое время безотказной работы, скорее всего, будет значительно выше, потому что поставщики стараются делать лучше, чем обещают. Дорого обходится гарантия, а не типичный результат.
  • Каждый уровень вашей системы должен обладать более высокой надежностью по отдельности, чем итоговое время безотказной работы, к которому вы стремитесь, поскольку частота ошибок накапливается.
  • Прежде чем тратить много денег, времени и ресурсов на разработку, обновите свои операционные возможности и административные процедуры.
  • Если какие-либо индивидуальные меры (например, поддержка по телефону 24x7x365) недостижимы, это не значит, что вы должны сдаваться. Делайте все возможное из того, что вы можете себе позволить.
  • Надеюсь, вы обрели свежий взгляд на вещи, который поможет вам решить, что вам действительно нужно, и осознать, в чем заключаются ваши реальные риски.

_____
1 Это, по-видимому, указывает на то, что внутренне они стремятся к более высокой надежности, чем обещают в своем SLA.
2 На самом деле это меньше, чем для одной зоны доступности, потому что службы не являются независимыми.
3 Для этого есть страховка; по-видимому, существует “страховка от простоя”.

--

--

Vitalii Filiuchkov

SRE Lead in Cloud Division of the largest telecom operator in Russia