Ομορφιά στα διαλείμματα: Δημιουργία ελαστικών συστημάτων μέσω μηχανικού χάους

Συγγραφέας: Laura McKinney
Ημερομηνία Δημιουργίας: 2 Απρίλιος 2021
Ημερομηνία Ενημέρωσης: 1 Ιούλιος 2024
Anonim
Ομορφιά στα διαλείμματα: Δημιουργία ελαστικών συστημάτων μέσω μηχανικού χάους - Τεχνολογία
Ομορφιά στα διαλείμματα: Δημιουργία ελαστικών συστημάτων μέσω μηχανικού χάους - Τεχνολογία

Περιεχόμενο


Πηγή: pressureUA / iStockphoto

Πάρε μακριά:

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

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

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


Προετοιμασία για αποτυχία

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

Φυσικά, είναι καλή ιδέα να δοκιμάσετε την ανθεκτικότητα προτού οι αλλαγές φτάσουν στην παραγωγή. Εάν δεν το κάνετε αυτό, δεν θα είστε σε θέση να επαληθεύσετε ότι οι υπηρεσίες σας μπορούν να υποστηρίξουν τόσο το μέσο όσο και το μέγιστο φορτίο. Στην πραγματικότητα, το ασφαλέστερο στοίχημα είναι να διασφαλίσετε ότι το προϊόν σας μπορεί να χειριστεί μέχρι και το διπλάσιο του μέγιστου ποσού χωρίς να χρειαστεί να κλιμακωθεί.


Όταν πρόκειται για δοκιμές ανθεκτικότητας, τα κατάλληλα εργαλεία δεν πρέπει να ανησυχούν πολύ για το πώς χειρίζονται τα αιτήματα, αλλά έχουν ακριβώς το σωστό αντίκτυπο στο τέλος. Να θυμάστε ότι υπό ορισμένες προϋποθέσεις, η υπηρεσία εισαγωγής μπορεί να αποτύχει να παραδώσει ένα αίτημα στο υπόλοιπο σύστημα, αλλά να μην αναφέρει την αποτυχία. Μην διακινδυνεύετε τα θέματα που πετούν κάτω από το ραντάρ παρακολούθησης, βεβαιώνοντας ότι στην πραγματικότητα συμβαίνει επικύρωση από άκρο σε άκρο. (Για περισσότερες πληροφορίες, βλ. Αποτυχημένες τεχνικές: Μπορούμε να ζήσουμε μαζί τους;)

Τα επόμενα βήματα

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

Σημαντικά γεγονότα αποτυχίας εξαρτώνται σε μεγάλο βαθμό από τη διάταξη των υπηρεσιών σας και μπορείτε να τα διατυπώσετε ζητώντας συγκεκριμένες ερωτήσεις που είναι σχετικές με σας. Για παράδειγμα, ποιος είναι ο αντίκτυπος για τους ανθρώπους που χρησιμοποιούν το front-end όταν μια βάση δεδομένων καθίσταται απρόσιτη για ορισμένο χρονικό διάστημα; Μπορούν οι χρήστες αυτοί να εξακολουθούν να περιηγούνται στο διαδικτυακό περιβάλλον χρήστη; Μπορούν να εξακολουθούν να εκδίδουν ενημερώσεις στις πληροφορίες τους και θα επεξεργάζονται σωστά αυτές τις ενημερώσεις όταν η βάση δεδομένων καταστεί πάλι δυνατή;

Εάν εκτελείτε πολλαπλές μικροεπιχειρήσεις, μπορείτε να ρωτήσετε αν θα υπάρξει μια συνολική διακοπή λειτουργίας σε περίπτωση διακοπής μιας μεμονωμένης υπηρεσίας. Ή αν έχετε έναν μηχανισμό αναμονής για την αποκατάσταση της επικοινωνίας μεταξύ υπηρεσιών, τι συμβαίνει όταν η υπηρεσία (ή οι υπηρεσίες) του καταναλωτή σταματήσει να λειτουργεί; Θα εξακολουθούν οι χρήστες να μπορούν να εργαστούν με την αίτησή σας; Και με δεδομένο ένα μέσο φορτίο, πόσο καιρό έχετε πριν την υπερχείλιση των ουρών και αρχίζετε να χάνετε s;

No Bugs, No Stress - Ο οδηγός σας βήμα προς βήμα για τη δημιουργία λογισμικού που αλλάζει τη ζωή χωρίς να καταστρέφει τη ζωή σας

Δεν μπορείτε να βελτιώσετε τις δεξιότητες προγραμματισμού σας όταν κανείς δεν ενδιαφέρεται για την ποιότητα του λογισμικού.

Μόλις ορίσετε μερικές βασικές ερωτήσεις σχετικά με την υποδομή σας, μπορείτε στη συνέχεια να ξεκινήσετε την καταχώριση διαφορετικών τρόπων για να προσομοιώσετε αυτές τις αποτυχίες. Ίσως αρκεί η διακοπή μιας συγκεκριμένης υπηρεσίας ή ενός διακομιστή βάσης δεδομένων. Ίσως θελήσετε να αποκλείσετε το κύριο νήμα μιας υπηρεσίας για να προσομοιώσετε ένα dead-lock, ενώ το κιβώτιο του εξακολουθεί να ανταποκρίνεται και να λειτουργεί. Ενδέχεται να αποφασίσετε να εισαγάγετε κανόνες στο δίκτυό σας για να αποκλείσετε την κίνηση μεταξύ συγκεκριμένων υπηρεσιών. Σε περιβάλλοντα Linux, μπορείτε να χρησιμοποιήσετε εργαλεία όπως το 'tc' για να εξομοιώσετε καταστάσεις δικτύου όπως πακέτα υψηλής καθυστέρησης, ρίψη, αλλοιώσεις ή διπλότυπα. (Μπορεί να είναι σημαντικό να εμπλέξετε τους χρήστες στις δοκιμές. Διαβάστε περισσότερα σε 4 λόγους για τους οποίους οι τελικοί χρήστες πρέπει να συμμετάσχουν στη δοκιμή πριν από την UAT.)

Μαθαίνοντας και Βελτίωση μέσω των Δραστηριοτήτων

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

Στον πυρήνα της, η μηχανική του χάους παίρνει την πολυπλοκότητα του συστήματος ως δοθείσα, δοκιμάζει την προσομοίωση νέων και τρελών συνθηκών και παρατηρεί πώς αντιδρά το σύστημα. Αυτή είναι η ομάδα μηχανικών δεδομένων που χρειάζεται να επανασχεδιάσουν και να διαμορφώσουν ξανά το σύστημα για να επιτύχουν μεγαλύτερη ανθεκτικότητα. Υπάρχουν τόσες ευκαιρίες να μάθουν νέα και χρήσιμα πράγματα. Για παράδειγμα, ενδέχεται να βρείτε περιπτώσεις στις οποίες οι υπηρεσίες δεν λαμβάνουν ενημερώσεις όταν οι μεταγενέστερες υπηρεσίες έχουν αλλάξει ή περιοχές όπου η παρακολούθηση λείπει εντελώς. Δεν υπάρχει έλλειψη συναρπαστικών τρόπων για να κάνετε το προϊόν σας πιο ανθεκτικό και ανθεκτικό!