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

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

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

Η εταιρεία που έγραψε αυτό ήταν μια εταιρεία ανάλυσης δεδομένων. Επεξεργαζόταν χιλιάδες αιτήματα καθημερινά. Μας ήρθαν με τις λέξεις: παιδιά, έχουμε το ClickHouse και θέλουμε να αυτοματοποιήσουμε τη διαμόρφωση και την εγκατάστασή του. Θέλουμε τα Ansible, Terraform, Docker και όλα αυτά να είναι αποθηκευμένα στο Git. Θέλουμε ένα σύμπλεγμα τεσσάρων κόμβων με δύο αντίγραφα ο καθένας.

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

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

Συνοδέψαμε την κίνηση, προέκυψαν και άλλα καθήκοντα - δημιουργία αντιγράφων ασφαλείας και παρακολούθηση. Την ίδια στιγμή, το πρατήριο αυτής της εταιρείας συγχωνεύτηκε με ένα άλλο έργο, αφήνοντάς μας έναν δικό μας - τον Λεωνίντ - ως διοικητή. Η Λένια δεν ήταν πολύ ταλαντούχος τύπος. Ένας απλός προγραμματιστής που τέθηκε ξαφνικά επικεφαλής του Clickhouse. Φαίνεται ότι αυτή ήταν η πρώτη του αποστολή να διαχειριστεί κάτι, και η συντριπτική τιμή τον έκανε να αισθάνεται αστεροειδής.

Μαζί ξεκινήσαμε τη δημιουργία αντιγράφων ασφαλείας. Πρότεινα να δημιουργήσετε αντίγραφα ασφαλείας των αρχικών δεδομένων αμέσως. Απλώς πάρτε το, κλείστε το με φερμουάρ και ρίξτε το κομψά σε κάποιο c3. Τα ακατέργαστα δεδομένα είναι χρυσός. Υπήρχε μια άλλη επιλογή - να δημιουργήσετε αντίγραφα ασφαλείας των ίδιων των πινάκων στο Clickhouse, χρησιμοποιώντας ένα πάγωμα και αντιγραφή. Αλλά η Λένια βρήκε τη δική του λύση.

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

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

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

Δεν γνωρίζαμε ότι λάβαμε αυτήν την παραγγελία λόγω μιας τρομερής παρεξήγησης μέσα στην ομάδα τους

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

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

Παρασκευή βράδυ. Έκανα κράτηση στο αγαπημένο μου wine bar και κάλεσα τους φίλους.

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

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

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

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

- Ξέρεις τι, βγες στο διάολο! Σήμερα είναι τα γενέθλιά μου και τώρα θα πίνω και δεν θα ασχοληθώ με τα σπιτικά προϊόντα του Ιουνίου από χάλια και μπαστούνια!

Αυτό δεν είπα. Αντίθετα, έβγαλα το laptop μου και έπιασα δουλειά.

Όχι, βομβάρδισα, βομβάρδισα σαν την κόλαση! Έριξε καυστικό «Σου το είπα» στη συνομιλία -γιατί το αντίγραφο ασφαλείας, που δεν ήταν καθόλου εφεδρικό, - φυσικά δεν έσωσε τίποτα.

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

Σταματήσαμε την εγγραφή και μετρήσαμε τον αριθμό των συμβάντων που υπήρχαν ανά ημέρα. Ανέβασαν περισσότερα δεδομένα, από τα οποία μόνο το ένα τρίτο δεν καταγράφηκε. Τρία θραύσματα με 2 αντίγραφα το καθένα. Εισαγάγετε 100.000 σειρές - 33.000 δεν καταγράφονται.

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

Κανείς δεν κατάλαβε τι πραγματικά συνέβαινε

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

Τα γενέθλιά μου πετάχτηκαν επίσης στα σκουπίδια. Καθίσαμε στο μπαρ και δημιουργήσαμε ιδέες, προσπαθώντας να λύσουμε το παζλ που μας είχαν ρίξει. Ο λόγος της πτώσης του Clickhouse δεν ήταν προφανής. Ίσως είναι το δίκτυο, ίσως οι ρυθμίσεις του Linux. Ναι, ό,τι θέλετε, υπήρξαν αρκετές υποθέσεις.

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

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

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

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

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

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

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

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

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

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

Ήταν η πιο τρομακτική συνάντηση στην καριέρα μου. Ο σύμμαχός μου από τον πελάτη - STO - δεν μπορούσε να βρει το χρόνο. Πήγα στη συνάντηση με το αφεντικό και τη Λένα.

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

Ενώ σηκωνόταν, χτύπησε τόσο δυνατά τον αναπτήρα που τον έσπασε.

Ως αποτέλεσμα, η Lenya δεν ήταν στη συνάντηση. Και κάναμε μια μεγάλη κουβέντα για όλα με το αφεντικό! Ο Σεργκέι μου είπε για τον πόνο του. Δεν ήθελε να "αυτοματοποιήσει το Clickhouse" - ήθελε "να κάνει τα ερωτήματα να λειτουργούν".

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

Ο Σεργκέι δεν χρειαζόταν μερικούς devop για πρόσληψη. Το πρόβλημα που είχαν αποδείχτηκε πολύ μεγαλύτερο.

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

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

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

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

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

Ρυθμίσαμε ξανά το σύμπλεγμα, επαναλάβαμε την εισαγωγή. Οι εσωτερικοί προγραμματιστές έγραψαν ξανά το "inserter" τους και άρχισε να μοιράζεται σωστά τα δεδομένα.

Ο Max πραγματοποίησε πλήρη έλεγχο υποδομής. Περιέγραψε ένα σχέδιο για τη μετάβαση σε ένα πλήρες backend. Αυτό όμως δεν ταίριαζε στην εταιρεία. Περίμεναν ένα μαγικό μυστικό από τον Μαξ που θα τους επέτρεπε να δουλεύουν με τον παλιό τρόπο, αλλά μόνο αποτελεσματικά. Η Λένια ήταν ακόμα επικεφαλής του έργου και δεν έμαθε τίποτα. Από όλα όσα προσφέρθηκαν επέλεξε ξανά την εναλλακτική του. Όπως πάντα, αυτή ήταν η πιο επιλεκτική... τολμηρή απόφαση. Ο Λένια πίστευε ότι η εταιρεία του είχε έναν ιδιαίτερο δρόμο. Αγκαθωτό και γεμάτο παγόβουνα.

Στην πραγματικότητα, εκεί χωρίσαμε – κάναμε ό,τι μπορούσαμε.

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

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

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

Υ.Γ. Αν λοιπόν έχετε ερωτήσεις σχετικά με την υποδομή σας, μη διστάσετε να αφήσετε ένα αίτημα.

Έχουμε 2 δωρεάν ελέγχους το μήνα, ίσως το έργο σας να είναι ένας από αυτούς.

Πηγή: www.habr.com

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