ПРИНЦИПЫ Xаос-Инженерии
Последнее обновление: май 2018
Хаос-инженерия - это дисциплина проведения экспериментов в распределенных информационных системах с целью укрепления уверенности в способности системы противостоять турбулентным условиям в эксплуатационной среде.
Небывалый рост крупномасштабных распределенных систем меняет правила игры современной компьютерной инженерии. Индустрия стремительно осваивает методы, повышающие гибкость разработки и скорость развертывания. Но сразу после явных преимуществ новых методологий возникает актуальный вопрос: Насколько мы уверены в надежности сложных систем, которые мы запускаем в эксплуатацию?
Даже когда каждый отдельный сервис в распределенной системе функционирует должным образом, взаимодействие между этими сервисами может привести к непредсказуемым результатам. Непредсказуемые результаты усугубляются редкими, но разрушительными событиями в реальном мире, которые влияют на эксплуатационную среду, и придают распределенным системам хаотические свойства.
Нам необходимо определять уязвимости и недостатки систем, прежде чем они выльются в общесистемные сбои. Такими недостатками могут быть неправильная настройка резервной системы, срабатывающей, если сервис недоступен; шквал повторных попыток подсоединения в результате неверных настроек тайм-аута; отключения, когда нисходящие зависимости получают слишком много трафика; каскадные ошибки при отказе единой точки сбоя (SPOF) и т.д. Мы должны устранять наиболее существенные дефекты заблаговременно, прежде чем они повлияют на пользователей в продакшен-системах. Нам нужны способы управления хаосом, свойственным таким системам. Только так мы сможем сполна реализовать преимущества большей гибкости и скорости разработки и с уверенностью проводить обновления систем независимо от уровня их сложности.
Эмпирический, системно-ориентированный подход устраняет хаос в крупномасштабных распределенных системах и создает уверенность в способности этих систем выдерживать реальные условия эксплуатации. Мы изучаем поведение распределенной системы, наблюдая за ней во время контролируемого эксперимента. Это мы называем эту практику Хаосной Инженерией.
ХАОС НА ПРАКТИКЕ
Как инструмент для управления неопределенностью широкомасштабных распределенных систем, Хаосная Инженерия служит для облегчения экспериментов с целью выявления системных недостатков. Протокол таких экспериментов состоит из четырех стадий:
- Начните с определения «устойчивого состояния» как некоего измеримого вывода системы, указывающего на нормальное поведение.
- Предположите, что это устойчивое состояние будет продолжаться как в контрольной группе, так и в экспериментальной группе.
- Введите переменные, отражающие реальные события, такие как: падающие сервера, неисправные жесткие диски, нарушенные сетевые соединения и т.д.
- Попытайтесь опровергнуть предположение, сравнивая стабильное состояние контрольной группы и экспериментальной группы.
Чем сложнее нарушить устойчивое состояние, тем более мы уверены в надежности системы. Если же уязвимость обнаружена, то у нас появляется цель для улучшения, которое сможет предотвратить сбой системы в целом.
ДОПОЛНИТЕЛЬНЫЕ ПРИНЦИПЫ
Следующие принципы описывают идеальное применение Хаосной Инженерии, применительно к процессам экспериментов, описанным выше. Степень следования этим принципам коррелирует со степенью нашей уверенности в работе крупномасштабных распределенных систем.
Построение гипотезы вокруг устойчивого состояния
Фокусируйтесь на измеримом результате работы системы, а не ее внутренних атрибутах. Измерение наблюдаемых показателей работы системы в течение короткого периода времени можно использовать в качестве оценки устойчивого состояния системы. Общая пропускная способность, процент ошибок, время задержки и т.д. - все эти показатели могут быть существенными метриками поведения системы в устойчивом состоянии. Сосредоточив внимание на системных закономерностях поведения во время экспериментов, Хаосный подход проверяет, что система действительно работает, вместо того, чтобы определять, как именно это происходит.
Чередуйте реальные события
Переменные хаоса отражают реальные события, происходящие с системой. Проверяйте события по степени потенциального воздействия или ожидаемой частоты возникновения. Рассматривайте события, как вызванные аппаратными сбоями, такими как отказ сервера, так и сбоями программного обеспечения, такими как неверно оформленные ответы, а также события, не являющиеся сбоями - такие как, например, всплеск пользовательского трафика или проведение операции масштабирования. Любое событие, способное нарушить устойчивое состояние, представляет собой потенциальную переменную в хаос-эксперименте.
Выполняйте эксперименты в рабочем окружении
Поведение системы зависит от ее окружения и от нагрузки. Поскольку режим использования ресурсов может измениться в любой момент, использование реальной нагрузки является единственным способом надежно отследить маршрут запроса. Чтобы гарантировать подлинность функционирования и конфигурации системы, Хаос отдает предпочтение проведению экспериментов непосредственно на рабочем трафике.
Автоматизируйте эксперименты для непрерывного запуска
Эксперименты, осуществляемые вручную, трудоемки, и, в конечном счете, ненадежны. Автоматизируйте эксперименты и запускайте их постоянно. Хаосная Инженерия встраивает автоматизацию в систему, чтобы управлять как оркестрацией распределенных систем, так и анализом их работы.
Минимизируйте радиус поражения
Эксперименты в рабочем окружении потенциально могут навредить пользователям. Хотя допускается возможность краткосрочного негативного воздействия на систему, Хаос-Инженер несет ответственность за то, чтобы минимизировать сбои и нарушения, вызванные экспериментами.
Хаосная Инженерия - действенная практика, которая уже меняет то, как планируется и разрабатывается программное обеспечение на некоторых из самых крупных предприятий в мире. В то время как другие методы направлены на повышение скорости и гибкости разработки программного обеспечения, Хаос предметно нацелен на управление неопределенностью в распределенных системах. Принципы Хаоса обеспечивают уверенность, необходимую для быстрого внедрения инноваций в широких масштабах и предоставления клиентам высокого качества обслуживания.
Присоединяйтесь к обсуждению принципов Хаоса и их применения в группе Chaos Community.