DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

Ο Anton Weiss, ιδρυτής και διευθυντής της Otomato Software, ένας από τους εμπνευστές και εκπαιδευτές της πρώτης πιστοποίησης DevOps στο Ισραήλ, μίλησε στην περσινή DevOpsDays Moscow σχετικά με τη θεωρία του χάους και τις κύριες αρχές της μηχανικής του χάους, και εξήγησε επίσης πώς λειτουργεί η ιδανική οργάνωση DevOps του μέλλοντος.

Έχουμε ετοιμάσει μια έκδοση κειμένου της έκθεσης.



Καλημέρα!

DevOpsDays στη Μόσχα για δεύτερη συνεχή χρονιά, αυτή είναι η δεύτερη φορά που βρίσκομαι σε αυτή τη σκηνή, πολλοί από εσάς βρίσκεστε σε αυτό το δωμάτιο για δεύτερη φορά. Τι σημαίνει? Αυτό σημαίνει ότι το κίνημα DevOps στη Ρωσία αυξάνεται, πολλαπλασιάζεται και, το πιο σημαντικό, σημαίνει ότι ήρθε η ώρα να μιλήσουμε για το τι είναι το DevOps το 2018.

Σηκώστε τα χέρια σας όσοι πιστεύουν ότι το DevOps είναι ήδη επάγγελμα το 2018; Υπάρχουν τέτοια. Υπάρχουν μηχανικοί DevOps στην αίθουσα των οποίων η περιγραφή εργασίας λέει "DevOps Engineer"; Υπάρχουν διαχειριστές DevOps στο δωμάτιο; Δεν υπάρχει τέτοιο. Αρχιτέκτονες DevOps; Επίσης όχι. Οχι αρκετά. Είναι αλήθεια ότι κανείς δεν λέει ότι είναι μηχανικός DevOps;

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

Ποιος έχει ακούσει για ένα νέο θέμα που ονομάζεται DevDevOps; Αυτή είναι μια νέα τεχνική που επιτρέπει την αποτελεσματική συνεργασία μεταξύ προγραμματιστών και devops. Και όχι τόσο νέο. Αν κρίνουμε από το Twitter, άρχισαν να μιλάνε για αυτό πριν από 4 χρόνια. Και μέχρι τώρα το ενδιαφέρον για αυτό ολοένα και μεγαλώνει, υπάρχει δηλαδή πρόβλημα. Το πρόβλημα πρέπει να λυθεί.

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

Είμαστε δημιουργικοί άνθρωποι, δεν είμαστε απλώς χαλαροί. Λέμε: Το DevOps δεν είναι μια αρκετά περιεκτική λέξη· εξακολουθεί να του λείπουν κάθε λογής διαφορετικά, ενδιαφέροντα στοιχεία. Και πηγαίνουμε στα μυστικά μας εργαστήρια και αρχίζουμε να παράγουμε ενδιαφέρουσες μεταλλάξεις: DevTestOps, GitOps, DevSecOps, BizDevOps, ProdOps.

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

Η λογική είναι σιδερένια, σωστά; Το σύστημα παράδοσης μας δεν είναι λειτουργικό, τα συστήματά μας είναι ασταθή και οι χρήστες μας είναι δυσαρεστημένοι, δεν έχουμε χρόνο να διαθέσουμε λογισμικό εγκαίρως, δεν χωράμε στον προϋπολογισμό. Πώς θα τα λύσουμε όλα αυτά; Θα βρούμε μια νέα λέξη! Θα τελειώσει με το "Ops" και το πρόβλημα λύνεται.

Οπότε ονομάζω αυτή την προσέγγιση - "Επιλογή, και το πρόβλημα λύθηκε".

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

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

Τι είναι ένα σύστημα;

Και αν μιλάμε ήδη για συστημική σκέψη, ας υπενθυμίσουμε στον εαυτό μας τι είναι σύστημα.

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

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

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

Από την άποψη της συστημικής σκέψης, ένα σύστημα είναι ένα σύνολο που αποτελείται από μέρη. Υπό αυτή την έννοια, ο καθένας μας είναι ένα σύστημα. Οι οργανισμοί στους οποίους εργαζόμαστε είναι συστήματα. Και αυτό που χτίζουμε εγώ και εσύ λέγεται σύστημα.

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

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

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

Όπως είπε ο Δρ. Russell Ackoff (ένας από τους ιδρυτές της συστημικής σκέψης), αυτό είναι αρκετά εύκολο να αποδειχθεί με ένα πείραμα σκέψης. Για παράδειγμα, ποιος στο δωμάτιο ξέρει πώς να γράφει κώδικα; Υπάρχουν πολλά χέρια, και αυτό είναι φυσιολογικό, γιατί αυτή είναι μια από τις βασικές απαιτήσεις για το επάγγελμά μας. Ξέρετε πώς να γράφετε, αλλά μπορούν τα χέρια σας να γράφουν κώδικα χωριστά από εσάς; Υπάρχουν άνθρωποι που θα πουν: «Δεν είναι τα χέρια μου που γράφουν τον κώδικα, είναι ο εγκέφαλός μου που γράφει τον κώδικα». Μπορεί ο εγκέφαλός σας να γράψει κώδικα χωριστά από εσάς; Λοιπόν, μάλλον όχι.

Ο εγκέφαλος είναι μια καταπληκτική μηχανή, δεν γνωρίζουμε καν το 10% του πώς λειτουργεί εκεί, αλλά δεν μπορεί να λειτουργήσει ξεχωριστά από το σύστημα που είναι το σώμα μας. Και αυτό είναι εύκολο να αποδειχθεί: ανοίξτε το κρανίο σας, βγάλτε τον εγκέφαλό σας, βάλτε τον μπροστά στον υπολογιστή, αφήστε τον να προσπαθήσει να γράψει κάτι απλό. "Hello, world" στην Python, για παράδειγμα.

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

Αυτή η ευαισθησία στις αρχικές συνθήκες ανακαλύφθηκε και μελετήθηκε για πρώτη φορά από τον Αμερικανό μετεωρολόγο Ed Lorenz. Στη συνέχεια, ονομάστηκε «φαινόμενο της πεταλούδας» και οδήγησε στην ανάπτυξη ενός κινήματος επιστημονικής σκέψης που ονομάζεται «θεωρία του χάους». Αυτή η θεωρία έγινε μια από τις σημαντικότερες αλλαγές παραδείγματος στην επιστήμη του 20ου αιώνα.

Θεωρία του χάους

Οι άνθρωποι που μελετούν το χάος αυτοαποκαλούνται χαοσολόγοι.

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

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

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

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

Μια άλλη ενδιαφέρουσα ιδιότητα τέτοιων συστημάτων είναι ότι είναι ελεύθερα επεκτάσιμα. Αυτό που αναμφίβολα θα έπρεπε να μας ενδιαφέρει, ως χαοσολόγους-μηχανικούς. Αν λοιπόν λέγαμε ότι η συμπεριφορά ενός πολύπλοκου συστήματος καθορίζεται από την αλληλεπίδραση των μερών του, τότε τι πρέπει να μας ενδιαφέρει; ΑΛΛΗΛΕΠΙΔΡΑΣΗ.

Υπάρχουν δύο ακόμη ενδιαφέροντα ευρήματα.
DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

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

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

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

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

Θέλω να πω ότι οι τάσεις προς την πολυπλοκότητα, την προσαρμοστικότητα, την αποκέντρωση, το χάος μπορούν να εντοπιστούν σε όλα. Και στα συστήματα που εσείς και εγώ χτίζουμε, και σε εκείνα τα συστήματα των οποίων είμαστε μέρος.

Και για να μην είμαστε αβάσιμοι, ας δούμε πώς αλλάζουν τα συστήματα που δημιουργούμε.

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

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

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

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

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

Πού είναι η πολυπλοκότητα; Η δυσκολία βέβαια βρίσκεται στις αλληλεπιδράσεις. Πόσο μπορεί να κάνει μια λειτουργία από μόνη της; Πώς αλληλεπιδρά με άλλες λειτουργίες; Ουρές μηνυμάτων, βάσεις δεδομένων, εξισορροπητές. Πώς να αναδημιουργήσετε κάποιο συμβάν όταν συνέβη μια αποτυχία; Πολλές ερωτήσεις και λίγες απαντήσεις.

Οι Microservices και οι Serverless είναι αυτό που εμείς οι geek hipster αποκαλούμε Cloud Native. Είναι όλα σχετικά με το σύννεφο. Αλλά το σύννεφο είναι επίσης εγγενώς περιορισμένο ως προς την επεκτασιμότητα του. Έχουμε συνηθίσει να το θεωρούμε ως ένα κατανεμημένο σύστημα. Στην πραγματικότητα, πού ζουν οι διακομιστές των παρόχων cloud; Σε κέντρα δεδομένων. Δηλαδή, έχουμε ένα είδος συγκεντρωτικού, πολύ περιορισμένου, κατανεμημένου μοντέλου εδώ.

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

Το σύννεφο δεν θα διαρκέσει, επομένως μιλάμε όλο και περισσότερο για κάτι που ονομάζεται υπολογιστική ακμή. Ή μου αρέσει επίσης ο υπέροχος ορισμός του «υπολογιστικού ομίχλης». Είναι τυλιγμένο στον μυστικισμό του ρομαντισμού και του μυστηρίου.

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

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

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

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

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

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

Η διαφημιστική εκστρατεία γύρω από το blockchain είναι κατανοητή. Εκτός από τη βιασύνη του χρυσού, η ίδια η τεχνολογία έχει αξιοσημείωτες υποσχέσεις για ένα πιο λαμπρό μέλλον: περισσότερη ελευθερία, περισσότερη αυτονομία, κατανεμημένη παγκόσμια εμπιστοσύνη. Τι δεν θέλεις;

Αντίστοιχα, όλο και περισσότεροι μηχανικοί σε όλο τον κόσμο αρχίζουν να αναπτύσσουν αποκεντρωμένες εφαρμογές. Και αυτή είναι μια δύναμη που δεν μπορεί να απορριφθεί λέγοντας απλά: «Αχ, το blockchain είναι απλώς μια κακώς εφαρμοσμένη κατανεμημένη βάση δεδομένων». Ή όπως θέλουν να πουν οι σκεπτικιστές: «Δεν υπάρχουν πραγματικές εφαρμογές για blockchain». Αν το καλοσκεφτείς, πριν από 150 χρόνια έλεγαν το ίδιο πράγμα για τον ηλεκτρισμό. Και μάλιστα είχαν δίκιο κατά κάποιο τρόπο, γιατί αυτό που κάνει δυνατό ο ηλεκτρισμός σήμερα δεν ήταν σε καμία περίπτωση εφικτό τον 19ο αιώνα.

Με την ευκαιρία, ποιος ξέρει τι είδους λογότυπο υπάρχει στην οθόνη; Αυτό είναι το Hyperledger. Πρόκειται για ένα έργο που αναπτύσσεται υπό την αιγίδα του The Linux Foundation και περιλαμβάνει ένα σύνολο τεχνολογιών blockchain. Αυτή είναι πραγματικά η δύναμη της κοινότητας ανοιχτού κώδικα.

Μηχανική Χάους

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

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

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

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

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

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

Πρωτόκολλα ολοκλήρωσης κατανεμημένων συστημάτων

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

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

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

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

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

Περαιτέρω - Open Policy Agent. Λέμε ότι δεν μπορούμε να προβλέψουμε τι θα γίνει με το σύστημα, δηλαδή πρέπει να αυξήσουμε την παρατηρησιμότητα, την παρατηρησιμότητα του. Το Opentracing ανήκει σε μια οικογένεια εργαλείων που δίνουν παρατηρησιμότητα στα συστήματά μας. Χρειαζόμαστε όμως παρατηρησιμότητα για να προσδιορίσουμε εάν το σύστημα συμπεριφέρεται όπως το περιμένουμε ή όχι. Πώς ορίζουμε την αναμενόμενη συμπεριφορά; Με τον καθορισμό κάποιου είδους πολιτικής, κάποιου συνόλου κανόνων. Το έργο Open Policy Agent εργάζεται για να ορίσει αυτό το σύνολο κανόνων σε ένα φάσμα που κυμαίνεται από την πρόσβαση έως την κατανομή πόρων.

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

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

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

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

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

Και τέλος, αν θέλουμε τα συστήματά μας να είναι εντελώς ανεξάρτητα, προσαρμοστικά και αυτοοργανωμένα, πρέπει να τους δώσουμε το δικαίωμα στον αυτοπροσδιορισμό. Το έργο καλείται spiffe Αυτό ακριβώς κάνει. Αυτό είναι επίσης ένα έργο υπό την αιγίδα του Cloud Native Computing Foundation.

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

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

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

Υπάρχει ένα υπέροχο книга Η Βρετανίδα συγγραφέας Rachel Botsman, στην οποία γράφει για την εξέλιξη της εμπιστοσύνης σε όλη την ανθρώπινη ιστορία. Λέει ότι αρχικά, στις πρωτόγονες κοινωνίες, η εμπιστοσύνη ήταν τοπική, δηλαδή εμπιστευόμασταν μόνο αυτούς που γνωρίζαμε προσωπικά.

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

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

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

Βασικές αρχές οργανισμού DevOps

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

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

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

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

Εξάντληση

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

DevOps και Chaos: Παράδοση λογισμικού σε έναν αποκεντρωμένο κόσμο

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

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

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

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

Τι άλλο από το Chaos Monkey;

Στην πραγματικότητα, όλα αυτά τα όργανα είναι τόσο νέα. Το ίδιο Netflix κατασκεύασε εργαλεία για τον εαυτό του. Φτιάξτε τα δικά σας εργαλεία. Διαβάστε τις αρχές της μηχανικής χάους και τηρήστε αυτές τις αρχές αντί να προσπαθήσετε να βρείτε άλλα εργαλεία που κάποιος άλλος έχει ήδη κατασκευάσει.

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

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

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

Λοιπόν, στη φιλοσοφία του DevOps, οι μικροϋπηρεσίες δεν είναι τόσο καλό πράγμα;

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

Ωστόσο, τι είναι περισσότερη έμφαση: στην απλοποίηση της αλληλεπίδρασης ή στην απλοποίηση των τμημάτων;

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

Είναι αλήθεια ότι όλα όσα είπατε ζουν σε έναν κόσμο χωρίς ανταγωνισμό, και το χάος εκεί είναι τόσο ευγενικό, και δεν υπάρχουν αντιφάσεις μέσα σε αυτό το χάος, κανείς δεν θέλει να φάει ή να σκοτώσει κανέναν; Πώς πρέπει να είναι ο ανταγωνισμός και τα DevOps;

Λοιπόν, εξαρτάται για τι είδους διαγωνισμό μιλάμε. Αφορά τον ανταγωνισμό στο χώρο εργασίας ή τον ανταγωνισμό μεταξύ εταιρειών;

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

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

Αυτό σημαίνει ότι χάος είναι η απουσία στόχων, λες; Ή αυτούς τους στόχους που δεν θέλουμε να δούμε; Είμαστε μέσα στο σπίτι και δεν καταλαβαίνουμε τους στόχους των άλλων. Ο ανταγωνισμός, μάλιστα, οφείλεται στο ότι έχουμε ξεκάθαρους στόχους και ξέρουμε πού θα καταλήξουμε κάθε επόμενη χρονική στιγμή. Αυτή, από την άποψή μου, είναι η ουσία του DevOps.

Επίσης μια ματιά στην ερώτηση. Νομίζω ότι όλοι έχουμε τον ίδιο στόχο: να επιβιώσουμε και να τα καταφέρουμε
μεγαλύτερη ευχαρίστηση. Και ο αγωνιστικός στόχος κάθε οργανισμού είναι ο ίδιος. Η επιβίωση συμβαίνει συχνά μέσω του ανταγωνισμού, δεν μπορείτε να κάνετε τίποτα γι 'αυτό.

Το φετινό συνέδριο DevOpsDays Moscow θα πραγματοποιηθεί στις 7 Δεκεμβρίου στην Τεχνόπολη. Δεχόμαστε αιτήσεις για αναφορές έως τις 11 Νοεμβρίου. Γράφω μας αν θέλετε να μιλήσουμε.

Η εγγραφή για τους συμμετέχοντες είναι ανοιχτή, τα εισιτήρια κοστίζουν 7000 ρούβλια. Ελα μαζί μας!

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο