Поиск по сайту:

Как использовать бюджеты ошибок для защиты надежности обслуживания


«Бюджет ошибок» описывает количество времени, в течение которого система может находиться в автономном режиме, прежде чем это повлечет за собой ощутимые последствия для вашего бизнеса. Бюджеты ошибок используются вместе с соглашениями об уровне обслуживания (SLA) и целями уровня обслуживания (SLO), чтобы информировать организации, когда недоступность системы привела к нарушению контракта.

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

Что такое бюджет ошибок?

Бюджет ошибок службы — это просто мера максимального времени, в течение которого она может находиться в состоянии сбоя, не подвергаясь контрактным, финансовым или нормативным штрафам. Доступный бюджет ошибок определяется на основе показателя времени безотказной работы, который вы фиксируете в соглашениях об уровне обслуживания, которые вы отправляете клиентам. Вместо этого вы могли бы быть более строгим, основывая свой бюджет ошибок на SLO.

  • SLA — время безотказной работы, которое вы публично подтверждаете, например 99,95 %. Большинство организаций, использующих соглашения об уровне обслуживания, по контракту обязаны компенсировать клиентам, если фактическое время безотказной работы службы упадет ниже этого значения.
  • SLO — время безотказной работы, к которому вы стремитесь, например 99,99 %. Это означает, что показатель времени безотказной работы между 99,95 % и 99,99 % является нежелательным и свидетельствует о необходимости повышения надежности. Однако это не обязывает вас вознаграждать клиентов.
  • Бюджет ошибок — расчет времени простоя, допустимого соглашением об уровне обслуживания или SLO.

Вы можете рассчитать свой бюджет ошибок, используя простое умножение. Например, SLA, в котором говорится, что ваш сервис будет доступен на уровне 99,99 % в течение года, дает вам общий бюджет ошибок 52 минуты 35 секунд. Отключение, которое длится 30 минут, не повлияет напрямую на ваш бизнес. Тот, который длится час, превысит бюджет ошибки и потребует компенсации для клиентов.

Вот еще несколько примеров:

SLA % Annual Error Budget Monthly Error Budget
99.99% 52 minutes, 35 seconds 4 minutes, 23 seconds
99.95% 4 hours, 23 minutes 21 minutes, 54 seconds
99.90% 8 hours, 46 minutes 43 minutes, 49 seconds

Бюджеты ошибок могут быть получены из любого типа SLA, а не только из времени безотказной работы. Количество успешных запросов, измерения производительности и показатели использования ресурсов также часто используются в качестве SLA и SLO. SLA, в котором говорится, что 99 % запросов будут успешно обрабатываться каждый день, снизит бюджет ошибок, если было сделано 10 000 запросов и менее 9 900 из них были выполнены успешно.

Бюджеты ошибок и инженеры

Бюджеты ошибок — это не просто более простой способ работы в случае нарушения вашего соглашения об уровне обслуживания. Они также используются для определения приоритетов ваших команд разработчиков. Бюджет ошибок — это механизм контроля, который определяет, на каком виде работы следует сосредоточиться.

Когда ваш бюджет ошибок заполнен, разработчики могут работать без ограничений. Они могут внедрять новые функции, вносить радикальные изменения в системы и применять рискованные миграции в производственных средах. Эти действия могут привести к ошибкам и неустойчивому поведению, истощая бюджет ошибок. Бюджет ошибок «тратится» благодаря этому нововведению.

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

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

Что происходит, когда расходуется бюджет ошибок?

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

Исчерпание бюджета ошибок не следует воспринимать легкомысленно. У вас не осталось покупательной способности, поэтому вам не следует инвестировать в дальнейшие инновации. Бюджет ошибки можно сравнить с кредитной линией от ваших клиентов: расходы, превышающие ваш лимит, ухудшат ситуацию и могут серьезно повредить перспективам вашего бренда.

Замораживание всей второстепенной работы должно быть вашей первой реакцией на превышение бюджета. Это должно произойти сразу, как только бюджет будет исчерпан. Заблокируйте новые развертывания от попадания в производственную среду, перераспределите разработчиков, которые создают новые функции, и оцените самый быстрый способ восстановления службы. Ваш бюджет ошибок естественным образом восстановится по прошествии времени после разрешения инцидента.

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

Влияние на бизнес регулярно расходуемых ошибочных бюджетов

Регулярное использование вашего бюджета ошибок является признаком того, что ваше приложение нестабильно и должно быть более устойчивым. Непрерывный поток инцидентов с нарушением SLA создаст плохое восприятие вашего продукта. Пользователи ожидают, что программное обеспечение будет надежно доступно, когда оно им понадобится. Доверие клиентов будет подорвано, если это не так, что может привести к тому, что вы проиграете конкурентам.

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

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

Краткое содержание

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

Бюджеты ошибок являются эффективным механизмом для решения этой дилеммы. Они позволяют разработчикам свободно вводить новшества в рамках фиксированных ограничений, сохраняя надежность обслуживания. Бюджеты ошибок защищают бизнес от последствий нарушений SLA, инструктируя инженеров переориентироваться на стабильность по мере увеличения времени простоя.

Вы можете внедрить бюджеты ошибок, установив SLA или SLO, а затем рассчитав допустимую степень недоступности. Вам также нужно будет отслеживать продолжительность новых инцидентов, чтобы знать, когда расходуется ваш бюджет ошибок. Платформы управления инцидентами, такие как Opsgenie, Pagerduty и Blameless, могут автоматически собирать эту информацию и предоставлять оповещения в режиме реального времени о событиях исчерпания бюджета ошибок.

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