Introduksjon til Chaos Monkey
1. Introduksjon
I denne opplæringen skal vi snakke om Chaos Monkey for Spring Boot.
Dette verktøyet hjelper oss introdusere noen av prinsippene for kaosteknikk i vår Spring Boot-webapplikasjoner ved å legge til ventetid i REST-endepunktene, kaste feil eller til og med drepe en app.
2. Oppsett
For å legge til Chaos Monkey i applikasjonen vår, trenger vi en enkelt Maven-avhengighet i prosjektet vårt:
de.codecentric chaos-monkey-spring-boot 2.0.0
3. Konfigurasjon
Når vi har avhengighetsoppsettet i prosjektet vårt, må vi konfigurere og starte kaoset vårt.
Vi kan gjøre dette på et par måter:
- Ved oppstart av programmet, bruker du kaos-ape vårprofil (anbefalt)
- Ved hjelp av chaos.monkey.enabled = sant eiendom
Ved å starte søknaden med kaos-ape vårprofil vi trenger ikke stoppe og starte applikasjonen hvis vi vil aktivere eller deaktivere den mens appen vår kjører:
java -jar din-app.jar --spring.profiles.active = kaos-ape
En annen nyttig egenskap er management.endpoint.chaosmonkey.enabled. Hvis du setter denne egenskapen til sant, blir administrasjonsendepunktet for Chaos Monkey muliggjort:
// localhost: 8080 / chaosmonkey
Fra dette endepunktet kan vi se bibliotekets status. Her er den fullstendige listen over sluttpunkter og beskrivelsen av dem som vil hjelpe med å endre konfigurasjon, aktivere eller deaktivere Chaos Monkey og andre mer detaljerte kontroller.
Ved å bruke alle tilgjengelige egenskaper kan vi ha en mer finkornet kontroll over hva som skjer i vårt genererte kaos.
4. Hvordan fungerer det?
Chaos Monkey består av Watchers and Assaults. A Watcher er en Spring Boot-komponent. Den bruker Spring AOP for å se når en offentlig metode utføres i klasser som er merket med følgende vårkommentarer:
- Komponent
- Kontroller
- RestController
- Service
- Oppbevaringssted
Basert på konfigurasjonen i vår appegenskapsfil, våre offentlige metoder vil enten bli angrepet eller ikke, av ett av følgende:
- Latency Assault - legger til tilfeldig ventetid i forespørselen
- Exception Assault - kaster tilfeldig Runtime Exception
- AppKiller Assault - æ, appen dør
La oss ta en titt på hvordan vi kan konfigurere vår observatør og angrep for et mer kontrollert angrep.
5. Watcher
Som standard er Watcher bare aktivert for våre tjenester. Dette betyr at angrepene våre bare vil bli utført for offentlige metoder i klassene våre som er merket med @Service.
Men vi kan enkelt endre det ved å konfigurere egenskaper:
chaos.monkey.watcher.controller = falsk chaos.monkey.watcher.restController = falsk chaos.monkey.watcher.service = sann chaos.monkey.watcher.repository = falsk chaos.monkey.watcher.component = false
Husk at når applikasjonen startet, vi kan ikke endre seeren dynamisk ved hjelp av Chaos Monkey for Spring Boot management port som vi snakket om tidligere.
6. Overgrep
Overgrep er i utgangspunktet scenarier som vi ønsker å teste i applikasjonen vår. La oss ta hver type angrep og se hva den gjør, og hvordan vi kan konfigurere den.
6.1. Latens Assault
Denne typen angrep gir latens til samtalene våre. På denne måten reagerer applikasjonen tregere, og vi kan overvåke hvordan den oppfører seg når databasen for eksempel reagerer tregere.
Vi kan konfigurere og slå på eller av denne typen angrep ved hjelp av eiendomsfilen til appen vår:
chaos.monkey.assaults.latencyActive = sann chaos.monkey.assaults.latencyRangeStart = 3000 chaos.monkey.assaults.latencyRangeEnd = 15000
En annen måte å konfigurere og slå på og av denne typen angrep er gjennom ledelsesendepunktet til Chaos Monkey.
La oss slå på latensangrepet og legge til et latensområde mellom to og fem sekunder:
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. Unntak overgrep
Dette tester hvor godt søknaden vår kan håndtere unntak. Basert på konfigurasjon vil det kaste et tilfeldig Runtime Unntak en gang aktivert.
Vi kan aktivere det ved hjelp av en krøllanrop som ligner på vårt latensangrep:
curl -X POST // localhost: 8080 / chaosmonkey / assaults \ -H 'Content-Type: application / json' \ -d \ '{"latencyActive": false, "exceptionsActive": true, "killApplicationActive": false}'
6.3. AppKiller Assault
Denne, vel, appen vår vil dø på et tilfeldig tidspunkt. Vi kan aktivere eller deaktivere det med en enkel krøllanrop som de to foregående typer angrep:
curl -X POST // localhost: 8080 / chaosmonkey / assaults \ -H 'Content-Type: application / json' \ -d \ '{"latencyActive": false, "exceptionsActive": false, "killApplicationActive": true}'
7. Konklusjon
I denne artikkelen, vi snakket om Chaos Monkey for Spring Boot. Vi har sett at det tar noen av prinsippene for kaosingeniør og gjør det mulig for oss å bruke dem på en Spring Boot-applikasjon.
Som alltid kan hele koden for eksemplene finnes på Github.