Год назад я действительно заинтересован в идее Хаоса Инжиниринг. Я прочитал пару сообщений в блоге, и я был готов начать с нарушения вещей в производстве. В контролируемом пути конечно. Чтобы начать, я создал небольшое приложение, которое заставит нас начаться с некоторых основных экспериментов Chaos. В этом посте я хочу поделиться некоторыми вещами, которые я узнал, принимая наши первые шаги в Хаосе Инжиниринг.
Что такое хаос инжиниринг?
Chaos Engineering — это понимание и улучшение устойчивости ваших систем через эксперименты. Сначала вы создаете гипотезу о том, как ваша система будет вести себя, когда вы проведете его в трудное время. Затем вы проверяете, ведет ли система, как вы ожидаете. Например, вы можете вызвать проблему сети между узлами читателя и писателя вашего кластера базы данных, а затем проверить, что это не вызывает никаких запросов к приложению, которое использует эту базу данных, чтобы выполнить неудачу.
Почему этот тип экспериментов полезен?
Поскольку очень трудно понять все компоненты ваших систем и как именно они работают вместе. Даже если вы думаете, что у вас есть хороший похвал вашей системы в целом, есть слишком много деталей для всех компонентов для одного человека, чтобы знать. Хотя мы можем легко думать в абстракциях при разработке нашего приложения, в производстве все довольно бетонные, а наши предположения проверяются, хотите ли мы этого или нет.
Давайте перейдем на уроки, которые мы узнали.
1. Убедитесь, что у вас достаточно хорошая наблюдаемость
Нет смысла начать с Chaos Engineering, если у вас нет правильного уровня наблюдательности ваших систем. Это процесс расследования, почему ваша система не сделала то, что вы предположили, что заставит вас лучше понять поведение вашей системы. Без надлежащих журналов и метрик, которые будут сложными.
2. Сделать это реалистичным
Чтобы начать, вам нужно решить, с чем вы собираетесь поэкспериментировать. Для нас, запустив наши рабочие нагрузки в AWS, это относительно легко проверить с определенным сценарием. Перезагрузка или завершение экземпляра EC2 — это простое действие. Очень заманчиво перечислять все, что вы можете легко сделать, и создавать эксперименты для тех. Так что это то, что я сделал, когда представил нашего собственного создателя Хаоса.
Мы оказались инструментом, который выполнял задачи типа обслуживания серверов по расписанию. Немногие из перезагрузки и отказов, которые он когда-либо случался в дикой природе. Легко затруднить разрыв, труднее сделать вещи реалистичными способами, хотя это то, где сделано больше обучения.
3. Ручная первая, автоматизация позже
Мы очень заботимся о полностью автоматизировании повторяющихся задач в CoolBlue. Когда я начал работать над этими экспериментами, я был убежден литературой, которая упомянула важность автоматического запуска ваших экспериментов. На практике это не отработало, как я бы понравился.
Моя ошибка немедленно автоматизировала эксперименты. Определение и создание экспериментов — это процесс разведки. Автоматизируясь прямо с самого начала, вы замечаете скорость, в которой вы можете попробовать новые вещи. Я быстро поселился на небольшом количестве экспериментов и продолжал повторяться ежедневно или еженедельно. Но это победило цель всего упражнения, что нужно узнать о поведении ваших систем.
Как только вы чему-то узнаете, вы хотите ценить это знание. Это где автоматизация становится очень мощной. Это позволяет регулярно повторять эксперименты, чтобы вы могли проверить, есть ли у них один и тот же результат. Это позволяет действовать на любых регрессиях, в вашем приложении или в вашем понимании вашего приложения.
Для компаний только начинаются с Chaos Engineering, Automation — это хороший способ обнаружить регрессию, но не отличный способ начать. В конце концов, это 20% о нарушении вещей в производстве, но 80% о изучении поведении вашей системы в производстве. И это изучение вы не можете автоматизировать.
Оригинал: «https://dev.to/coolblue/lessons-from-a-first-attempt-at-chaos-engineering-8ie»