24 мая 2024
Chaos Engineering:
как повысить надёжность бизнес-сервисов при помощи имитации сбоев
Эффективное управление IT-системами ― ключевой фактор успеха для многих компаний, особенно для крупных. Каждая минута простоя высоконагруженной системы может привести к потере клиентов и ухудшению репутации бренда. Так, по данным платформы Gremlin, Amazon в час теряет порядка $13 миллионов при сбое систем.

Сокращать расходы из-за технических инцидентов помогают различные методики, одна из которых Chaos Engineering. Эта практика активно применяется во многих крупных технологических компаниях по всему миру. В России хаос-инжиниринг используется в таких компаниях, как Яндекс, Ozon, Сбер, ВТБ, Росбанк, МТС Банк.

Что представляет собой хаос-инжиниринг, как посчитать экономический эффект от использования практики ― об этом и не только рассказывает эксперт в области Chaos Engineering Дмитрий Якубовский. Дмитрий создавал IT-продукты для крупных банков и при разработке не раз сталкивался с вопросом надёжности приложений, что и привело его к применению практики Chaos Engineering.

Статья будет полезна предпринимателям, которые хотят быть в курсе проверенных инструментов для защиты IT-инфраструктуры и приложений.

Дмитрий Якубовский

Исполнительный директор блока b2c
в Сбере,
эксперт в области Chaos Engineering
Эффективное управление IT-системами ― ключевой фактор успеха для многих компаний, особенно для крупных. Каждая минута простоя высоконагруженной системы может привести к потере клиентов и ухудшению репутации бренда. Так, по данным платформы Gremlin, Amazon в час теряет порядка $13 миллионов при сбое систем.

Сокращать расходы из-за технических инцидентов помогают различные методики, одна из которых Chaos Engineering. Эта практика активно применяется во многих крупных технологических компаниях по всему миру. В России хаос-инжиниринг используется в таких компаниях, как Яндекс, Ozon, Сбер, ВТБ, Росбанк, МТС Банк.

Что представляет собой хаос-инжиниринг, как посчитать экономический эффект от использования практики ― об этом и не только рассказывает эксперт в области Chaos Engineering Дмитрий Якубовский. Дмитрий создавал IT-продукты для крупных банков и при разработке не раз сталкивался с вопросом надёжности приложений, что и привело его к применению практики Chaos Engineering.

Статья будет полезна предпринимателям, которые хотят быть в курсе проверенных инструментов для защиты IT-инфраструктуры и приложений.
В материале

Какие задачи решает Chaos Engineering

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

Практика позволяет:
  • проверить устойчивость приложения;
  • выявить слабые места и скрытые проблемы в проектировании и масштабировании;
  • улучшить работу системы в реальных условиях использования.

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

При проведении испытаний выполняется имитация отказа компонентов серверов, сетевой инфраструктуры или точечные отказы приложений. Обычно это делают при помощи стандартной модели испытаний, которую создали представители крупных IT-компаний со всего мира и участники международного сообщества Awesome Chaos Engineering.

Кратко о том, как проводится имитация сбоя по хаос-инжирингу ↓

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

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

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

Автоматизируем эксперимент и выполняем его постоянно. В каждой следующей версии бизнес-сервиса могут обнаружиться новые скрытые сбои. И постоянное выполнение моделирований позволяет защитить новые версии от потенциальных сбоев.
  • Как появилась практика Chaos Engineering

    Основоположником хаос-инжиниринга считается Джесси Роббинс ― руководитель программы по эмуляции сбоев в Amazon. Роббинс в прошлом работал пожарным и для повышения доступности сервиса Amazon Cloud стал использовать практики по противопожарным тренировкам и алгоритм действий команды во время чрезвычайной ситуации. Так в 2003 году Джесси Роббинс создал программу Game Day.

    В 2011 году платформа Netflix мигрировала в Amazon Cloud, и Game Day пришлась кстати. В ходе проведения испытаний команда Netflix создала первый набор правил, которые легли в основу Chaos Engineering, и инструмент ― Chaos Monkey (обезьяна хаоса). Название можно объяснить тем, что обезьяны могут привнести неконтролируемый хаос куда угодно, и если говорить об IT-системах, важно создавать их такими, чтобы они работали независимо от внешних обстоятельств.

Что чаще всего вызывает простои сервисов и в каких случаях поможет Chaos Engineering

Согласно исследованию Uptime Institute от 2023 года, более трети респондентов ― порядка 600 компаний в различных областях бизнеса, таких как телекоммуникации, финансовые сервисы, e-commerce платформы, цифровое правительство, ― столкнулись за последние три года с серьёзными сбоями. А большинство ― со сбоями разной степени значимости.
Uptime Institute ― международный институт, который разработал признанный во всём мире стандарт надёжности, устойчивости и эффективности центров обработки данных.
Опрошенные так ответили, какие проблемы чаще всего вызывают сбои:
Практика Chaos Engineering помогает справляться с основными причинами простоев:
  • сетевыми проблемами;
  • проблемами с электричеством → перезагрузка серверов;
  • неполадками, связанными с IT-системами или программным обеспечением;
  • сбоями в работе внешних IT-провайдеров.

В российской практике два самых распространённых кейса ― это проблемы с сетью и электричеством.

Кто проводит моделирование сбоев и какие навыки потребуются

Хаос-инженер ― это скорее роль, а не должность. Проводить эксперименты могут DevOps-инженеры, разработчики, инженеры поддержки или системные администраторы.

Из технических навыков потребуются:
  • знания администрирования операционных систем Linux или Windows;
  • опыт работы с облачными сервисами, которые чаще всего строятся на базе Kubernetes или OpenShift-платформ;
  • опыт разработки на одном из языков для написания программ, моделирующих сбои, ― например bash-скрипт, встроенный в Linux.

Преимущества и ограничения Chaos Engineering

Преимущества

  • Запуск контролируемых экспериментов помогает выявить уязвимости бизнес-сервиса → повышается его устойчивость к сбоям и неполадкам.
  • Использование хаос-инжиниринга помогает выявить узкие места в производительности системы → улучшается работа бизнес-сервиса.
  • Практика позволяет команде разработки более глубоко понять, как работает их система в различных стрессовых условиях, → улучшается мониторинг и диагностика проблем.
  • Благодаря моделированию сбоев специалисты лучше понимают принципы работы сервиса, его слабые места и способы его улучшения → команда развивается.
  • Chaos Engineering можно использовать для сервисов с разной архитектурой ― как для новых облачных сервисов, так и для сервисов, спроектированных 10+ лет назад.

Ограничения

  • Применение Chaos Engineering влечёт за собой перестройку процессов в тестировании и изменений в архитектуре системы.

    Внедрение практики может потребовать значительных усилий и времени со стороны команды разработчиков. Процесс состоит из нескольких этапов: от ввода новых регламентов (14 дней), разработки и обучения персонала (от 25 дней) до переработки архитектуры бизнес-сервиса (от нескольких месяцев до года). В итоге трудозатраты могут составить от 1,5 месяцев до года.
  • Понадобятся дополнительные ресурсы ― специалисты, которые будут заниматься хаос-инжинирингом.
  • Проведение экспериментов может привести к недолгим или длительным нарушениям работы системы ― от 10 минут до 3–5 дней. Хотя это и есть цель практики, у пользователей могут возникнуть временные проблемы.

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

Как рассчитать экономический эффект от применения Chaos Engineering

Для начала посмотрим, сколько стоит простой бизнес-сервиса.

Цифра зависит от масштаба IT-системы, её сложности и особенностей ― в среднем простой одной минуты высоконагруженной системы составляет от $7 200 до $9 000, по данным Uptime Institute и Gremlin.

В России пока недостаточно массовых исследований по потерям от простоев систем, компании часто открыто не объявляют о сбоях, так как это влечёт за собой репутационные риски. Из недавних публичных масштабных примеров ― 7-часовой сбой в работе банка Точка, вызванный неполадками в центре обработки данных.

В том, что сбои происходят часто, можно убедиться, посмотрев данные сервисов, которые регистрируют фактические сбои компаний, например государственный Центр мониторинга и управления сетью связи общего пользования или Детектор сбоев от компании Brand Analytics.
Чтобы рассчитать экономический эффект от технического сбоя и затраты на использование хаос-инжиниринга, для примера возьмём такую ситуацию: бизнес выводит новый продукт на рынок → закупает рекламу → начинается активный показ рекламы по каналам продвижения продукта → увеличивается трафик и нагрузка на сервисы компании → перегорает часть оборудования, приложение не может балансировать трафик внутри бизнес-сервиса → происходит нештатная ситуация.

Затраты на решение произошедшего инцидента = П + Э + Рв + Рц

где
П ― потери от реализации инцидента: могут составлять миллионы рублей;
Э ― экстренная группа реагирования: оплата труда 5–10 сотрудников;
Рв ― разработка временного решения: оплата дня труда команды разработки;
Рц ― разработка целевого решения: оплата труда команды разработки до 14 дней.

Допустим, что в наш бизнес-сервис приходят заявки от клиентов и в минуту он обрабатывает 5 000 заявок. Сервис был недоступен час, а значит, мы потеряли 300 000 заявок. Если комиссия с одной заявки 3 рубля, мы потеряли 900 000 рублей за час.

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

Представим, что средняя ставка сотрудника ― 15 000 рублей в день. Умножаем её на количество человек в группе и получаем затраты от 75 000 до 150 000 рублей.

После того, как группа реагирования нашла причину инцидента, в течение дня нужно разработать временное решение. После исправления инцидента команда разработки бизнес-сервиса начинает разработку целевого решения со сроком в 2 недели.

По предварительным подсчётам в такой кейс мы должны инвестировать больше 1 млн рублей за час простоя, а сбой может длиться несколько часов.

В случае применения Chaos Engineering затраты будут такими ↓

Проведение имитации = А + Pц

где
А ― проведение имитации: оплата труда 1–2 сотрудников;
Рц ― разработка целевого решения: оплата труда разработчиков до 14 дней.

Для всё того же примера в ситуации с инцидентом при применении хаос-инжиниринга структура затрат будет другая.

Для проведения моделирования сбоя нам понадобится 2 инженера, которые напишут гипотезы, подготовят бизнес-систему, проведут эксперименты. Представим, что наша система приёма заявок среднего размера, и инженеры подготовят и проведут эмуляции сбоев за 2 недели. Умножаем на ставку сотрудника в те же 15 000 рублей в день и получаем 420 000 рублей на проведение работ.

Если команда выявила в бизнес-системе участки с потенциальными неполадками, пишем целевое решение в течение 2 недель, как и в первом случае с инцидентом.

Итак, при отказе системы на устранение последствий уйдёт больше миллиона рублей в зависимости от времени простоя, в то время как в хаос-инжиниринг нужно инвестировать в 2–3 раза меньше.
Инвестиции на применение Chaos Engineering могут составлять от 100 000 до 2 млн рублей в зависимости от размера и сложности бизнес-системы.
В простых системах инженеры меньше затратят времени на разработку моделирования сбоев, и сумма будет стремиться к 100 000. В крупных системах, где следует проводить сотни эмуляций, ― к 2 млн.

Как будет развиваться Chaos Engineering в России

Хаос-инжиниринг в России развивается с 2018 года. И интерес к практике растёт, судя по количеству вышедших новых статей в рунете и докладов на профильных технологических конференциях.

Практика будет развиваться по мере перехода бизнес-сервисов в облачные платформы: моделирование отказов системы в облаке возможно провести только с использованием практики Chaos Engineering.

По данным аналитического агентства TAdviser, последние два года ежегодный рост спроса на облачные технологии в России составляет 40–44%. Такая динамика позволяет предположить, что распространение хаос-инжиниринга будет увеличиваться.
Узнаете, как предотвратить или минимизировать потери, связанные с непредвиденными событиями или неблагоприятными условиями

Разберётесь, как планировать работу команды, учитывая риски и ограничения

Поймёте, как оценивать ресурсы для запуска проектов
Узнаете, как предотвратить или минимизировать потери, связанные с непредвиденными событиями или неблагоприятными условиями

Разберётесь, как планировать работу команды, учитывая риски и ограничения

Поймёте, как оценивать ресурсы для запуска проектов

Резюмируем

Chaos Engineering ― это IT-практика, при которой намеренно создаются ситуации сбоев в работе бизнес-сервиса, чтобы улучшить его надёжность. С помощью этой практики можно выявить скрытые проблемы в проектировании, масштабировании и отказоустойчивости бизнес-сервисов.

Применение практики позволит бизнесу сократить финансовые потери во время отказов системы и снизить риски.

Особенно хаос-инжиниринг актуален для онлайн-сервисов ― финансовых и медицинских учреждений, телекоммуникационных и транспортных компаний, интернет-магазинов, соцсетей.

Инвестиции на проведение эмуляций сбоев могут составлять от 100 000 до 2 млн рублей в зависимости от размера бизнес-системы. При этом затраты на реальные сбои могут составлять десятки, а то и сотни миллионов рублей.

Chaos Engineering ― молодая практика, которая только набирает популярность в России. Развитию практики будет способствовать переход бизнеса в облачные технологии, так как именно эта практика позволяет проверить надёжность сервисов в облаках.
Читать также
Мнение автора и редакции может не совпадать. Хотите написать колонку для Нетологии? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии.
Дмитрий Якубовский
Исполнительный директор блока b2c в Сбере, эксперт в области Chaos Engineering
Оцените статью