Otkrijte kako možete održati svoju produkciju pouzdanom uz pomoć alata za inženjering haosa.
Inženjering haosa predstavlja disciplinu u kojoj se eksperimentiše na vašem sistemu ili aplikaciji kako bi se otkrili njegovi nedostaci i ograničenja kapaciteta. To su situacije koje niste predvideli prilikom kreiranja. Stoga, namerno izazivate određene kvarove u sistemu kako bi se manifestovale njegove slabosti, te kako biste ih ispravili i učinili sistem i aplikaciju otpornijim.
Brojne poznate organizacije, poput Netflixa, LinkedIna i Facebooka, primenjuju inženjering haosa kako bi bolje razumele svoju mikroservisnu arhitekturu i distribuirane sisteme. Ovo pomaže u identifikovanju potencijalnih problema pre nego što se korisnici žale, te u preduzimanju neophodnih mera za njihovo rešavanje. Na taj način, ove organizacije mogu opsluživati milione korisnika, poboljšati svoju produktivnost i uštedeti značajne finansijske resurse 🤑.
Prednosti inženjeringa haosa:
- Smanjenje finansijskih gubitaka identifikovanjem kritičnih problema.
- Redukcija kvarova sistema ili aplikacije.
- Poboljšano korisničko iskustvo uz manje prekida i visoku dostupnost usluge.
- Bolje razumevanje sistema i sticanje samopouzdanja.
Koliko ste sigurni u pouzdanost svoje produkcije? Da li je zaista otporna na katastrofe?
Saznajte više uz pomoć sledećih popularnih alata za testiranje haosa.
Chaos Mesh
Chaos Mesh je rešenje za upravljanje haosom koje ubacuje greške u svaki sloj Kubernetes sistema. To obuhvata podove, mrežu, sistemski I/O i kernel. Chaos Mesh može automatski da prekine Kubernetes podove i simulira kašnjenja. Može poremetiti međusobnu komunikaciju i simulirati greške čitanja/pisanja. Omogućava zakazivanje eksperimenata i definisanje njihovog obima. Ovi eksperimenti su specificirani pomoću YAML datoteka.
Chaos Mesh nudi kontrolnu tablu za pregled analitike eksperimenata. Radi na Kubernetesu i podržava većinu platformi u oblaku. Predstavlja open-source rešenje i nedavno je prihvaćen kao CNCF sandbox projekat. Primenom principa inženjeringa haosa, možete uključiti Chaos Mesh u svoj DevOps radni proces kako biste kreirali otporne aplikacije.
Karakteristike Chaos Mesha:
- Laka primena na Kubernetes klasterima bez izmena u logici aplikacije.
- Za implementaciju nisu potrebne jedinstvene zavisnosti.
- Definiše objekte haosa korišćenjem CustomResourceDefinitions (CRD).
- Obezbeđuje kontrolnu tablu za praćenje svih eksperimenata.
Chaos Toolkit je jednostavan open-source alat za automatizaciju eksperimenata inženjeringa haosa.
Chaos Toolkit se integriše sa vašim sistemom koristeći skup drajvera ili dodataka koji podržavaju AWS, Google Cloud, Slack, Prometheus, itd.
Karakteristike Chaos Toolkita:
- Obezbeđuje deklarativni Open API za kreiranje eksperimenata haosa nezavisno od dobavljača ili tehnologije.
- Lako se integriše u CI/CD pipeline za automatizaciju.
- Nudi komercijalnu i korporativnu podršku kroz ChaosIQ.
Chaoskube
Kao što ime sugeriše, ovaj alat je namenjen Kubernetes okruženju.
Chaoskube je open-source alat za haos koji periodično prekida nasumične podove u Kubernetes klasteru. Pomaže vam da shvatite kako će vaš sistem reagovati kada komponenta otkaže. Po defaultu, prekida pod u bilo kom namespace-u svakih 10 minuta. Možete filtrirati ciljane podove u Chaoskube-u koristeći namespaces, label-e, anotacije, itd. Instalacija je jednostavna.
Chaos Monkey
Chaos Monkey je alat koji se koristi za proveru otpornosti sistema u oblaku tako što namerno generiše greške kako bi se razumela njihova reakcija. Kreirao ga je Netflix za testiranje otpornosti i sposobnosti oporavka svoje AWS infrastrukture. Nazvan je Chaos Monkey jer stvara pustoš kao divlji, naoružani majmun, simulirajući različite vrste kvarova.
Takođe, Chaos Monkey je inicirao novu inženjersku praksu – Inženjering haosa. Osnovni princip je da je bolje često doživljavati manje kvarove nego iznenadni veliki kolaps.
Karakteristike Chaos Monkey-a:
- Pomaže vam da se pripremite za nepredviđene kvarove instanci.
- Podstiče redundanciju za neočekivane kvarove.
- Koristi Spinnaker za omogućavanje kompatibilnosti sa više cloud platformi.
- Omogućava podešavanje rasporeda za simuliranje kvarova.
- Integrisan sa govendor za dodavanje novih zavisnosti.
Simmy
Simmy je alat za ubrizgavanje grešaka koji se integriše sa Polly projektom otpornosti za .NET. Omogućava vam da kreirate politike ubrizgavanja haosa kroz Polly, gde izvršavate svoj kod. Nudi različite politike, poput politike izuzetaka za ubacivanje izuzetaka u sistem, politike ponašanja za ubacivanje novog ponašanja, itd. Ove politike su dizajnirane da unesu ponašanje na slučajan način.
Simmy karakteristike:
- Obezbeđuje politike majmuna ili politike haosa za unošenje haosa.
- Omogućava jednostavno testiranje grešaka u zavisnostima.
- Pomaže brzom povratku na funkcionalan model i kontroli štete.
- Spreman je za produkciju.
- Takođe može definisati greške na osnovu spoljnih faktora (npr. greške usled globalne konfiguracije).
Pystol
Pystol je alat za ubrizgavanje grešaka u okruženja koja su izvorno u oblaku. Prati događaje u ETCD-u putem Kubernetes operatora. Kada se izvrši akcija ubrizgavanja greške, operatori kreiraju podove i pokreću Ansible kolekcije. Na taj način, programeri ne moraju pisati sopstvene akcije za njihovo izvršenje.
Pystol nudi gotove akcije za testiranje sistema. Ipak, programer može kreirati novu akciju koristeći GoLang i Python.
Pruža kontrolnu tablu za kontinuiranu integraciju koja daje pregled svih operacija. Možete pokrenuti Pystol lokalno ili ga primeniti u kontejneru koristeći njegov docker image. Pystol nudi dva interfejsa: web korisnički interfejs i CLI. Web korisnički interfejs je generalno bolja opcija.
Muxy
Muxy je proxy za testiranje otpornosti i šablona tolerancije na greške distribuiranog sistema u realnim uslovima. Može da menja nivo transporta (nivo 4), nivo TCP sesije (nivo 5) i nivo HTTP protokola (nivo 7).
Muxy karakteristike:
- Modularna arhitektura i laka proširivost.
- Ima zvanični docker kontejner.
- Jednostavna instalacija bez zavisnosti.
- Idealan za kontinuirano testiranje otpornosti.
- Simulira probleme mrežne povezanosti za distribuirane sisteme i mobilne uređaje.
Pumba
Pumba je alat komandne linije koji izvodi testiranje haosa za docker kontejnere. Sa Pumbom, namerno rušite docker kontejnere aplikacije da vidite kako sistem reaguje. Takođe, možete izvesti stres testiranje resursa kontejnera kao što su CPU, memorija, sistem datoteka, I/O, itd.
Pumbu možete pokrenuti i na Kubernetes klasteru. Treba koristiti DaemonSets za primenu Pumba na Kubernetes čvorovima. Moguće je koristiti više Pumba kontejnera za pokretanje više Pumba komandi u istom DaemonSet-u.
ChaosBlade
ChaosBlade je open-source alat za uvođenje eksperimenata u sisteme, koji razvija Alibaba. Testira sve propuste sa kojima se Alibaba suočila tokom prethodne decenije i primenjuje najbolje prakse za njihovo izbegavanje. Prati principe inženjeringa haosa za proveru tolerancije na greške distribuiranih sistema.
ChaosBlade karakteristike:
- Obezbeđuje eksperimentalne scenarije za više resursa kao što su CPU, mreža, memorija, disk itd.
- Pruža eksperimentalne scenarije za čvorove, mreže i podove na Kubernetes platformi.
- Obezbeđuje jednostavne CLI komande za izvođenje eksperimenata.
Litmus
Litmus sledi principe inženjeringa haosa zasnovanog na oblaku. Misija ovog alata je da obezbedi kompletan okvir za pronalaženje slabosti u Kubernetes sistemima i aplikacijama koje se izvršavaju na Kubernetesu.
Ima operatora za haos i CRD-ove (CustomResourceDefinitions), omogućavajući plug-and-play mogućnost. Princip je da stavite svoju logiku haosa u docker image, ubacite ga u Litmus framework i orkestrirate pomoću CRD-ova.
Litmus karakteristike:
- Pomaže inženjerima i programerima za pouzdanost sajta da pronađu slabosti u Kubernetes sistemu.
- Obezbeđuje generičke eksperimente spremne za upotrebu.
- Pruža Chaos API za upravljanje procesom haosa.
- Litmus SDK podržava Go, Python i Ansible za kreiranje sopstvenih eksperimenata.
Gremlin
Gremlin pomaže inženjerima da naprave otporniji softver. Pruža platformu za sigurno, bezbedno i jednostavno izvođenje eksperimenata inženjeringa haosa.
Možete ciljano ubaciti grešku u hostove ili kontejnere bez obzira na to gde se nalaze – u javnom oblaku ili vašem data centru.
Gremlin karakteristike:
- Instalira laganog agenta na vaše hostove ili kontejnere za ubacivanje grešaka.
- Pruža preko 10 različitih načina napada na infrastrukturu.
- State gremlini vam omogućavaju da manipulišete sistemskim vremenom, gasite ili ponovo pokrećete hostove i prekidate procese.
- Network gremlini mogu da uvedu kašnjenje, gubitak paketa ili da odbace saobraćaj.
- Napadi Gremlin Alpha biblioteke mogu se konfigurisati, pokretati i zaustavljati preko web aplikacije, API-ja ili CLI-a.
- Omogućava precizno ciljanje željenog dometa napada.
- Omogućava zaustavljanje svih napada i vraćanje sistema u stabilno stanje.
Steadybit
Steadybit ima za cilj proaktivno smanjenje vremena zastoja i pružanje uvida u sistemske probleme. Ovaj alat možete pokrenuti lokalno na svojoj infrastrukturi ili u oblaku kao uslugu (SaaS).
Za korišćenje Steadybit-a, definišete situaciju, simulirate eksperimente, izvršavate ih u produkciji i automatizujete sve eksperimente. Pokreće inteligentne agente na vašem sistemu kako bi otkrio potencijalne probleme i slabosti. Sa lakoćom se integriše sa više sistema.
Zaključak
Slobodno primenite principe inženjeringa haosa i testirajte svoju produkciju pomoću navedenih alata. Ovi alati će vam pomoći da otkrijete skrivene slabosti u svom sistemu i učinite ga otpornijim.