Bevezetés a Káoszmajomba
1. Bemutatkozás
Ebben az oktatóanyagban a Chaos Monkey for Spring Boot-ról fogunk beszélni.
Ez az eszköz segít nekünk vezesse be a káosztervezés néhány alapelvét a Spring Boot webalkalmazásainkba késleltetés hozzáadásával a REST végpontjainkhoz, hibák eldobásával vagy akár egy alkalmazás megölésével.
2. Beállítás
A Káoszmajom hozzáadásához alkalmazásunkhoz egyetlen Maven-függőségre van szükségünk a projektben:
de.kodecentrikus káosz-majom-rugós-csomagtartó 2.0.0
3. Konfiguráció
Miután megvan a függőség beállítása a projektünkben, be kell állítanunk és be kell kezdenünk a káoszt.
Ezt többféleképpen tehetjük meg:
- Az alkalmazás indításakor a káosz-majom rugós profil (ajánlott)
- Használata chaos.monkey.enabled = true ingatlan
Az alkalmazás elindításával káosz-majom rugós profil nem kell leállítanunk és elindítanunk az alkalmazást, ha engedélyezni vagy letiltani akarjuk amíg az alkalmazásunk fut:
java -jar your-app.jar --spring.profiles.active = káosz-majom
Egy másik hasznos tulajdonság az management.endpoint.chaosmonkey.enabled. Ha ezt a tulajdonságot igazra állítja, akkor engedélyezi a Káoszmajom felügyeleti végpontját:
// localhost: 8080 / chaosmonkey
Ebből a végpontból láthatjuk könyvtárunk állapotát. Itt található a végpontok teljes listája és azok leírása, amelyek segítenek a konfiguráció megváltoztatásában, a Káoszmajom engedélyezésében vagy letiltásában, és más részletesebb vezérlők.
Az összes rendelkezésre álló tulajdonság felhasználásával finomabban tudjuk ellenőrizni, mi történik a generált káoszban.
4. Hogyan működik
A Chaos Monkey figyelőkből és támadásokból áll. A Watcher egy Spring Boot komponens. A Spring AOP-t használja annak megállapítására, hogy egy nyilvános metódust mikor hajtanak végre a következő tavaszi kommentárokkal kommentált osztályokban:
- Összetevő
- Vezérlő
- RestController
- Szolgáltatás
- Adattár
Az alkalmazás tulajdonságainak fájljában található konfiguráció alapján nyilvános módszereinket vagy megtámadják, vagy sem, az alábbiak egyikével:
- Latency Assault - véletlen késleltetést ad a kéréshez
- Exception Assault - véletlenszerű futásidejű kivételeket dob
- AppKiller Assault - öhm, az alkalmazás meghal
Vessünk egy pillantást arra, hogyan konfigurálhatjuk figyelőnket és támadásainkat egy kontrolláltabb támadáshoz.
5. Figyelő
Alapértelmezés szerint a Watcher csak nálunk engedélyezett szolgáltatások. Ez azt jelenti, hogy támadásaink csak nyilvános módszerekkel hajtódnak végre a (z) osztályozott osztályainkban @Szolgáltatás.
De ezt könnyen megváltoztathatjuk a tulajdonságok konfigurálásával:
chaos.monkey.watcher.controller = false chaos.monkey.watcher.restController = false chaos.monkey.watcher.service = true chaos.monkey.watcher.repository = false chaos.monkey.watcher.component = false
Ne feledje, hogy az alkalmazás elindulása után nem tudjuk dinamikusan megváltoztatni a figyelőt a Chaos Monkey for Spring Boot kezelő port használatával amiről korábban beszéltünk.
6. Támadások
A támadások alapvetően olyan forgatókönyvek, amelyeket tesztelni szeretnénk alkalmazásunkban. Vegyük az egyes támadástípusokat, és nézzük meg, mit csinál, és hogyan tudjuk konfigurálni.
6.1. Lappangási roham
Ez a típusú támadás késleltetést ad a hívásainkhoz. Így alkalmazásunk lassabban reagál, és figyelemmel kísérhetjük viselkedését, amikor például az adatbázis lassabban reagál.
Konfigurálhatjuk és be lehet kapcsolni vagy ilyen típusú támadásokat az alkalmazásunk tulajdonságfájlja segítségével:
chaos.monkey.assaults.latencyActive = true chaos.monkey.assaults.latencyRangeStart = 3000 chaos.monkey.assaults.latencyRangeEnd = 15000
Az ilyen típusú támadások konfigurálásának, be- és kikapcsolásának másik módja a Chaos Monkey felügyeleti végpontja.
Kapcsoljuk be a késleltetési támadást, és adjunk hozzá két és öt másodperc közötti késleltetési tartományt:
curl -X POST // localhost: 8080 / chaosmonkey / assaults \ -H 'Content-Type: application / json' \ -d \ '{"latencyRangeStart": 2000, "latencyRangeEnd": 5000, "latencyActive": true, " KivételekActive ": hamis," killApplicationActive ": hamis} '
6.2. Kivétel Assault
Ez teszteli, hogy alkalmazásunk mennyire képes kezelni a kivételeket. A konfiguráció alapján véletlenszerű futásidejű kivételt dob egyszer engedélyezve.
Engedélyezhetjük azt egy curl hívással, hasonlóan a késleltetési támadásunkhoz:
curl -X POST // localhost: 8080 / chaosmonkey / assaults \ -H 'Tartalomtípus: application / json' \ -d \ '{"latencyActive": hamis, "excionsActive": true, "killApplicationActive": false}'
6.3. AppKiller Assault
Ez, nos, az alkalmazásunk valamilyen véletlenszerű ponton meghal. Engedélyezhetjük vagy letilthatjuk egy egyszerű göndörhívással, mint az előző két típusú támadás:
curl -X POST // localhost: 8080 / chaosmonkey / assaults \ -H 'Tartalomtípus: application / json' \ -d \ '{"latencyActive": hamis, "kivételesActive": hamis, "killApplicationActive": igaz}
7. Következtetés
Ebben a cikkben, a Káoszmajomról beszélgettünk a Tavaszi Csizmáért. Láttuk, hogy a káosztervezés néhány alapelvét figyelembe veszi, és lehetővé teszi számunkra, hogy ezeket alkalmazzuk a Spring Boot alkalmazásban.
Mint mindig, a példák teljes kódja megtalálható a Github oldalon.