Postavite sigurne granice za self-healing
DovršenoAutomatizirajte poznate radnje oporavka s izričitim ovlastima, provjerom i uvjetima zaustavljanja. Odvojite oporavak tijekom rada od promjene softvera.
Objavljuje TaigaKako pišemo
Provjerite razumijevanjeKontroler je dvaput ponovno pokrenuo radni proces. Red čekanja nastavlja rasti, a baza podataka je nedostupna. Što pravilo treba učiniti?Napravite vježbu
Što ćete naučiti
- Razlikovati self-healing od trajnog ispravka softvera.
- Odrediti ograničeno pravilo oporavka i neovisne provjere uspjeha.
- Prepoznati kada automatizacija mora stati i eskalirati.
Oporavite se od poznatog stanja
Self-healing automatski otkriva definiran kvar i pokušava provesti ovlaštenu radnju oporavka. Primjeri mogu biti ponovno pokretanje neuspjelog procesa ili zamjena instance koja ne radi ispravno. Radnja mora odgovarati kvaru i modelu stanja usluge.
Kubernetes može zamijeniti neuspjele instance radnog opterećenja i uskladiti stanje s deklariranim stanjem. To ne ispravlja pogrešnu logiku aplikacije ni svaki kvar pohrane. Oporavak infrastrukture i ispravnost softvera trebaju različite provjere. Kubernetes self-healing.
Odredite cilj prije mehanizma. Obnova izvoza znači da se rad koji ispunjava uvjete ispravno dovršava. Pokrenut kontejner samo je jedan preduvjet.
Odvojite tri vrste promjena
| Promjena | Primjer | Potrebna odluka |
|---|---|---|
| Oporavak tijekom rada | Zamjena jednog neuspjelog radnog procesa bez stanja | Unaprijed odobreno pravilo oporavka može ovlastiti tu radnju |
| Ispravak softvera | Ispravak curenja memorije koje zaustavlja radni proces | Pregled, testovi, kontrole izdavanja i produkcijska provjera |
| Promjena pravila | Povećanje dopuštene učestalosti ponovnog pokretanja ili opsega pristupa | Izričito odobrenje osobe odgovorne za pravilo |
Agent može predložiti ispravak nakon oporavka. Taj prijedlog nova je promjena softvera. Ne smije naslijediti neograničene ovlasti kontrolera oporavka.
Kontroler također ne smije uređivati vlastite kriterije uspjeha kada provjera ne uspije. Inače sustav može prijaviti poboljšanje bez poboljšanja usluge.
Napišite pravilo oporavka prije uključivanja
Sljedeće je pravilo izmišljeno. Brojevi prikazuju odluke o dizajnu; nisu preporučene standardne postavke.
| Polje pravila | Izmišljeno pravilo za radni proces izvoza |
|---|---|
| Okidač | Nema signala aktivnosti radnog procesa 90 sekundi, a postoje zadaci na čekanju |
| Preduvjeti | Drugi radni proces ispravno radi; provjere ovisnosti prolaze; nema sumnje na kompromitaciju ili pogrešku integriteta |
| Dopuštena radnja | Zamijeniti jedan radni proces trenutačno odobrenim artefaktom |
| Zaštita stanja | Zadaci upotrebljavaju trajnu pohranu i provjeren ključ idempotentnosti |
| Ograničenje | Najviše dvije zamjene u 15 minuta; nikad više od jedne istodobno |
| Razdoblje čekanja | Pričekati pet minuta nakon zamjene prije novog pokušaja |
| Uspjeh | Sintetički zadatak ispravno se dovršava, a zahvaćeni red čekanja počinje se prazniti |
| Zaustavljanje i eskalacija | Bilo koji preduvjet nije ispunjen, ograničenje je dosegnuto ili se uspjeh ne može provjeriti |
Upotrijebite identitet s najmanjim potrebnim ovlastima. Zabilježite verziju pravila, dokaze okidača, radnju, resurs i rezultat. Osigurajte neovisan način isključivanja kontrolera. Odredite odgovornu osobu koja prima eskalaciju.
Testirajte putove kvara i uspješan oporavak
Ponovni pokušaj može ponoviti nuspojavu. Radni proces može spremiti datoteku i stati prije potvrde zadatka. Provjerite idempotentnost prije dopuštanja novog izvršavanja. Pogledajte primjer cloud native kvara.
Ponovni pokušaji mogu dodatno opteretiti već preopterećenu ovisnost. Upotrijebite ograničene pokušaje, vremenska ograničenja i prikladno povećavanje odgode. Izbjegavajte sinkronizirane ponovne pokušaje kroz cijelu skupinu instanci. AWS objašnjava zašto povećavanje odgode i slučajni pomak pomažu smanjiti to pojačavanje. Smjernice za ponovne pokušaje.
Testirajte izmišljeno pravilo u tri slučaja. Jedan zaustavljeni radni proces trebao bi se oporaviti. Nedostupnost baze podataka trebala bi spriječiti ponovljenu zamjenu. Nejasna pogreška integriteta trebala bi zaustaviti automatizaciju i zatražiti odluku o reakciji.
Provjerite i nedostajuću telemetriju. Izostanak signala aktivnosti može značiti kvar radnog procesa ili puta prikupljanja. Kontroler treba dovoljno dokaza za svoju radnju, a ne povjerenje u AI objašnjenje.
Izmjerite pomaže li pravilo
Zabilježite provjerene oporavke, neuspjele pokušaje, eskalacije, udvostručen rad i vrijeme tijekom kojeg su korisnici bili zahvaćeni. Usporedite to s prethodnim načinom rada u sličnim uvjetima.
Zadržite temeljni nedostatak kao inženjerski zadatak. Ponavljano pokretanje procesa iz kojeg curi memorija može smanjiti neposredni učinak dok se curenje nastavlja. Nastavite sa samopoboljšavanjem kako biste povezali opažanje s trajnim ispravkom.
Napravite vježbu
Osmislite pravilo oporavka za izmišljeni radni proces izvoza iz ove lekcije. Odredite okidač, izuzeća, dopuštenu radnju, ograničenje pokušaja, razdoblje čekanja, provjeru uspjeha i osobu odgovornu za eskalaciju. Testirajte ga pri nedostupnosti baze podataka i nepoznatoj pogrešci integriteta podataka.
Preuzmi radni list (Markdown)Uklanjanje ove oznake briše sav napredak spremljen u ovom pregledniku.
Napredak ostaje u ovom pregledniku. Bez računa i praćenja.
Izvori i dodatno čitanje
- Kubernetes: Self-Healing ↗
- AWS Builders’ Library: Timeouts, retries, and backoff with jitter ↗
- Google SRE: Automation at Google ↗