Káosztechnika
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]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. "
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]- Hibatűrés
- Hibatűrő számítógépes rendszer
- Adatredundancia
- Hiba észlelése és kijavítása
- Esik vissza és előre
- Rugalmasság (hálózat)
- Robusztusság (informatika)
Megjegyzések és hivatkozások
[szerkesztés]- ↑ Principles of Chaos Engineering. principlesofchaos.org. (Hozzáférés: 2017. október 21.)
- ↑ The Netflix Simian Army. Netflix Tech Blog. Medium, 2011. július 19. (Hozzáférés: 2017. október 21.)
- ↑ Netflix Chaos Monkey Upgraded. Netflix Tech Blog. Medium, 2016. október 19. (Hozzáférés: 2017. október 21.)
- ↑ PhoenixServer. martinFowler.com. Martin Fowler (software engineer), 2012. július 10. (Hozzáférés: 2021. január 14.)
- ↑ 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.)
- ↑ 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
- ↑ 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ű)
- ↑ The Netflix Simian Army. Netflix Tech Blog . Medium, 2011. július 19. (Hozzáférés: 2017. október 21.)
- ↑ „Netflix libère Chaos Monkey dans la jungle Open Source - Le Monde Informatique”, LeMondeInformatique (Hozzáférés: 2017. november 7.) (francia nyelvű)
- ↑ 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.)
- ↑ Mais qui sont ces singes du chaos ? (fr-FR nyelven). 15marches, 2017. július 25. (Hozzáférés: 2017. október 21.)
- ↑ Cloud-Native Chaos Engineering – Enhancing Kubernetes Application Resiliency. CNCF, 2019. november 6.
- ↑ Chaos Engineering Upgraded, 19 April 2017, <https://netflixtechblog.com/chaos-engineering-upgraded-878d341f15fa>. Hozzáférés ideje: 2020-04-10
- ↑ The Netflix Simian Army, <https://medium.com/netflix-techblog/the-netflix-simian-army-16e57fbab116>. Hozzáférés ideje: 2017-12-12
- ↑ Security Monkey monitors AWS, GCP, OpenStack, and GitHub orgs for assets and their changes over time.: Netflix/Security_monkey, 2019. június 22.
- ↑ GitHub repo of Byte-Monkey. GitHub, 2019. június 20.
- ↑ (2019. december 2.) „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.
- ↑ A chaos engineering platform for Microsoft Azure. medium.com. (Hozzáférés: 2020. június 28.)
- ↑ Gremlin raises $18 million to expand 'failure-as-a-service' testing platform. VentureBeat, 2018. szeptember 28. (Hozzáférés: 2018. október 24.)
- ↑ 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
- ↑ 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.)
- ↑ Days of Chaos: the development of the devops culture at Voyages-Sn ... (angol nyelven), 2017. október 3.[halott link]
- ↑ 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.)
- ↑ Chaos Mesh Authors: Chaos Mesh® Joins CNCF as a Sandbox Project. Chaos Mesh®, 2020. július 28.
Külső linkek
[szerkesztés]- Principle of Chaos Engineering – The Chaos Engineering manifesto
- Chaos Engineering – Adrian Hornsby
- How Chaos Engineering Practices Will Help You Design Better Software – Mariano Calandra