ПРИНЦИПЫ Xаос-Инженерии

Последнее обновление: май 2018

Хаос-инженерия - это дисциплина проведения экспериментов в распределенных информационных системах с целью укрепления уверенности в способности системы противостоять турбулентным условиям в эксплуатационной среде.

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

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

Нам необходимо определить слабости системы, прежде чем они выльются в общесистемные сбои.

Системные недостатки могут принимать следующие формы: неправильная настройка запасного варианта если сервис недоступен; шквал повторных попыток подсоединения в результате неверных настроек тайм-аута; отключения когда нисходящие зависимости получают слишком много трафика; каскадные ошибки при отказе единой точки сбоя (SPOF), и т.д. Мы должны устранять наиболее существенные дефекты проактивно, прежде чем они влияют на наших клиентов в продакшен-системах. Нам нужны способы управления хаосом, свойственным этим системам. Только так мы сможем сполна реализовать преимущества большей гибкости и скорости и с уверенностью выкатывать обновления независимо от уровня их сложности.

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

ХАОС НА ПРАКТИКЕ

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

  1. Начните с определения «устойчивого состояния» как некоего измеримого вывода системы, указывающего на нормальное поведение.
  2. Предположите, что это устойчивое состояние будет продолжаться как в контрольной группе, так и в экспериментальной группе.
  3. Введите переменные, отражающие реальные события, такие как: падающие сервера, неисправные жесткие диски, нарушенные сетевые соединения, и т.д.
  4. Попытайтесь опровергнуть предположение, сравнивая стабильное состояние контрольной группы и экспериментальной группы.

Чем сложнее нарушить устойчивое состояние, тем более мы уверены в надежности системы. Если-же слабость обнаружена - у нас есть цель для улучшения, которое предотвратит последующее влияние ошибки на систему в целом.

ДОПОЛНИТЕЛЬНЫЕ ПРИНЦИПЫ

Следующие принципы описывают идеальное применение Хаосной Инженерии, применительно к процессам экспериментов описанных выше. Степень следования этим принципам коррелирует со степенью нашей уверенности в работе крупномасштабных распределенных систем.

Построение гипотезы вокруг устойчивого состояния

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

Чередуйте реальные события

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

Выполняйте эксперименты в рабочем окружении

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

Автоматизируйте эксперименты для постоянного запуска

Эксперименты, осуществляемые вручную, трудоемки, и, в конечном счете, ненадежны. Автоматизируйте эксперименты и запускайте их постоянно. Хаосная Инженерия встраивает автоматизацию в систему, чтобы управлять как координацией действий, так и анализом данных.

Минимизация зоны поражения

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

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

Присоединяйтесь к обсуждению принципов Хаоса и их применения в Гугл Группе Chaos Community.