Словник для інженерії хаосу: 28 термінів, які кожен SRE повинен знати

Вивчіть основний англійський словник з інженерії хаосу — стабільний стан, радіус вибуху, день гри, введення помилки, гіпотеза і багато іншого для команд SRE і платформи.

Хаотична інженерія — це практика навмисного введення помилок в систему для виявлення слабких місць до того, як вони проявляться як інциденти. Це одна з найбільш інтелектуально багатих дисциплін у інженерії надійності сайту — і вона має свій власний точний словник, який вам слід освоїти, щоб брати участь у експериментах, писати підручники і повідомляти про результати.

Цей посібник містить 28 найважливіших термінів з інженерії хаосу з чіткими визначеннями, прикладами використання і контекстом, необхідним для точного використання їх у технічних розмовах.

Філософія в одному реченні

«Зламати речі навмисно, в контрольований спосіб, перш ніж реальність зламає їх за вас»

Хаотична інженерія не про випадкове знищення інфраструктури. Це наукова дисципліна, побудована навколо формування гіпотез, розробки контрольованих експериментів і навчання з результатів.

Основні поняття

1. Стабільний стан

** Найважливіша концепція в інженерії хаосу. ** Стабільний стан — це вимірювана, нормальна поведінка системи, коли все працює правильно. Його визначають * до* початку експерименту і він служить базовою лінією для порівняння.

Стабільний стан зазвичай виражається у вигляді спостережуваних метрик:

  • Частота успішних запитів перевищує 99, 9%
  • Затримка P99 нижче 300 мс
  • Пропускна здатність замовлень понад 500 замовлень/хвилину

** Використання: ** * “Перед запуском експерименту ми встановили стабільний стан: служба оплати обробляла 600 замовлень/ хвилину з 99, 95% успішністю.” *

Гіпотеза

Передбачення, яке ви робите перед запуском експерименту хаосу. Добре сформована гіпотеза має такий вигляд:

«Ми віримо, що [система] збереже [метрику стабільного стану] навіть коли [введено умову невдачі], тому що [роздуми про механізм стійкості]»

** Приклад гіпотези: ** * “Ми вважаємо, що шлюз API збереже 99,5% успішності навіть якщо один з трьох вузлів сервера буде припинений, тому що балансувальник навантаження буде маршрутизувати трафік до інших здорових вузлів протягом 10 секунд.” *

3. Введення помилки

Навмисне введення помилки в системний компонент. Це можна зробити на багатьох рівнях:

  • ** Рівень мережі: ** втрата пакетів, затримка, обмеження пропускної здатності
  • ** Рівень процесу: ** вбиває процес або контейнер
  • ** Рівень ресурсів: ** Напруга ЦП, тиск пам’ яті, заповненість диска
  • ** Рівень програми: ** повернення відповідей на помилки від залежності

** Використання: ** * “Ми ввели помилку затримки 500 мс у виклики з служби рекомендацій до каталогу продуктів.” *

4. Радіус вибуху

Обсяг впливу експерименту — скільки користувачів, служб або систем можуть бути вражені, якщо гіпотеза є невірною. Перед будь- яким експериментом з хаосом вам слід визначити і обмежити радіус вибуху.

** Використання: ** * “Ми обмежили радіус взрывов до 5% від виробничого трафіку за допомогою прапора можливості, тому експеримент вплинув не більше ніж на 2000 користувачів.” *

П’ятий день гри

Запланований, спільний сеанс хаос-інженерії, де команда навмисно запускає сценарії аварій, щоб перевірити стійкість системи і відповідь команди. Часто включає інженерів, SRE, а іноді і бізнес-зацікавлених осіб.

** Використання: ** * “Ми провели день гри у четвер — ми імітували повний регіональний відключення і тренували програму для відключення до нашого резервного регіону.” *

Експеримент

Структурований тест, який вводить помилку, спостерігає за відповіддю системи і порівнює її з гіпотезою. Експеримент хаосу не є випадковим актом знищення — це науковий експеримент.

Повний запис експерименту включає:

  • Hypothesis
  • Визначення стабільного стану
  • Метод введення помилок
  • Вікно спостереження
  • Результати та висновки

Експериментально-конструкторський словник

7. Перервати умову

Попередньо визначений поріг, який викликає автоматичне завершення експерименту, якщо система погіршиться за межі прийнятного рівня. Необхідно для безпеки.

** Приклад: ** * « Перервати умову: якщо кількість помилок перевищить 2%, зупинити експеримент і негайно відновити мережу. » *

8. План відновлення

Кроки, які слід виконати для відновлення системи до стабільного стану, якщо експеримент завершиться невдало або буде викликано умову скасування.

** Використання: ** *“План відновлення був простим: вилучити правило затримки з мережевої політики і перевірити відновлення протягом 60 секунд.” *

Турбулентність

Загальний термін для умов, що спричиняють розлад, які вводяться під час експерименту хаосу. Деякі платформи хаос-інженерії використовують цей термін спеціально.

10. Режим відмови

Особливий спосіб, за якого система або компонент може зазнати невдачі. Хаотична інженерія систематично досліджує різні режими невдач.

** Поширені режими відмови в розподілених системах: **

  • Служба недоступна (службу перервано)
  • Повільна реакція (пік затримки)
  • Часткова помилка (деякі екземпляри зазнали невдачі)
  • Пошкоджені дані
  • Мережевий розділ (сценарий розділення мозку)

11-й. Середній час відновлення (MTTR)

Час, який знадобиться системі для відновлення після введення аварії. Хаотичні експерименти часто вимірюють MTTR, щоб оцінити ефективність механізмів автоматичного відновлення.

12. грациозна деградація

Вміння системи продовжувати надавати зменшені, але прийнятні послуги, коли деякі компоненти не працюють, а не повністю не працюють. Хорошо спроектированная система деградирует грациозно.

** Використання: ** “Коли ми закінчили службу рекомендацій, домашня сторінка деградувала елегантно — користувачі бачили статичний список продуктів, а не сторінку помилки.”

13-й резерв

Вторичный механизм, активируемый при отказе основного. Приклади: кешована відповідь, типове статичне значення, простіша альтернативна служба.

** Використання: ** * “Служба пошуку має резервне копіювання кешованих результатів — коли ми ввели 100% рівень помилок у сервер пошуку, резервне копіювання було активовано протягом 2 секунд.” *

Інфраструктура та мережеві терміни

14. Хаотична мавпа

Оригінальний інструмент інженерії хаосу, створений Netflix. Він випадково завершує екземпляри віртуальних машин у виробництві, щоб переконатися, що служби можуть терпіти помилки екземплярів. Назва стала загальним терміном для будь-якого інструменту, який випадково вбиває інфраструктуру.

15. Розділення мережі

Імітація сценарію, у якому частини розподіленої системи не можуть спілкуватися між собою — звичайний режим відмови у реальному світі у хмарних середовищах.

** Використання: ** * “Ми імітували мережевий розділ між основною базою даних і її репліками, щоб перевірити нашу процедуру автоматичного відключення.” *

Затримка введення

Додати штучну затримку до мережевих викликів або відповідей служб, щоб перевірити поведінку систем під час повільних залежностей.

** Використання: ** * “Ми ввели 2 секунди затримки у виклики постачальника платіжних послуг, щоб перевірити, чи були наші параметри тайм- аута і автоматичного вимкнення правильними.” *

17-го. Напруга процесора / тиск пам’яті

Штучне споживання циклів процесора або пам’ яті на вузлі для імітації вичерпання ресурсів і спостереження за відповіддю системи — чи вона погіршується, чи виходить з ладу, чи відновлюється?

Помилка DNS

Імітація помилок розв’ язання DNS для перевірки, чи не відбувається помилка служб, коли вони не можуть розв’ язати адресу залежності.

Рефлексивні моделі (слова, які ви обговорюватимете під час експериментів)

19. Автоматический выключатель

Шаблон, який стежить за викликами залежності і « відкриває » (припиняє дозволяти виклики) коли помилки перевищують поріг, запобігаючи каскадним помилкам. Названо на честь електричного пристрою.

** Використання: ** “Відключення рекомендаційної служби було відкрито після того, як 50% викликів зазнали невдачі — експеримент підтвердив, що наш тайм- аут 5 секунд був занадто довгим.”

20-х років. Повторити спробу з експоненційним відступом

Шаблон, за якого невдалі запити буде повторено після поступово збільшуючихся затримок, зменшуючи навантаження під час часткових відключень.

Перегородка 21

Шаблон, який ізольовує компоненти, щоб відмова одного з них не призвела до вичерпання ресурсів іншого. Названо на честь водонепроникних відсіків на кораблі.

** Використання: ** * “Шаблон перегородки запобігав споживанню повільною службою пошуку всієї ємності пулу потоків — поток отримання залишався незмінним.” *

Тайм- аут

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

23. Каскадна несправність

Сценарій, за якого невдача одного компонента призведе до невдачі залежних компонентів у ланцюговій реакції. Хаотична інженерія спеціально розроблена для виявлення і запобігання каскадним збоям.

Використовується для вимірювання часу (під час і після експериментів)

Спостережливість

Можливість розуміння внутрішнього стану системи з її зовнішніх виходів — метрики, журналів і слідів. Без спостережливості, хаотичні експерименти не можуть бути оцінені.

25. Канарський аналіз

Порівняння поведінки невеликої підмножини трафіку (« канарки ») з базовим під час експерименту. Дозволяє виявлення регресій з мінімальним впливом на користувача.

Помилка бюджету

Допустимий час простою або відмови, визначений за допомогою об’ єктивного рівня обслуговування (SLO). Експерименти хаосу ідеально виконувати, коли бюджет помилок є здоровим.

** Використання: ** “Ми призупинили дії в день гри, тому що наш бюджет помилок був на рівні 20% за місяць — експерименти ризикували б порушити SLO.”

27-го. Пост-експериментальний огляд

Структурований підсумковий звіт після експерименту хаосу — що було гіпотезою, що сталося, що було вивчено, і які зміни будуть внесені. По структуре похоже на безвинное пост-мёртвое тело.

28. Оценка устойчивости

Кількісний показник того, наскільки добре система або служба справляються з певним сценарієм аварії. Не стандартна метрика, але використовується неформально багатьма командами для відстеження покращень з часом.

Ключеві моменти

  • ** Стабільний стан ** — це базова лінія — визначте її у вимірюваних термінах перед будь- яким експериментом.
  • Потрібна гіпотеза: інженерія хаосу - це наука, а не випадкове знищення.
  • ** Радіус вибуху ** має бути явно обмеженим — починати з малих обсягів, у стадії розробки, з умовами скасування.
  • ** Дні гри ** збирають команду разом, щоб тренуватися у відповіді на помилки як спільне вправу.
  • Основний словник стійкості - ** обмежувач, перегородка, резерв, граціозна деградація ** - описує механізми, для перевірки яких розроблені експерименти хаосу.
  • Завжди плануйте ** відновлення ** перед запуском експерименту, а не після того, як щось пішло не так.

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

Поширені запитання

Про що ця стаття "Словник для інженерії хаосу: 28 термінів, які кожен SRE повинен знати"?

Вивчіть основний англійський словник з інженерії хаосу — стабільний стан, радіус вибуху, день гри, введення помилки, гіпотеза і багато іншого для команд SRE і платформи.

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "Словник для інженерії хаосу: 28 термінів, які кожен SRE повинен знати"?

Приблизно 9 min.