Uvod u Majmun kaosa

1. Uvod

U ovom uputstvu govorit ćemo o Chaos Monkeyu za Spring Boot.

Ovaj nam alat pomaže uvedite neke od principa inženjeringa kaosa u naše web aplikacije Spring Boot dodavanjem kašnjenja našim REST krajnjim točkama, bacanjem pogrešaka ili čak ubijanjem aplikacije.

2. Postavljanje

Da bismo dodali Chaos Monkey u našu aplikaciju, potrebna nam je jedna ovisnost Mavena u našem projektu:

 de.codecentric chaos-monkey-spring-boot 2.0.0 

3. Konfiguracija

Nakon što postavimo ovisnost u naš projekt, moramo konfigurirati i započeti svoj kaos.

To možemo učiniti na nekoliko načina:

  • Prilikom pokretanja aplikacije, pomoću kaos-majmun opružni profil (preporučeno)
  • Koristeći kaos.monkey.enabled = true imovine

Pokretanjem aplikacije sa kaos-majmun opružni profil ne moramo zaustaviti i pokrenuti aplikaciju ako je želimo omogućiti ili onemogućiti dok naša aplikacija radi:

java -jar your-app.jar --spring.profiles.active = kaos-majmun

Još jedno korisno svojstvo je upravljanje.endpoint.chaosmonkey.omogućeno. Postavljanje ovog svojstva na true omogućit će krajnju točku upravljanja za našeg kaos majmuna:

// localhost: 8080 / chaosmonkey

S ove krajnje točke možemo vidjeti status naše knjižnice. Ovdje je potpuni popis krajnjih točaka i njihov opis koji će pomoći u promjeni konfiguracije, omogućiti ili onemogućiti Chaos Monkey i druge detaljnije kontrole.

Koristeći sva dostupna svojstva, možemo imati precizniju kontrolu nad onim što se događa u našem generiranom kaosu.

4. Kako to djeluje

Majmun kaosa sastoji se od promatrača i napada. Watcher je komponenta Spring Boot. Koristi Spring AOP da vidi kada se izvršava javna metoda u klasama označenim sljedećim proljetnim bilješkama:

  • Komponenta
  • Kontroler
  • RestController
  • Servis
  • Spremište

Na temelju konfiguracije u našoj datoteci svojstava aplikacije, naše će javne metode biti napadnute ili ne, jednim od sljedećih:

  • Latency Assault - dodaje slučajnu latenciju zahtjevu
  • Exception Assault - baca slučajni Runtime Exception
  • AppKiller Assault - hm, aplikacija umire

Pogledajmo kako možemo konfigurirati svog promatrača i napade za kontroliraniji napad.

5. Promatrač

Prema zadanim postavkama, Watcher je omogućen samo za našu usluge. To znači da će se naši napadi izvršavati samo za javne metode u našim razredima označene s @Servis.

Ali to lako možemo promijeniti konfiguriranjem svojstava:

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

Imajte na umu da nakon pokretanja aplikacije, ne možemo dinamički promijeniti promatrača pomoću luke za upravljanje Chaos Monkey for Spring Boot o kojem smo ranije razgovarali.

6. Napadi

Napadi su u osnovi scenariji koje želimo testirati u našoj aplikaciji. Uzmimo svaku vrstu napada i vidimo što čini i kako ga možemo konfigurirati.

6.1. Latentni napad

Ova vrsta napada dodaje latenciju našim pozivima. Na taj način naša aplikacija reagira sporije i možemo pratiti kako se ponaša kad, na primjer, baza podataka reagira sporije.

Ovu vrstu napada možemo konfigurirati i uključiti pomoću datoteke svojstava naše aplikacije:

chaos.monkey.assaults.latencyActive = true chaos.monkey.assaults.latencyRangeStart = 3000 chaos.monkey.assaults.latencyRangeEnd = 15000

Drugi način konfiguriranja i uključivanja i isključivanja ove vrste napada je upravljačka krajnja točka Chaos Monkey.

Uključimo napad latencije i dodajte raspon latencije između dvije i pet sekundi:

curl -X POST // localhost: 8080 / chaosmonkey / assaults \ -H 'Content-Type: application / json' \ -d \ '{"latencyRangeStart": 2000, "latencyRangeEnd": 5000, "latencyActive": true, " exceptionsActive ": false," killApplicationActive ": false} '

6.2. Iznimka napad

Ovim se ispituje koliko dobro naša aplikacija može podnijeti iznimke. Na temelju konfiguracije izbacit će slučajni Runtime Exception jednom omogućeno.

Možemo ga omogućiti korištenjem curl poziva sličnog našem napadu na kašnjenje:

curl -X POST // localhost: 8080 / chaosmonkey / assaults \ -H 'Content-Type: application / json' \ -d \ '{"latencyActive": false, "exceptionsActive": true, "killApplicationActive": false}'

6.3. AppKiller Assault

Ovaj, pa, naša aplikacija će umrijeti u nekom slučajnom trenutku. Možemo ga omogućiti ili onemogućiti jednostavnim curl pozivom kao prethodne dvije vrste napada:

curl -X POST // localhost: 8080 / chaosmonkey / assaults \ -H 'Content-Type: application / json' \ -d \ '{"latencyActive": false, "exceptionsActive": false, "killApplicationActive": true}'

7. Zaključak

U ovom članku, razgovarali smo o Chaos Monkeyu za Spring Boot. Vidjeli smo da su potrebni neki od principa inženjeringa kaosa i omogućuje nam da ih primijenimo na aplikaciju Spring Boot.

Kao i uvijek, puni kod primjera nalazi se na Githubu.


$config[zx-auto] not found$config[zx-overlay] not found