Χρησιμοποιήστε τα εργαλεία μηχανικής του Chaos για να ελέγξετε την αξιοπιστία της παραγωγής

Ας μάθουμε πώς μπορείτε να διατηρήσετε την παραγωγή σας αξιόπιστη με τη βοήθεια των εργαλείων Chaos Engineering.

Η μηχανική χάους είναι ένας κλάδος όπου πειραματίζεστε στο σύστημά σας ή στην εφαρμογή σας για να αποκαλύψετε τις αδυναμίες και την αστοχία χωρητικότητάς του. Αυτά είναι κάτι που δεν πιστεύατε ότι θα μπορούσε να συμβεί κατά τη δημιουργία του. Έτσι, θα προκαλούσατε σκόπιμα κάποιες αστοχίες στο σύστημά σας για να εμφανίσετε τις αδυναμίες του για να κάνετε τις επιδιορθώσεις και να κάνετε το σύστημά σας και την εφαρμογή σας πιο ανθεκτικά.

Πολλοί δημοφιλείς οργανισμοί όπως το Netflix, το LinkedIn και το Facebook εκτελούν μηχανική χάους για να κατανοήσουν καλύτερα την αρχιτεκτονική μικροϋπηρεσιών και τα κατανεμημένα συστήματα τους. Βοηθά στην εύρεση νέων προβλημάτων νωρίτερα από τα πραγματικά παράπονα χρηστών και στη λήψη των απαραίτητων μέτρων για τη διόρθωσή τους. Με αυτόν τον τρόπο αυτοί οι οργανισμοί μπορούν να εξυπηρετήσουν εκατομμύρια χρήστες, να αυξήσουν την παραγωγικότητά τους και να εξοικονομήσουν εκατομμύρια δολάρια 🤑.

Πλεονεκτήματα του Chaos Engineering:

  • Ελέγξτε τις απώλειες στα έσοδα βρίσκοντας κρίσιμα ζητήματα
  • Μείωση αποτυχίας συστήματος ή εφαρμογής
  • Καλύτερη εμπειρία χρήστη με λιγότερες διακοπές και υψηλή διαθεσιμότητα υπηρεσιών
  • Σας βοηθά να μάθετε για το σύστημα και να αποκτήσετε αυτοπεποίθηση.

Πόσο σίγουροι είστε για την αξιοπιστία της παραγωγής σας; Είναι πραγματικά ανθεκτικό στην καταστροφή;

Ας μάθουμε με τη βοήθεια των παρακάτω δημοφιλών εργαλείων δοκιμών χάους.

Chaos Mesh

Chaos Mesh είναι μια λύση διαχείρισης μηχανικής χάους που εισάγει σφάλματα σε κάθε επίπεδο ενός συστήματος Kubernetes. Αυτό περιλαμβάνει τα pods, το δίκτυο, το σύστημα I/O και τον πυρήνα. Το Chaos Mesh μπορεί να σκοτώσει αυτόματα τα pods Kubernetes και να προσομοιώσει λανθάνοντες χρόνους. Μπορεί να διακόψει την επικοινωνία pod-to-pod και να προσομοιώσει σφάλματα ανάγνωσης/εγγραφής. Μπορεί να προγραμματίσει κανόνες για τα πειράματα και να καθορίσει το εύρος τους. Αυτά τα πειράματα καθορίζονται χρησιμοποιώντας αρχεία YAML.

Το Chaos Mesh διαθέτει έναν πίνακα εργαλείων για την προβολή αναλυτικών στοιχείων σε πειράματα. Λειτουργεί πάνω από το Kubernetes και υποστηρίζει την πλειοψηφία της πλατφόρμας cloud. Είναι ανοιχτού κώδικα και έγινε πρόσφατα αποδεκτό ως έργο CNCF sandbox. Χρησιμοποιώντας τις αρχές της μηχανικής χάους, μπορείτε να προσθέσετε το Chaos Mesh στη ροή εργασίας DevOps για να δημιουργήσετε ανθεκτικές εφαρμογές.

Χαρακτηριστικά του Chaos Engineering:

  • Αναπτύσσεται εύκολα σε συμπλέγματα Kubernetes χωρίς καμία τροποποίηση στη λογική ανάπτυξης
  • Δεν απαιτούνται μοναδικές εξαρτήσεις για την ανάπτυξη
  • Καθορίζει αντικείμενα χάους χρησιμοποιώντας CustomResourceDefinitions (CRD)
  • Παρέχει έναν πίνακα ελέγχου για την παρακολούθηση όλων των πειραμάτων
  Πώς να τραβήξετε καλές φωτογραφίες στη βροχή (και σε άλλες υγρές καταστάσεις)

Chaos ToolKit είναι ένα ανοιχτού κώδικα και απλό εργαλείο για το Chaos Engineering Experiment Automation.

Ενσωματώνετε το Chaos ToolKit στο σύστημά σας χρησιμοποιώντας ένα σύνολο προγραμμάτων οδήγησης ή προσθηκών που υποστηρίζει AWS, Google Cloud, Slack, Prometheus κ.λπ.

Χαρακτηριστικά του Chaos ToolKit:

  • Παρέχει δηλωτικό Open API για τη δημιουργία πειραμάτων χάους ανεξάρτητα από έναν προμηθευτή ή τεχνολογία
  • Μπορεί εύκολα να ενσωματωθεί σε αγωγούς CICD για αυτοματισμό
  • Παρέχει εμπορική και επιχειρηματική υποστήριξη επίσης μέσω ChaosIQ

ChaosKube

Όπως μπορείτε να μαντέψετε από το όνομα, είναι για Kubernetes.

Chaoskube είναι ένα εργαλείο χάους ανοιχτού κώδικα που σκοτώνει τυχαίες ομάδες περιοδικά στο σύμπλεγμα Kubernetes. Σας βοηθά να κατανοήσετε πώς θα αντιδράσει το σύστημά σας όταν το pod αποτύχει. Από προεπιλογή, σκοτώνει ένα pod σε οποιοδήποτε χώρο ονομάτων κάθε 10 λεπτά. Μπορείτε να φιλτράρετε τις ομάδες προορισμού στο Chaoskube χρησιμοποιώντας χώρους ονομάτων, ετικέτες, σχολιασμούς κ.λπ. Μπορεί να εγκατασταθεί εύκολα χρησιμοποιώντας το Chaoskube.

Chaos Monkey

Chaos Monkey είναι ένα εργαλείο που χρησιμοποιείται για τον έλεγχο της ανθεκτικότητας των συστημάτων cloud, δημιουργώντας σκόπιμα αστοχίες ώστε αυτά τα συστήματα να κατανοήσουν την αντίδρασή τους. Το Netflix το δημιούργησε για να δοκιμάσει την ανθεκτικότητα και την ανακτησιμότητα της υποδομής AWS. Ονομάστηκε Chaos Monkey γιατί δημιουργεί την καταστροφή σαν άγριος και οπλισμένος πίθηκος για να δοκιμάσει τις αποτυχίες.

Επίσης, ήταν το Chaos Monkey, που γέννησε τη νέα μηχανική πρακτική Chaos Engineering. Δημιουργήθηκε με βάση την αρχή ότι είναι καλύτερο να αποτυγχάνετε επανειλημμένα για να αποφύγετε ξαφνικά οποιαδήποτε σημαντική αποτυχία.

Χαρακτηριστικά του Chaos Monkey:

  • Σας βοηθά να προετοιμαστείτε για αποτυχίες τυχαίων περιπτώσεων.
  • Ενθαρρύνει τον πλεονασμό για απροσδόκητες αποτυχίες
  • Χρησιμοποιεί το Spinnaker για να ενεργοποιήσει τη συμβατότητα cross-cloud
  • Παρέχει διαμορφώσιμο χρονοδιάγραμμα για την προσομοίωση αστοχιών
  • Ενσωματωμένο με κτηνοτρόφος για να προσθέσετε τυχόν νέες εξαρτήσεις στο χάος μαϊμού

Σίμυ

Σίμυ είναι ένα εργαλείο χάους με έγχυση σφαλμάτων που ενσωματώνεται με το έργο ανθεκτικότητας Polly για .NET. Σας επιτρέπει να δημιουργήσετε πολιτικές χάους-ένεση μέσω του Polly, όπου εκτελείτε τους κωδικούς σας. Προσφέρει διαφορετικές πολιτικές, όπως πολιτική εξαιρέσεων για την εισαγωγή εξαιρέσεων στο σύστημα, πολιτική συμπεριφοράς για εισαγωγή οποιασδήποτε νέας συμπεριφοράς κ.λπ. Αυτές οι πολιτικές έχουν σχεδιαστεί για να εισάγουν τη συμπεριφορά τυχαία.

Χαρακτηριστικά Simmy:

  • Παρέχει πολιτικές μαϊμού ή πολιτικές χάους για την εισαγωγή χάους
  • Εύκολο να δοκιμάσετε τυχόν αστοχίες εξάρτησης
  • Βοηθά στην γρήγορη επαναφορά στο μοντέλο εργασίας και ελέγχει την ακτίνα έκρηξης.
  • Είναι έτοιμο για παραγωγή.
  • Μπορεί επίσης να ορίσει αστοχίες με βάση εξωτερικούς παράγοντες (για παράδειγμα, αστοχίες λόγω καθολικής διαμόρφωσης)
  Πρέπει να χρησιμοποιείτε HDMI, DisplayPort ή USB-C για οθόνη 4K;

Pystol

Pystol είναι ένα εργαλείο που χρησιμοποιείται για την έγχυση ελαττωματικών εγχύσεων σε περιβάλλοντα που ανήκουν στο cloud. Παρακολουθεί γεγονότα στο ETCD μέσω των χειριστών Kubernetes. Όταν εκτελείται μια ενέργεια έγχυσης σφάλματος, οι χειριστές δημιουργούν τα pods και εκτελούν ορισμένες συλλογές Ansible. Έτσι, οι προγραμματιστές δεν χρειάζεται να γράφουν τις δικές τους ενέργειες για να εκτελέσουν.

Το Pystol παρέχει έτοιμες ενέργειες για τη δοκιμή του συστήματος. Ωστόσο, εάν ένας προγραμματιστής θέλει να δημιουργήσει μια νέα ενέργεια, μπορεί να γίνει χρησιμοποιώντας GoLang και Python.

Παρέχει έναν πίνακα ταμπλό συνεχούς ενοποίησης για να παρέχει μια συνοπτική εικόνα όλων των εργασιών. Μπορείτε να εκτελέσετε το Pystol τοπικά ή να το αναπτύξετε σε ένα κοντέινερ χρησιμοποιώντας την εικόνα του docker. Το Pystol παρέχει δύο διεπαφές, το ένα είναι το Web UI και το άλλο μέσω CLI. Προφανώς, το Web UI είναι καλύτερη επιλογή.

Muxy

Muxy είναι ένας διακομιστής μεσολάβησης για τον έλεγχο της ανθεκτικότητας και των μοτίβων ανοχής σφαλμάτων για αστοχίες κατανεμημένου συστήματος στον πραγματικό κόσμο. Μπορεί να παραβιάσει το επίπεδο μεταφοράς (επίπεδο 4), το επίπεδο συνεδρίας TCP (επίπεδο 5) και το επίπεδο πρωτοκόλλου HTTP (επίπεδο 7).

Muxy χαρακτηριστικά:

  • Αρθρωτή αρχιτεκτονική και εύκολα επεκτάσιμη
  • Διαθέτει επίσημο δοχείο αποβάθρας
  • Εύκολο στην εγκατάσταση, δεν απαιτούνται εξαρτήσεις.
  • Ιδανικό για συνεχείς δοκιμές ανθεκτικότητας
  • Προσομοιώνει ζητήματα συνδεσιμότητας δικτύου για κατανεμημένα συστήματα και κινητές συσκευές

Πούμπα

Πούμπα είναι ένα εργαλείο γραμμής εντολών που εκτελεί δοκιμές χάους για κοντέινερ docker. Με το Pumba, καταρρίπτετε σκόπιμα τα κοντέινερ docker της εφαρμογής για να δείτε πώς αντιδρά το σύστημα. Μπορείτε επίσης να εκτελέσετε δοκιμές ακραίων καταστάσεων στους πόρους του κοντέινερ, όπως CPU, μνήμη, σύστημα αρχείων, είσοδο/έξοδο κ.λπ.

Μπορείτε επίσης να εκτελέσετε Pumba σε ένα σύμπλεγμα Kubernetes. Πρέπει να χρησιμοποιήσετε το DaemonSets για να αναπτύξετε το Pumba σε κόμβους Kubernetes. Μπορείτε να χρησιμοποιήσετε πολλά κοντέινερ Pumba για να εκτελέσετε πολλές εντολές Pumba στο ίδιο DaemonSet.

ChaosBlade

ChaosBlade είναι ένα εργαλείο ανοιχτού κώδικα για την εισαγωγή πειραμάτων στα συστήματα από την Alibaba. Δοκιμάζει όλες τις αστοχίες που έχει αντιμετωπίσει η Alibaba τα τελευταία δέκα χρόνια και εφαρμόζει βέλτιστες πρακτικές για να τις αποφύγει. Ακολουθεί τις αρχές μηχανικής χάους για τον έλεγχο της ανοχής σφαλμάτων των κατανεμημένων συστημάτων.

Χαρακτηριστικά ChaosBlade:

  • Παρέχει πειραματικά σενάρια για πολλαπλούς πόρους όπως CPU, δίκτυο, μνήμη, δίσκος κ.λπ.
  • Παρέχει πειραματικά σενάρια για κόμβους, δίκτυα και pods στην πλατφόρμα Kubernetes
  • Παρέχει εύχρηστες εντολές CLI για την εκτέλεση πειραμάτων
  Πώς να διαγράψετε όλα τα iMessages από Mac ή MacBook

Ηλιοτρόπιο

Ηλιοτρόπιο ακολουθεί τις αρχές της μηχανικής χάους του cloud. Η αποστολή του εργαλείου λακκούβας είναι να προσφέρει ένα πλήρες πλαίσιο για την εύρεση αδυναμιών στα συστήματα Kubernetes και τις εφαρμογές που εκτελείτε στο Kubernetes.

Έχει έναν χειριστή χάους και τα CRD (CustomResourceDefinitions) γύρω από αυτό, επιτρέποντας τη δυνατότητα plug-and-play. Έχει να κάνει με το να βάλετε τη λογική του χάους σας σε μια εικόνα docker, να την ρίξετε σε ένα πλαίσιο λυχνίας και να την ενορχηστρώσετε χρησιμοποιώντας τα CRD.

Χαρακτηριστικά Litmus:

  • Βοηθά τους μηχανικούς και τους προγραμματιστές αξιοπιστίας ιστότοπου να βρουν αδυναμίες στο σύστημα Kubernetes
  • Παρέχει έτοιμα προς χρήση γενικά πειράματα
  • Παρέχει Chaos API για διαχείριση ροής εργασιών χάους
  • Το Litmus SDK υποστηρίζει Go, Python και Ansible για να δημιουργήσετε τα δικά σας πειράματα.

Κακός δαίμον των αεροπόρων

Κακός δαίμον των αεροπόρων βοηθά τους μηχανικούς να δημιουργήσουν πιο ανθεκτικό λογισμικό. Παρέχει μια πλατφόρμα για την εκτέλεση πειραμάτων μηχανικής χάους με ασφάλεια, ασφάλεια και ευθύτητα.

Μπορείτε να εισάγετε προσεκτικά την αποτυχία σε κεντρικούς υπολογιστές ή κοντέινερ με το gremlin, ανεξάρτητα από το πού βρίσκονται, είτε πρόκειται για το δημόσιο cloud είτε για το δικό σας κέντρο δεδομένων.

Χαρακτηριστικά Gremlin:

  • Εγκαθιστά ελαφρύ παράγοντα στους οικοδεσπότες ή τα δοχεία σας για την έγχυση αστοχιών
  • Παρέχει 10+ διαφορετικούς τρόπους επίθεσης υποδομής
  • Τα State gremlin σάς επιτρέπουν να χειρίζεστε την ώρα του συστήματος, να τερματίζετε ή να επανεκκινείτε κεντρικούς υπολογιστές και να σκοτώνετε επεξεργαστές.
  • Τα δικτυακά gremlin μπορούν να εισάγουν λανθάνουσα κατάσταση για να εισαγάγουν απώλεια πακέτων ή να μειώσουν την κίνηση.
  • Οι επιθέσεις της βιβλιοθήκης Alfi του Gremlin μπορούν να διαμορφωθούν, να ξεκινήσουν και να σταματήσουν μέσω της εφαρμογής Ιστού. API ή CLI
  • Σας επιτρέπει να στοχεύσετε με ακρίβεια την ακτίνα έκρηξης που θέλετε να επιτεθείτε
  • Σας επιτρέπει να σταματήσετε όλες τις επιθέσεις και να επαναφέρετε το σύστημα σε σταθερή κατάσταση

Steadybit

Steadybit στοχεύει στη μείωση του χρόνου διακοπής λειτουργίας προληπτικά και παρέχει ορατότητα σε ζητήματα συστήματος. Μπορείτε να εκτελέσετε αυτό το εργαλείο τοπικά στην υποδομή σας ή στο cloud ως υπηρεσία (SaaS).

Για να χρησιμοποιήσετε το Steadybit, ορίζετε την κατάσταση, προσομοιώνετε τα πειράματα, εκτελείτε τα προσομοιωμένα πειράματα στην παραγωγή και αυτοματοποιείτε όλα τα πειράματα. Εκτελεί έξυπνους πράκτορες στο σύστημά σας για να ανακαλύψει πιθανά ζητήματα και αδυναμίες. Ενσωματώνεται με πολλά συστήματα με ευκολία.

συμπέρασμα

Προχωρήστε και είστε αρκετά γενναίοι για να εφαρμόσετε τις αρχές της μηχανικής του χάους και να δοκιμάσετε την παραγωγή σας με τα προαναφερθέντα εργαλεία. Αυτά τα εργαλεία θα σας βοηθήσουν να βρείτε πολλές μη αναγνωρισμένες αδυναμίες στο σύστημά σας και θα σας βοηθήσουν να κάνετε το σύστημά σας πιο ανθεκτικό.