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.


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