Káosztechnika

A Wikipédiából, a szabad enciklopédiából
A Netflix által használt Chaos Monkey logó

A káosztechnika a gyártási szoftverrendszerekkel kísérletezik. Célja a bizalom növelése úgy, hogy a rendszer képes ellenállni a turbulenciának és a váratlan helyzeteknek.[1]

A szoftverfejlesztés során jellemzően követelményként meghatározzák, hogy egy adott szoftverrendszer képes-e elviselni a hibákat, miközben biztosítja a szolgáltatás megfelelő minőségét - gyakran rugalmasságként hivatkozva arra. Azonban olyan tényezők miatt, mint a rövid határidők vagy a terület ismeretének hiánya, a fejlesztő csapatok gyakran nem teljesítik ezt a követelményt. A káosztechnika olyan technológia, amely megfelel a rugalmas igényeknek.

A káosztechnikával a rugalmasságot a következő területeken lehet elérni:

  • Infrastrukturális hibák
  • Hálózati hibák
  • Alkalmazáshibák

Történelem[szerkesztés]

Miközben 2011-ben felügyelte a Netflix felhőbe történő migrációt, [2] Greg Orzellnek az az ötlete támadt, hogy orvosolja a megfelelő rugalmasság-tesztelés hiányát egy olyan eszköz létrehozásával, amely meghibásodásokat okozhat a termelési környezetben, a Netflix ügyfelek által használt környezetben. A cél az, hogy a nem kudarcot feltételező fejlesztési modellről egy olyan modellre váltsunk, ahol a kudarcokat elkerülhetetlennek tartják, és ez arra késztesse a fejlesztőket, hogy a beépített rugalmasságot inkább kötelezettségként, mint lehetőségként kezeljék:

"A Netflixnél a szabadság és a felelősség kultúrája megakadályozza, hogy arra kényszerítsük a mérnököket, hogy sajátos módon tervezzék meg kódjukat. Ehelyett azt tapasztaltuk, hogy a szerver semlegesítése által okozott problémákat elkülönítve és a végletekig kitolva igazíthatjuk csapatunkat az infrastruktúra rugalmasságának koncepciójához. Létrehoztuk a Chaos Monkey programot, amely véletlenszerűen kiválaszt egy szervert, és a szokásos aktív ideje alatt letiltja azt. Vannak, akik szerint ez őrültség, de nem támaszkodhatunk véletlenszerű eseményekre, hogy teszteljük viselkedésünket az esemény következményeivel szemben. Tudva, hogy ez gyakran előfordul, a mérnökök erős szövetségeket hoztak létre redundancia és folyamat-automatizálás létrehozása érdekében, hogy túléljék az ilyen eseményeket anélkül, hogy a Netflix-felhasználók millióit érintenék. A Chaos Monkey az egyik leghatékonyabb eszköz a szolgáltatás minőségének javítására. " [3]

A szoftveres szolgáltatások véletlenszerű példányainak időszakos "megölésével" redundáns architektúrákat lehet tesztelni annak igazolására, hogy a szerverhibák nem befolyásolják-e jelentősen az ügyfeleket.

A káosztechnika koncepciója közel áll a Phoenix Szerverekhez, amelyet Martin Fowler vezetett be először 2012-ben. [4]

Perturbációs modellek[szerkesztés]

Simian Army logó a Netflix-től

A Simian Army[5][6] egy olyan eszközkészlet, amelyet a Netflix fejlesztett ki az Amazon Web Services infrastruktúrájának megbízhatóságának, biztonságának vagy rugalmasságának tesztelésére, beleértve a következő eszközöket: [7]

Chaos Monkey[szerkesztés]

A Chaos Monkey egy olyan eszköz, amelyet a Netflix talált ki 2011-ben, hogy tesztelje informatikai infrastruktúrájának rugalmasságát.[8] Úgy működik, hogy szándékosan letiltja a számítógépeket a Netflix termelési hálózatban, azért, hogy tesztelje, hogyan reagálnak a fennmaradó rendszerek a megszakításokra. A Chaos Monkey immár egy nagyobb, Simian Army nevű eszközkészlet része, amelynek célja a különféle rendszerhibákra és élhelyzetekre adott válaszok szimulálása és tesztelése.

A Chaos Monkey mögött álló kódot a Netflix 2012-ben adta ki Apache 2.0 licenc alatt. [9] [10]

A név "Chaos Monkey" a könyvben Chaos Monkeys című könyvben van elmagyarázva, amelyet Antonio Garcia Martinez publikált: [11]

"Képzelje el, hogy egy majom belép egy adatközpontba. Ezeknek a szervereknek a „farmja” az online tevékenységeink összes kulcsfontosságú funkcióját ellátja. A majom véletlenszerűen leválasztja a kábeleket, tönkreteszi a berendezéseket, és mindent visszaad, ami elhalad [ürülékeket dobál]. Az informatikai vezetők számára az a felelős információs rendszerek megtervezése, hogy együtt tudjanak működni ezekkel a majmokkal. Senki sem tudja, mikor érkeznek és mit pusztítanak el. "

LitmusChaos Bird
A LitmusChaos Bird a káosztechnika kurálja Kubernetes rendszereken

A LitmusChaos a felhő-natív káosztervezés eszközkészlete. A Litmus olyan eszközöket kínál a káosz összehangolásához a Kubernetesen, amelyek segítenek az SRE-t megtalálni a telepítés gyengeségeit. Az SRE a Litmus segítségével kezdetben káoszkísérleteket futtat egy szakaszos környezetben, végül hibákat és sebezhetőségeket talál a termelésben. A gyengeségek kijavítása növelheti a rendszer rugalmasságát.

A LitmusChaos a CNCF Projektek része, amely az Apache 2 alatt lett licenszelve és létfontosságú volt a következő generációs Chaos Engineering sztori vezetésében, mivel lehetővé teszi a Chaos munkafolyamatának a nulláról percek alatt történő ütemezését tanulási görbe használata nélkül. A káosztechnika útjának kezdete Litmusé egymás mellett halad előre:

  • Nyílt forráskód: Rugalmasságot, mozgékonyságot és közösségi támogatást nyújt.
  • Lényegében deklaratív: A káosz kezeléséhez a Litmus káosz CRD-ket biztosít, a káosz menedzseléséhez. A káosz API használatával deklaratív módon befejezheti az hangszerelést, az ütemezést és az összetett munkafolyamat-kezelést.
  • A káoszkísérleteket bármikor elérhetővé teheti: a legtöbb általános káoszkísérlet bármikor felhasználható az eredeti káosztechnikai igények kielégítéséhez.
  • A Litmus SDK segítségével gyorsan létrehozhat egy alapvető kísérleti struktúrát, amely saját zavart okozhat. A Kubernetes fejlesztőknek és az SRE-nek káosz logikát kell hozzáadniuk az új kísérletek létrehozásához. [12]

Káosz Kong[szerkesztés]

A Simian hadsereg hierarchiájának csúcsán Chaos Kong egy teljes AWS "régiót" helyezett el.[13] Bár ritka, a teljes terület vesztesége bekövetkezhet. A Káosz Kong szimulálja a rendszer válaszát és az ilyen események helyreállítását.

Káosz Gorilla[szerkesztés]

A Káosz Gorilla egy teljes "Amazon" "elérhetőségi zónát" (egy vagy több földrajzi régiót kiszolgáló teljes adatközpontot) dob le. [14]

Késleltetési majom[szerkesztés]

Bevezeti a kommunikációs késleltetést a hálózat meghibásodásának vagy megszakadásának szimulálásához.

Majom doktor[szerkesztés]

Elvégzi az állapotellenőrzéseket, úgy, hogy monitorozza a metrikák teljesítményét (például CPU töltés), azért, hogy észre vegye az egészségtelen példányokat, a gyökér okok analizálásért és végül kijavítsa vagy lekapcsolja ezeket.

Portás majom[szerkesztés]

A felesleges erőforrások azonosítása és ártalmatlanítása a pazarlás és az összetévesztés elkerülése érdekében.

Megfelelőségi majom[szerkesztés]

Olyan eszköz, amely meghatározza, hogy egy példány minősítés nélküli-e, amelyet szabályokkal tesztel. Ha bármely szabály megállapítja, hogy a példány nem felel meg, a majom e-mail értesítést küld a példány tulajdonosának.

Biztonsági majom[szerkesztés]

A Megfelelőségi Majomból származik, amely ismert sérülékenységű vagy helytelen konfigurációjú példányok keresésére és letiltására szolgál. [15]

10-18 Majom[szerkesztés]

A különböző földrajzi régiókban működő ügyfeleket kiszolgáló szoftverek lokalizációs és nemzetközivé válási problémáinak (röviden „l10n” és „i18n”) felderítésére használt eszköz

Byte-Majom[szerkesztés]

Egy kis Java könyvtár a JVM-alkalmazások hibakörülményeinek teszteléséhez. Szándékosan vezet be hibákat, például kivételeket és késéseket az alkalmazáskód menet közbeni észlelésével. [16]

Káoszgép[szerkesztés]

A CKáoszgép[17] az alkalmazás szintű káosztervezés eszköze a JVM-ben. Összpontosít az alkalmazásban részt vevő minden egyes próbálkozási blokk hibakezelési képességeinek elemzésére, kivételek beillesztésével.

Dokkoló Káosztechnika Platform[szerkesztés]

Káosztechnikai platform, a Microsoft Azure platformra és az Azure DevOps szolgáltatásokra összpontosít és azokat használja fel. A felhasználók az infrastruktúra, a platform és az alkalmazás szintjén adhatnak fel hibákat. [18]

Gonosz szellem[szerkesztés]

Az internet megbízhatóságának javítására szolgáló "szolgáltatási hiva" platform. Úgy működik, hogy a mérnököknek egy teljesen menedzselhető megoldást kínálnak, hogy biztonságosan kísérletezhessenek az összetett rendszereken, ezáltal a kudarcokat rugalmassággá alakítva a gyengeségek azonosítása érdekében, mielőtt azok az ügyfelekhez eljutnak és bevételkiesést okoznának.[19]

Facebook Vihar[szerkesztés]

Az adatközpont elvesztésére való felkészülés érdekében a Facebook rendszeresen teszteli infrastruktúrájának ellenállását a szélsőséges eseményekkel szemben. Ezt a programot Vihar projektnek hívják, és szimulálni tudja a nagyméretű adatközpont-hibákat. [20]

Káosz napok[szerkesztés]

Az AWS GameDays[21] ihlette alkalmazásának rugalmasságának tesztelése érdekében a Káosz Napok megtartását, amelyben a Voyages-sncf.com csapata részt vett. 30 percenként az üzemeltetők hibákat szimuláltak. A csapatok észlelések, diagnózisok és megoldások alapján szereztek pontokat. Ez a fajta gamifikációs esemény segít megismertetni a fejlesztő csapatokat az ellenálló képesség koncepciójával.

A 2017-es DevOps REX konferencián[22] bemutatott koncepciókat a http://days-of-chaos.com weboldalon mutatták be más kísérletek gyűjtésének céljából.

ChaoSlingr[szerkesztés]

A ChaoSlingr az első nyílt forráskódú alkalmazás, amely a káosztervezést alkalmazza a hálózat biztonsága érdekében. A ChaoSlingr főként az AWS infrastruktúra biztonsági kísérleteire összpontosít, hogy proaktív módon felfedezze a rendszer biztonsági gyengeségeit a komplex elosztott rendszerkörnyezetekben. A GitHub-on, 2017 szeptemberében jelent meg.

Káosz eszköztár[szerkesztés]

A Káosz eszköztár azért született, hogy egyszerűsítse a káosztechnika tudományághoz való hozzáférését, és bebizonyítsa, hogy a kísérleti módszerek különböző szinteken végezhetők: infrastruktúra, platform és alkalmazások. A Káosz eszköztár egy nyílt forráskódú eszköz, amely az Apache 2 alatt licencelt, és 2017 októberében jelent meg.[23]

Mangle[szerkesztés]

A Mangle lehetővé teszi, hogy zökkenőmentesen futtasson káosz technikai kísérleteket az alkalmazás és az infrastruktúra összetevőin, hogy értékelje a rugalmasságot és a hibatűrést. Úgy tervezték, hogy nagyon kevés előkonfigurációval hozza létre a hibákat, és minden infrastruktúráját támogatja, beleértve a K8S-t, a Docker-t, a vCentert vagy bármely távoli gépet, ahol az ssh engedélyezve van. Erőteljes plug-in modelljével meghatározhat egy tetszőleges egyedi hibát egy sablon alapján, és futtathatja azt anélkül, hogy a nulláról kellene elkészítenie a kódot.

Káoszháló[szerkesztés]

A Káoszháló egy nyílt forráskódú felhő natív Káosztechnikai platform, amelyet káoszkísérletekhez használnak Kubernetes környezetben. Támogatja az átfogó hibaszimulációt, beleértve a Pod hibát, a tároló hibát, a hálózati hibát, a rendszerhibát, a rendszeridő meghibásodását és a rendszermag meghibásodását.

A Káoszháló Apache 2 licenc alatt jelent meg 2019 decemberében, és 2020 júliusában Cloud Native Computing Foundation (CNCF) homokozó projektje lett.[24]

Lásd még[szerkesztés]

Megjegyzések és hivatkozások[szerkesztés]

  1. Principles of Chaos Engineering. principlesofchaos.org. (Hozzáférés: 2017. október 21.)
  2. The Netflix Simian Army. Netflix Tech Blog. Medium, 2011. július 19. (Hozzáférés: 2017. október 21.)
  3. Netflix Chaos Monkey Upgraded. Netflix Tech Blog. Medium, 2016. október 19. (Hozzáférés: 2017. október 21.)
  4. PhoenixServer. martinFowler.com. Martin Fowler (software engineer), 2012. július 10. (Hozzáférés: 2021. január 14.)
  5. SimianArmy: Tools for your cloud operating in top form. Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures. Netflix, Inc., 2017. október 20. (Hozzáférés: 2017. október 21.)
  6. SimianArmy: Tools for keeping your cloud operating in top form. Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures, Netflix, Inc., 2017-11-07, <https://github.com/Netflix/SimianArmy>. Hozzáférés ideje: 2017-11-07
  7. SemiColonWeb. „Infrastructure : quelles méthodes pour s'adapter aux nouvelles architectures Cloud ? - D2SI Blog”, D2SI Blog, 2015. december 8.. [2017. október 21-i dátummal az eredetiből archiválva] (Hozzáférés: 2017. november 7.) (fr-FR nyelvű) 
  8. The Netflix Simian Army. Netflix Tech Blog . Medium, 2011. július 19. (Hozzáférés: 2017. október 21.)
  9. Netflix libère Chaos Monkey dans la jungle Open Source - Le Monde Informatique”, LeMondeInformatique (Hozzáférés: 2017. november 7.) (francia nyelvű) 
  10. SimianArmy: Tools for your cloud operating in top form. Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures. Netflix, Inc., 2017. október 20. (Hozzáférés: 2017. október 21.)
  11. Mais qui sont ces singes du chaos ? (fr-FR nyelven). 15marches, 2017. július 25. (Hozzáférés: 2017. október 21.)
  12. Cloud-Native Chaos Engineering – Enhancing Kubernetes Application Resiliency. CNCF, 2019. november 6.
  13. Chaos Engineering Upgraded, 19 April 2017, <https://netflixtechblog.com/chaos-engineering-upgraded-878d341f15fa>. Hozzáférés ideje: 2020-04-10
  14. The Netflix Simian Army, <https://medium.com/netflix-techblog/the-netflix-simian-army-16e57fbab116>. Hozzáférés ideje: 2017-12-12
  15. Security Monkey monitors AWS, GCP, OpenStack, and GitHub orgs for assets and their changes over time.: Netflix/Security_monkey, 2019. június 22.
  16. GitHub repo of Byte-Monkey. GitHub, 2019. június 20.
  17. (2019. április 23.) „A Chaos Engineering System for Live Analysis and Falsification of Exception-handling in the JVM”. IEEE Transactions on Software Engineering, 1. o. DOI:10.1109/TSE.2019.2954871. ISSN 0098-5589.  
  18. A chaos engineering platform for Microsoft Azure. medium.com. (Hozzáférés: 2020. június 28.)
  19. Gremlin raises $18 million to expand 'failure-as-a-service' testing platform. VentureBeat, 2018. szeptember 28. (Hozzáférés: 2018. október 24.)
  20. Hof, Robert (2016-09-11), Interview: How Facebook's Storm Heads Off Project Data Center Disasters, <https://www.forbes.com/sites/roberthof/2016/09/11/interview-how-facebooks-project-storm-heads-off-data-center-disasters/#3bc1f4f64875>. Hozzáférés ideje: 2017-10-21
  21. SemiColonWeb: GameDay AWS: test the resilience of your applications Cloud (amerikai angol nyelven), 2016. július 4. [2017. október 21-i dátummal az eredetiből archiválva]. (Hozzáférés: 2017. október 21.)
  22. Days of Chaos: the development of the devops culture at Voyages-Sn ... (angol nyelven), 2017. október 3.[halott link]
  23. Miles, Russ: Introducing and Extending the Chaos Toolkit. Russ Miles (the Geek on a Harley) , 2017. október 6. (Hozzáférés: 2017. október 23.)
  24. Chaos Mesh Authors: Chaos Mesh® Joins CNCF as a Sandbox Project. Chaos Mesh®, 2020. július 28.

 

Külső linkek[szerkesztés]