Seriøst med sky? Følg Netflix 'ledelse og kom inn i kaos engineering

Uttrykket 'bygget for å mislykkes' inspirerer ikke til tillit, noe som tyder på et produkt øyeblikk unna imploding.

Men firmaer som er vert for distribuerte systemer på toppen av skyinfrastruktur, bør forberede seg på det verre.

Det er argumentet fra nettvideogiganten Netflix, som er avhengig av Amazon Web Services for å streame filmer og TV-serier til mer enn 50 millioner hjem over hele verden.

Bilde: Neflix

For å herde seg mot katastrofal svikt, benytter Netflix sin Simian Army, programvare som bevisst prøver å ødelegge systemene sine. Simian Army angriper Netflix-infrastruktur på mange fronter - Chaos Monkey deaktiverer produksjons tilfeller tilfeldig, Latency Monkey induserer forsinkelser i klient-serverkommunikasjon, og den store gutten, Chaos Gorilla, simulerer strømbruddet i en hel Amazonas tilgjengelighetssone.

Netflix bruker disse virtuelle vandalene for å teste om de automatiserte systemene kan takle virkelighetssvikt uten å påvirke kundene. Firmaet likner det med å pirke et hull i bildekkene dine en gang i uken for å se om du klarer å skifte ut dem.

Men hvorfor krever bruk av skyinfrastruktur en slik tilnærming? I følge Netflix er det mangelen på kontroll over den underliggende maskinvaren, manglende evne til å konfigurere den til å prøve å sikre 100 prosent oppetid.

Netflix har hatt flere muligheter til å se hvor robust dette forsettlige bruddet har forlatt systemene sine - fra strømbruddet AWS Elastic Load Balancer i 2012 til AWS som nylig har startet på nytt maskiner som kjører en i 10 EC2-tilfeller.

Denne omstarten ga Netflix en sjanse til å finne ut om databasene deres kunne fungere på samme feiltolerante måte som de andre systemene.

"Databaser har lenge vært de bortskjemte og bortskjemte prinsene i applikasjonsverdenen, " sa Netflix ingeniørsjef for skodatabaserteknikk Christos Kalantzis og ingeniørsjef for kaosingeniør Bruce Wong i et blogginnlegg.

"De fikk den beste maskinvaren, store mengder personlig oppmerksomhet, og ingen ville noen gang drømme om med vilje å slå sammen med dem. I en verden av demokratiserte offentlige skyer er dette ikke lenger mulig. Knutepunktfeil er ikke bare sannsynlige, forventes de. Dette krever databaseteknologi som tåler feil og fortsetter å utføre. "

Netflix bruker Apache Cassandra, en åpen kildekode distribuert NoSQL-database. Distribuerte systemer tilbyr en avveining mellom konsistensen av data som holdes på hver node i systemet, tilgjengeligheten av systemet og partisjonstoleranse - muligheten for et system til å fortsette å fungere etter at et delsett blir utilgjengelig.

"Ved å handle bort C (Consistency), har vi tatt en bevisst beslutning om å designe applikasjonene våre med en eventuell konsistens i tankene, " sa Kalantzis og Wong.

"Vår forventning er at Cassandra skulle leve opp til sin side av handelen og gi sterk tilgjengelighet og partisjonstoleranse."

Så hvordan hadde det bra med Cassandra under omstart av EC2? I følge Kalantzis og Wong ble 218 startet ut av mer enn 2700 produksjons Cassandra-noder. Av disse nodene var 22 på maskinvare som ikke startet på nytt.

Hvordan Netflix håndterer Cassandra-nodefeil. Bilde: Netflix

Netflix automatiseringsprogramvare oppdaget de mislykkede noder og erstattet dem, "med minimal menneskelig intervensjon". Totalt sett opplevde Netflix ingen driftsstans i løpet av helgen etter omstart, sa de.

Å bygge den motstandskraften i databasesjiktet tok mye kaosprøving av systemer av Neflix-ingeniører, ifølge Kalantzis og Wong, og firmaet måtte avsløre arbeidet med sine Cassandra-klynger, bygge pålitelig overvåking for å spore disse arbeidene for feil og konstruere programvare for å opprette og sette opp erstatningsnoder automatisk.

"Gjentagende og regelmessig utøvelse av fiasko, selv i utholdenhetslaget, bør være en del av ethvert selskaps resiliensplanlegging. Hvis det ikke var for Cassandras deltagelse i Chaos Monkey, ville denne historien endt mye annerledes."

AWS har nylig anbefalt bedrifter som bruker infrastrukturen, tester deres motstandskraft ved å bruke Chaos Monkey for å indusere feil. Her er noen av Netflix tips for det den kaller kaos engineering.

Sett opp dydige kaosykluser

Etter forstyrrelse av infrastrukturen har Netflix 'skyldløse etterlidelser' for å finne ut hvordan man kan forhindre en gjentakelse.

Ved siden av å utvikle spenningsplaster og arbeide for å forhindre gjentakelse, bygger det nye kaosverktøy for å teste resiliens regelmessig og systematisk, for å oppdage regresjoner eller nye forhold.

Bruk pålitelige designmønstre

Bruk designmønstre som forbedrer påliteligheten i et distribuert miljø som er vert for løs-koblede tjenester.

Netflix berømmer Hystrix som "et fantastisk eksempel på et pålitelig designmønster som bidrar til å skape konsistens i vårt økosystem for mikrotjenester".

Forutse usettede feil

Netflix jobber for å utvikle dyp forståelse av distribuerte systemer og anvende denne forståelsen for å forutse feil den ennå ikke har opplevd.

Hvis du gjør det, kan den "forutse feilmodus, bestemme måter å injisere disse forholdene på en kontrollert måte og utvikle våre pålitelighetsdesignmønstre".

© Copyright 2021 | pepebotifarra.com