НАЧЕЛА ИНЖЕЊЕРИНГА ХАОСА

Последње ажурирање: Мај 2018.

Инжењеринг хаоса је дисциплина експериментисања на систему са циљем да се изгради поверење у системске способности и побољша издржљивост током турбулентних услова на продукцији.

Напредак у дистрибуираним и високо скалираним софтверским системима мењају правила софтверског инжењеринга. IT индустрија брзо усваја методе које повећавају стабилност и брзину софтверског развоја. Ту се намеће битно питање: Колико поверења можемо имати у сложене системе које стављамо на продукцију?

Чак и да сви појединачни сервиси у дистрибуираном систему раде правилно, интеракције између тих сервиса могу проузроковати непредвидљив исход. Непредвидљиви исходи, које изазову ретки а реметећи догађаји који погађају продукциона окружења, праве те дистрибуиране системе наследно хаотичним.

Ми желимо да препознамо рањивости система пре него што се испоље широм система. Системске рањивости могу бити облика: неправилна резервна подешавања када сервис није доступан; превише понављаних покушаја позива због непрецизно конфигурираних временских ограничења; прекиди током пријема превише међусобно зависних података; системско урушавање када се сруши једна тачка система; итд…. Морамо се превентивно сконцентрисати на што значајније рањивости, пре него што погоди наше кориснике на продукцији. Потребан нам је начин да управљамо сталним хаосом на овим системима, да искористимо предност повећања флексибилности и брзине и да имамо поверења у наше производне примене упркос сложености коју они представљају.

Емпиријски, системски базиран приступ бави се хаосом у високо скалираним дистрибуираним системима и повећава наше поверење способности да ће ови системи издржати реалне услове. Упознајемо понашање дистрибуираних система проучавајући их у контролисаним експериментима. То називамо Инжењерингом хаоса.

ХАОС У ПРАКСИ

Инжењеринг хаоса се може посматрати као спровођење експеримената за проналажење рањивости у систему; конкретније, ради се о рањивостима у великим дистрибуираним системима. Ти екперименти прате следеће кораке:

  1. Започните тако што ћете дефинисати “стабилно стање” као неки мерљиви излаз система који указује на нормално понашање.
  2. Претпоставите да ће се ово стабилно стање наставити и у контролној и у експерименталној групи.
  3. Уведите променљиве које представљају догађаје у стварном свету као што су рушење сервера, квар дискова, пад/прекид мреже, итд.
  4. Пробајте да оспорите хипотезу тражећи разлике “стабилног стања” између контролне и експерименталне групе.

Што је теже оспорити “стабилно стање”, више поверења имамо у систем. Ако откријемо слабост, онда имамо циљ да побољшамо пре него што се то понашање испољи на целом систему.

НАПРЕДНА НАЧЕЛА

Следећа начела описују идеалну примену Инжењеринга хаоса, примењену на горе описане процесе експериментисања. Степен у којем се ова начела остварују у великој мери су у узајамној вези са поверењем које можемо имати у нашем високо скалираном, дистрибуираном систему.

Изградите хипотезу око понашања у стабилном стању

Сконцентришите се на мерљиве излазе система, пре него на интерне атрибуте система. Мерење излаза система током ограниченог временског периода је показатељ стабилног стања система. Свеукупна пропусност система, стопе грешака, проценти латенције, итд. могу бити метрике од интереса које представљају понашање у стабилном стању. Фокусирањем на узорке понашања система током експеримената, Хаос потврђује да систем заиста ради, а не покушава да потврди како ради.

Различити догађаји

Променљиве хаоса се одражавају на догађаје стварног света. Дајте приоритет догађајима било по потенцијалном утицају или процењеној учесталости. Узмите у разматрање догађаје који су у узајамној вези са отказом хардвера (квар сервера), софтверске грешке (неисправан одговор), и догађаји који нису проузроковани неуспехом (пораст промета или скалирање). Сваки догађај који може пореметити стабилно стање је потенцијална променљива у Хаос експерименту.

Извршите експерименте на продукцији

Системи се другачије понашају, зависно од окружења и саобраћаја. Пошто се обрасци употребе могу променити у било ком тренутку, узорковање стварног саобраћаја је једини начин да се поуздано ухвати пут захтева. Да би се гарантовала и аутентичност начина на који се систем користи и релевантност за тренутни систем, Хаос захтева да се директно експериментише са саобраћајем продукције.

Аутоматизујте експерименте за стално извршавање

Ручно покретање експеримената је радно интензивно и на крају неодрживо. Аутоматизујте експерименте и стално извршавајте. Инжењеринг хаоса гради аутоматизацију у систему како би покренуо и оркестрирање и анализу.

Минимизујте радијус удара

Експериментисање на продукцији може да изазове непотребну сметњу корисницима. Иако мора постојати одобрење за неки краткорочни негативан утицај, задатак и одговорност инжењера Хаоса је да осигура да се штетне последице експеримената сведу на минимум и да се држе под контролом.

Инжењеринг хаоса је моћна пракса која већ мења начин на који је софтвер дизајниран и пројектован у неким од највећих операција на свету. Тамо где друге праксе побољшавају брзину и флексибилност, Хаос се посебно бави системском несигурношћу у дистрибуираним системима. Начела хаоса дају нам самопоуздање да брзо развијемо иновације у великом обиму, а клијентима пружамо високо квалитетно искуство које заслужују.

Придружите се текућој дискусији Начелима хаоса и њиховој примени на Гугловој групи Chaos Community.