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.