Introduktion til Chaos Monkey
1. Introduktion
I denne vejledning skal vi tale om Chaos Monkey for Spring Boot.
Dette værktøj hjælper os introducere nogle af principperne for kaoteknik i vores Spring Boot-webapplikationer ved at tilføje latens til vores REST-slutpunkter, kaste fejl eller endda dræbe en app.
2. Opsætning
For at tilføje Chaos Monkey til vores applikation har vi brug for en enkelt Maven-afhængighed i vores projekt:
de.codecentrisk kaos-abe-spring-boot 2.0.0
3. Konfiguration
Når vi har konfigureret afhængighed i vores projekt, skal vi konfigurere og starte vores kaos.
Vi kan gøre dette på et par måder:
- Ved opstart af applikationen ved hjælp af kaos-abe fjederprofil (anbefales)
- Ved brug af chaos.monkey.enabled = sand ejendom
Ved at starte applikationen med kaos-abe fjederprofil vi behøver ikke stoppe og starte applikationen, hvis vi vil aktivere eller deaktivere den mens vores app kører:
java -jar din-app.jar --spring.profiles.active = kaos-abe
En anden nyttig egenskab er management.endpoint.chaosmonkey.enabled. Hvis denne egenskab sættes til sand, aktiveres ledelsesendepunktet for vores Chaos Monkey:
// localhost: 8080 / chaosmonkey
Fra dette slutpunkt kan vi se vores biblioteks status. Her er den fulde liste over slutpunkter og deres beskrivelse, der hjælper med at ændre konfiguration, aktivere eller deaktivere Chaos Monkey og andre mere detaljerede kontroller.
Ved at bruge alle de tilgængelige egenskaber kan vi have en mere finkornet kontrol over, hvad der sker i vores genererede kaos.
4. Hvordan fungerer det?
Chaos Monkey består af Watchers og Assaults. En Watcher er en Spring Boot-komponent. Det gør brug af Spring AOP for at se, hvornår en offentlig metode udføres i klasser, der er kommenteret med følgende Spring-kommentarer:
- Komponent
- Controller
- RestController
- Service
- Datalager
Baseret på konfigurationen i vores appegenskabsfil, vores offentlige metoder vil enten blive angrebet eller ejaf et af følgende:
- Latency Assault - tilføjer tilfældig latenstid til anmodningen
- Undtagelsesangreb - kaster tilfældig Runtime-undtagelse
- AppKiller Assault - um, appen dør
Lad os se på, hvordan vi kan konfigurere vores seer og angreb til et mere kontrolleret angreb.
5. Watcher
Som standard er Watcher kun aktiveret for vores tjenester. Dette betyder, at vores overfald kun udføres for offentlige metoder i vores klasser, der er kommenteret med @Service.
Men vi kan nemt ændre det ved at konfigurere egenskaber:
chaos.monkey.watcher.controller = falsk chaos.monkey.watcher.restController = falsk chaos.monkey.watcher.service = sand chaos.monkey.watcher.repository = falsk chaos.monkey.watcher.component = falsk
Husk, at når applikationen startede, vi kan ikke dynamisk ændre seeren ved hjælp af Chaos Monkey for Spring Boot-styringsport som vi talte om tidligere.
6. Overgreb
Overfald er grundlæggende scenarier, som vi vil teste i vores applikation. Lad os tage hver type angreb og se, hvad den gør, og hvordan vi kan konfigurere den.
6.1. Latency Assault
Denne type angreb tilføjer latens til vores opkald. På denne måde reagerer vores applikation langsommere, og vi kan overvåge, hvordan den opfører sig, når databasen f.eks. Reagerer langsommere.
Vi kan konfigurere og aktivere eller angribe denne type angreb ved hjælp af egenskabsfilen i vores app:
chaos.monkey.assaults.latencyActive = sand chaos.monkey.assaults.latencyRangeStart = 3000 chaos.monkey.assaults.latencyRangeEnd = 15000
En anden måde at konfigurere og tænde og slukke for denne type angreb er gennem ledelsesendepunktet for Chaos Monkey.
Lad os tænde latensangrebet og tilføje et latenstidsinterval mellem to og fem sekunder:
krølle -X POST // localhost: 8080 / chaosmonkey / assaults \ -H 'Content-Type: application / json' \ -d \ '{"latencyRangeStart": 2000, "latencyRangeEnd": 5000, "latencyActive": true, " exceptionsActive ": false," killApplicationActive ": false} '
6.2. Undtagelsesangreb
Dette tester, hvor godt vores ansøgning kan håndtere undtagelser. Baseret på konfiguration kaster det en tilfældig Runtime-undtagelse en gang aktiveret.
Vi kan aktivere det ved hjælp af et krølleopkald svarende til vores latensangreb:
curl -X POST // localhost: 8080 / chaosmonkey / assaults \ -H 'Content-Type: application / json' \ -d \ '{"latencyActive": false, "exceptionsActive": true, "killApplicationActive": false}'
6.3. AppKiller-overfald
Denne, ja, vores app vil dø på et tilfældigt tidspunkt. Vi kan aktivere eller deaktivere det med et simpelt krølleopkald som de to foregående typer angreb:
curl -X POST // localhost: 8080 / chaosmonkey / assaults \ -H 'Content-Type: application / json' \ -d \ '{"latencyActive": false, "exceptionsActive": false, "killApplicationActive": true}'
7. Konklusion
I denne artikel vi talte om Chaos Monkey for Spring Boot. Vi har set, at det kræver nogle af principperne for kaoteknik og giver os mulighed for at anvende dem på en Spring Boot-applikation.
Som altid kan den fulde kode af eksemplerne findes på Github.