Προγραμματισμός

Τι είναι το Chaos Monkey; Η μηχανική χάους εξήγησε

Πρωτοπόρος από τις αίθουσες του Netflix κατά τη μετατόπισή του από τη διανομή DVD σε κτίρια κατανεμημένων συστημάτων cloud για ροή βίντεο, το Chaos Monkey εισήγαγε μια αρχή μηχανικής που έχει αγκαλιαστεί από οργανισμούς ανάπτυξης λογισμικού όλων των σχημάτων και μεγεθών: δηλαδή, με το σκόπιμο σπάσιμο συστημάτων μπορεί να μάθει να τα κάνει πιο ανθεκτικά.

Σύμφωνα με την αρχική ανάρτηση ιστολογίου Netflix σχετικά με το θέμα, που δημοσιεύθηκε τον Ιούλιο του 2011 από τον Yury Izrailevsky, τότε διευθυντή της υποδομής cloud και συστημάτων και τον Ariel Tseitlin, διευθυντή λύσεων cloud στην εταιρεία ροής, το Chaos Monkey σχεδιάστηκε για να απενεργοποιήσει τυχαία τις παρουσίες παραγωγής στο Η υποδομή του Amazon Web Services, αποκαλύπτοντας έτσι αδυναμίες που οι μηχανικοί της Netflix θα μπορούσαν να εξαλείψουν δημιουργώντας καλύτερους μηχανισμούς αυτόματης ανάκτησης.

Το πιασάρικο όνομα προήλθε από "την ιδέα της απελευθέρωσης ενός άγριου πιθήκου με ένα όπλο στο κέντρο δεδομένων σας (ή στην περιοχή σύννεφων) για να τραβήξετε τυχαία στιγμές και να μασάτε καλώδια - ενώ συνεχίζουμε να εξυπηρετούμε τους πελάτες μας χωρίς διακοπή", η ανάρτηση του ιστολογίου πολιτείες.

Στην πράξη, αυτό θα συνεπαγόταν μια απλή εφαρμογή «επιλογή τυχαίας παρουσίας από κάθε σύμπλεγμα και, σε κάποιο σημείο κατά τις εργάσιμες ώρες, να την απενεργοποιήσετε χωρίς προειδοποίηση. Αυτό θα το έκανε κάθε εργάσιμη ημέρα », όπως περιγράφεται λεπτομερώς από τους πρώην μηχανικούς του Netflix, Nora Jones και Casey Rosenthal στο περιεκτικό τους βιβλίο για το θέμα, Μηχανική χάους, δημοσιεύθηκε από την O'Reilly Media.

Η ιδέα είναι ότι, μαθαίνοντας πού βρίσκονται τα πιο αδύναμα σημεία σας, οι μηχανικοί μπορούν να θέσουν αυτοματοποιημένα ερεθίσματα για την καταπολέμηση ενός ζητήματος, εξοικονομώντας τους μια κλήση στη μέση της νύχτας εάν κάτι πήγε στραβά. Το Chaos Monkey έχει εξελιχθεί από τότε σε μια ολόκληρη γκάμα αρχών χάους, υπό τη σημαία της μηχανικής χάους.

Chaos Monkey στο Netflix

Το Chaos Monkey αναπτύχθηκε από τις μηχανικές προσπάθειες στο Netflix γύρω στο 2010, όταν ο Greg Orzell - τώρα εργάζεται στο GitHub που ανήκει στη Microsoft - ανέλαβε να δημιουργήσει ανθεκτικότητα στη νέα αρχιτεκτονική που βασίζεται στο cloud.

«Ο τρόπος που σκέφτομαι το Chaos Monkey δεν είναι ένα σημαντικό επίτευγμα της μηχανικής», είπε ο Orzell. «Η αξία που φέρνει είναι μια αλλαγή στη νοοτροπία που ήταν κρίσιμη εκείνη τη στιγμή καθώς πήγαμε από την αποστολή DVD σε ροή μέσω του Διαδικτύου.»

Τις πρώτες μέρες, οι μηχανικοί του Netflix εισήγαγαν μια ολόκληρη γκάμα διακοπών και ζητημάτων σε συστήματα χρησιμοποιώντας ένα "Simian Army" εργαλείων ανοιχτού κώδικα, κάθε ένα από τα οποία αντιστοιχούσε σε ορισμένους τύπους αποτυχιών, ξεκινώντας με το Chaos Monkey να βγάζει συστάδες AWS.

Ο αρχικός στρατός (τώρα συνήθως αποσύρθηκε υπέρ των νέων εργαλείων) περιλάμβανε τους λάτρεις του Latency Monkey, το οποίο θα προκαλούσε τεχνητές καθυστερήσεις στο επίπεδο επικοινωνίας RESTful πελάτη-διακομιστή και το Doctor Monkey, το οποίο θα χρησιμοποιούσε τους ελέγχους υγείας που εκτελούνται σε κάθε περίπτωση , καθώς και οθόνες για άλλα εξωτερικά σημάδια υγείας (π.χ. φορτίο CPU) για την ανίχνευση ανθυγιεινών περιστατικών και την κατάργησή τους από την υπηρεσία, εάν απαιτείται.

Το Chaos Kong πήρε το Chaos Monkey στο επόμενο επίπεδο προσομοιώνοντας μια διακοπή λειτουργίας σε μια ολόκληρη ζώνη διαθεσιμότητας AWS. «Είναι πολύ σπάνιο ότι μια περιοχή AWS δεν είναι διαθέσιμη, αλλά συμβαίνει», περιγράφει μια δημοσίευση ιστολογίου Netflix από το 2015.

«Εκτελώντας τακτικά πειράματα που προσομοιώνουν μια περιφερειακή διακοπή λειτουργίας, καταφέραμε να εντοπίσουμε τυχόν συστηματικές αδυναμίες και να τις διορθώσουμε», συνεχίζει η ανάρτηση. "Όταν το US-EAST-1 πραγματικά δεν ήταν διαθέσιμο, το σύστημά μας ήταν ήδη αρκετά ισχυρό για να αντιμετωπίσει μια ανακατεύθυνση κυκλοφορίας."

Όπως περιγράφουν οι Jones και Rosenthal στο βιβλίο τους, το να αφήσει το Chaos Kong να χαλαρώσει στην υποδομή ήταν «μια υπόθεση λευκής αρθρώσεως με μια« αίθουσα πολέμου »συναρμολογημένη για να παρακολουθεί όλες τις πτυχές της υπηρεσίας ροής και διήρκεσε ώρες».

Δύο χρόνια αργότερα, τον Ιούλιο του 2017, η Netflix παρουσίασε το ChAP, το Chaos Automation Platform, το οποίο «ανακρίνει τον αγωγό ανάπτυξης για μια υπηρεσία που καθορίζεται από το χρήστη. Στη συνέχεια ξεκινά πειράματα και ελέγχει συστάδες αυτής της υπηρεσίας, και δρομολογεί ένα μικρό όγκο επισκεψιμότητας σε καθένα », αναφέρει η ανάρτηση ιστολογίου.

Αρχές μηχανικής χάους

Οι βασικές πρακτικές Chaos Monkey έχουν εξελιχθεί γρήγορα, με όλο και μεγαλύτερες αναπτύξεις μέσω του Chaos Kong, σε αυτό που αργότερα επισημοποιήθηκε ως χάος. Η Netflix δεν δημιούργησε τη δική της επίσημη ομάδα μηχανικών χάους μέχρι το 2015. Η ομάδα αυτή ήταν επικεφαλής του Bruce Wong, τώρα διευθυντή μηχανικής στο Stitch Fix.

Οι αρχές της μηχανικής χάους έχουν τυπωθεί επίσημα από μερικούς από τους αρχικούς συγγραφείς του Chaos Monkey, ορίζοντας την πρακτική ως: «Η πειθαρχία του πειραματισμού σε ένα σύστημα προκειμένου να οικοδομηθεί εμπιστοσύνη στην ικανότητα του συστήματος να αντέχει σε ταραχώδεις συνθήκες στην παραγωγή».

Στην πράξη, αυτό λαμβάνει τη μορφή μιας διαδικασίας τεσσάρων βημάτων:

  1. Ορισμός της «σταθερής κατάστασης» ενός συστήματος για τον καθορισμό μιας γραμμής βάσης για κανονική συμπεριφορά.
  2. Υποθέτω ότι αυτή η σταθερή κατάσταση θα συνεχιστεί τόσο στην ομάδα ελέγχου όσο και στην πειραματική ομάδα.
  3. Εισαγάγετε μεταβλητές που αντικατοπτρίζουν πραγματικά γεγονότα όπως διακομιστές που παρουσιάζουν σφάλματα, σκληρούς δίσκους που δυσλειτουργούν ή συνδέσεις δικτύου που έχουν διακοπεί.
  4. Προσπαθήστε να διαψεύσετε την υπόθεση αναζητώντας μια διαφορά μεταξύ της ομάδας ελέγχου και της πειραματικής ομάδας.

Εάν η σταθερή κατάσταση είναι δύσκολο να διαταραχθεί, έχετε ένα ισχυρό σύστημα. αν υπάρχει αδυναμία, τότε έχετε κάτι να πάτε και να το διορθώσετε.

"Στα πέντε χρόνια από τη δημοσίευση των" The Principles ", έχουμε δει την εξέλιξη της μηχανικής χάους για να αντιμετωπίσουμε νέες προκλήσεις σε νέες βιομηχανίες", παρατηρούν οι Jones και Rosenthal. "Οι αρχές και τα θεμέλια της πρακτικής είναι βέβαιο ότι θα συνεχίσουν να εξελίσσονται καθώς η υιοθέτηση επεκτείνεται μέσω της βιομηχανίας λογισμικού και σε νέους κλάδους."

Μηχανική χάους με το Chaos Monkey

Για να εκτελέσετε την έκδοση ανοιχτού κώδικα του Chaos Monkey, τα συστήματά σας θα πρέπει να πληρούν ένα συγκεκριμένο σύνολο προϋποθέσεων, όπως περιγράφεται στο GitHub.

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

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

Οι ιδιοκτήτες υπηρεσιών ορίζουν τις παραμέτρους Chaos Monkey μέσω του Spinnaker. Το Chaos Monkey λειτουργεί μέσω του Spinnaker για να λαμβάνει πληροφορίες σχετικά με τον τρόπο ανάπτυξης των υπηρεσιών και τερματίζει παρουσίες - εικονικές μηχανές ή κοντέινερ - τυχαία σε συχνότητα και πρόγραμμα που καθορίζετε.

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

"Το ίδιο το εργαλείο δεν είναι ακριβό, αλλά η επένδυση που πρέπει να κάνετε για να αντιδράσετε στο εργαλείο είναι", όπως το θέτει ο Orzell. Η δέσμευση για χάος μηχανικής απαιτεί επίσης τη μετατόπιση πόρων από τη δημιουργία νέων χαρακτηριστικών για την ενίσχυση της ανθεκτικότητας. «Κάθε επιχείρηση βρίσκεται σε διαφορετικό σημείο σε αυτό το φάσμα και η καθεμία πρέπει να αποφασίσει πόσο πρέπει να καλέσετε πάνω ή κάτω σε αυτόν τον χώρο», προσθέτει.

Οι Τζόουνς και Ρόσενταλ λένε ότι στις πρώτες μέρες, οι μηχανικοί της Netflix «έλαβαν μεγάλη ώθηση από τα χρηματοπιστωτικά ιδρύματα ειδικότερα».

Παρά το γεγονός ότι τα μερίδια είναι υψηλότερα για τις τράπεζες, εξακολουθούν να υφίστανται διακοπές λειτουργίας, οπότε εφαρμόζοντας προσεκτικά μια «προληπτική στρατηγική όπως η μηχανική χάους για την κατανόηση των κινδύνων προκειμένου να αποφευχθούν μεγάλα, ανεξέλεγκτα αποτελέσματα», πολλοί από αυτούς τους οργανισμούς άλλαξαν τη γνώμη τους, με το Capital One νωρίς υιοθετών, όπως περιγράφεται λεπτομερώς στο βιβλίο.

Πόροι μηχανικής χάους

Και πάλι, το τελευταίο και οριστικό βιβλίο για το θέμα είναι Μηχανική χάους από τους πρώην μηχανικούς του Netflix, Nora Jones και Casey Rosenthal, που δημοσιεύθηκαν τον Απρίλιο του 2020, το οποίο βασίζεται σε μεγάλο μέρος του έργου που συντάχθηκαν αυτοί οι συγγραφείς και άλλοι στο βιβλίο του 2017 Μηχανική χάους. Για μια πιο πρακτική επισκόπηση, δείτε το Russ Miles's Εκμάθηση μηχανικής χάους.

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

Η Gremlin - ένας πάροχος εμπορικών εργαλείων για την εκτέλεση πειραμάτων μηχανικής χάους - προσφέρει το δικό της ολοκληρωμένο σύνολο πόρων, οι οποίοι διατίθενται δωρεάν στο διαδίκτυο και σε μορφή PDF. Η εταιρεία υποστηρίζει επίσης διάφορες κοινοτικές προσπάθειες, όπως το Chaos Conf και ένα κανάλι Slack.

Το O'Reilly διαθέτει επίσης πληθώρα πόρων, συμπεριλαμβανομένης αυτής της εύχρηστης λίστας αναπαραγωγής βιβλίων και βίντεο σχετικά με το θέμα.