Οι προγραμματιστές είναι από τον Άρη, οι διαχειριστές είναι από την Venus

Οι προγραμματιστές είναι από τον Άρη, οι διαχειριστές είναι από την Venus

Οι συμπτώσεις είναι τυχαίες, και όντως ήταν σε άλλο πλανήτη...

Θα ήθελα να μοιραστώ τρεις ιστορίες επιτυχίας και αποτυχίας σχετικά με το πώς λειτουργεί ένας προγραμματιστής backend σε μια ομάδα με διαχειριστές.

Η ιστορία πρώτα.
Web studio, ο αριθμός των εργαζομένων μπορεί να μετρηθεί με το ένα χέρι. Σήμερα είσαι σχεδιαστής layout, αύριο είσαι backender, μεθαύριο είσαι admin. Από τη μία πλευρά, μπορείτε να αποκτήσετε τεράστια εμπειρία. Από την άλλη πλευρά, υπάρχει έλλειψη ικανότητας σε όλους τους τομείς. Θυμάμαι ακόμα την πρώτη μέρα της δουλειάς, είμαι ακόμα πράσινος, το αφεντικό λέει: «Ανοιχτό στόκο», αλλά δεν ξέρω τι είναι. Η επικοινωνία με τους διαχειριστές αποκλείεται, γιατί είσαι διαχειριστής ο ίδιος. Ας εξετάσουμε τα πλεονεκτήματα και τα μειονεκτήματα αυτής της κατάστασης.

+ Όλη η εξουσία είναι στα χέρια σας.
+ Δεν χρειάζεται να ικετεύετε κανέναν για πρόσβαση στον διακομιστή.
+ Γρήγορος χρόνος αντίδρασης προς όλες τις κατευθύνσεις.
+ Βελτιώνει καλά τις δεξιότητες.
+ Να έχετε πλήρη κατανόηση της αρχιτεκτονικής του προϊόντος.

— Υψηλή ευθύνη.
— Κίνδυνος θραύσης της παραγωγής.
— Είναι δύσκολο να είσαι καλός ειδικός σε όλους τους τομείς.

Δεν ενδιαφέρομαι, ας προχωρήσουμε

Η δεύτερη ιστορία.
Μεγάλη εταιρεία, μεγάλο έργο. Υπάρχει τμήμα διοίκησης με 5-7 υπαλλήλους και αρκετές ομάδες ανάπτυξης. Όταν έρχεστε να δουλέψετε σε μια τέτοια εταιρεία, κάθε διαχειριστής πιστεύει ότι δεν ήρθατε εδώ για να δουλέψετε σε ένα προϊόν, αλλά για να σπάσετε κάτι. Ούτε η υπογεγραμμένη NDA ούτε η επιλογή στη συνέντευξη υποδηλώνουν διαφορετικά. Όχι, αυτός ο άντρας ήρθε εδώ με τα βρώμικα χεράκια του για να καταστρέψει την παραγωγή των φιλιών μας. Επομένως, με ένα τέτοιο άτομο χρειάζεστε μια ελάχιστη επικοινωνία· τουλάχιστον, μπορείτε να ρίξετε ένα αυτοκόλλητο ως απάντηση. Μην απαντάτε σε ερωτήσεις σχετικά με την αρχιτεκτονική του έργου. Συνιστάται να μην παραχωρήσετε πρόσβαση μέχρι να το ζητήσει ο επικεφαλής της ομάδας. Και όταν ζητήσει, θα το επιστρέψει με ακόμη λιγότερα προνόμια από αυτά που ζήτησαν. Σχεδόν όλη η επικοινωνία με τέτοιους διαχειριστές απορροφάται από τη μαύρη τρύπα μεταξύ του τμήματος ανάπτυξης και του τμήματος διαχείρισης. Είναι αδύνατο να επιλυθούν τα προβλήματα έγκαιρα. Αλλά δεν μπορείτε να έρθετε αυτοπροσώπως - οι διαχειριστές είναι πολύ απασχολημένοι 24/7. (Τι κάνετε συνέχεια;) Μερικά χαρακτηριστικά απόδοσης:

  • Ο μέσος χρόνος ανάπτυξης στην παραγωγή είναι 4-5 ώρες
  • Μέγιστος χρόνος ανάπτυξης στην παραγωγή 9 ώρες
  • Για έναν προγραμματιστή, μια εφαρμογή σε παραγωγή είναι ένα μαύρο κουτί, όπως ακριβώς ο ίδιος ο διακομιστής παραγωγής. Πόσοι είναι συνολικά;
  • Χαμηλή ποιότητα εκδόσεων, συχνά λάθη
  • Ο προγραμματιστής δεν συμμετέχει στη διαδικασία έκδοσης

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

Πράξη 1. Ο διαχειριστής είναι αόρατος.
Ημέρα κυκλοφορίας, ο προγραμματιστής και ο διαχειριστής δεν επικοινωνούν. Ο διαχειριστής δεν έχει ερωτήσεις. Αλλά καταλαβαίνετε το γιατί αργότερα. Ο διαχειριστής είναι άτομο με αρχές, δεν έχει αγγελιοφόρους, δεν δίνει τον αριθμό τηλεφώνου του σε κανέναν και δεν έχει προφίλ στα κοινωνικά δίκτυα. Δεν υπάρχει πουθενά ούτε μια φωτογραφία του, πώς μοιάζεις φίλε; Καθόμαστε με τον υπεύθυνο διευθυντή για περίπου 15 λεπτά σαστισμένοι, προσπαθώντας να επικοινωνήσουμε με αυτό το Voyager 1 και μετά εμφανίζεται ένα μήνυμα στο εταιρικό email ότι τελείωσε. Θα αλληλογραφούμε με ταχυδρομείο; Γιατί όχι? Βολικό, έτσι δεν είναι; Λοιπόν, εντάξει, ας ηρεμήσουμε. Η διαδικασία είναι ήδη σε εξέλιξη, δεν υπάρχει γυρισμός. Διαβάστε ξανά το μήνυμα. "Τελείωσα". Τι τελείωσες; Οπου? Που να σε ψάξω; Εδώ καταλαβαίνετε γιατί οι 4 ώρες για απελευθέρωση είναι φυσιολογικές. Παίρνουμε ένα αναπτυξιακό σοκ, αλλά τελειώνουμε την κυκλοφορία. Δεν υπάρχει πλέον καμία επιθυμία απελευθέρωσης.

Πράξη 2. Όχι αυτή η έκδοση.
Η επόμενη κυκλοφορία. Έχοντας αποκτήσει εμπειρία, αρχίζουμε να δημιουργούμε λίστες με το απαραίτητο λογισμικό και βιβλιοθήκες για τον διακομιστή για διαχειριστές, υποδεικνύοντας τις εκδόσεις για ορισμένους. Όπως πάντα, λαμβάνουμε ένα αδύναμο ραδιοφωνικό σήμα ότι ο διαχειριστής έχει τελειώσει κάτι εκεί. Ξεκινά το τεστ παλινδρόμησης, το οποίο διαρκεί περίπου μία ώρα. Όλα φαίνεται να λειτουργούν, αλλά υπάρχει ένα κρίσιμο σφάλμα. Η σημαντική λειτουργικότητα δεν λειτουργεί. Οι επόμενες ώρες ήταν χορός με ντέφια, μαντεία σε κατακάθι καφέ και λεπτομερής ανασκόπηση κάθε κωδικού. Ο διαχειριστής λέει ότι έχει κάνει τα πάντα. Η εφαρμογή που γράφτηκε από στραβούς προγραμματιστές δεν λειτουργεί, αλλά ο διακομιστής λειτουργεί. Υπάρχουν ερωτήσεις για αυτόν; Στο τέλος μιας ώρας, ζητάμε από τον διαχειριστή να στείλει την έκδοση της βιβλιοθήκης στον διακομιστή παραγωγής στο chat και το bingo - δεν είναι αυτή που χρειαζόμαστε. Ζητάμε από τον διαχειριστή να εγκαταστήσει την απαιτούμενη έκδοση, αλλά σε απάντηση λαμβάνουμε ότι δεν μπορεί να το κάνει λόγω της απουσίας αυτής της έκδοσης στη διαχείριση πακέτων του λειτουργικού συστήματος. Εδώ, από τις εσοχές της μνήμης του, ο διαχειριστής θυμάται ότι ένας άλλος διαχειριστής είχε ήδη λύσει αυτό το πρόβλημα συναρμολογώντας απλώς την απαιτούμενη έκδοση με το χέρι. Αλλά όχι, οι δικοί μας δεν θα το κάνουν αυτό. Οι κανονισμοί απαγορεύουν. Karl, καθόμαστε εδώ για αρκετές ώρες, ποιο είναι το χρονικό όριο; Παίρνουμε άλλο ένα σοκ και με κάποιο τρόπο τελειώνουμε την κυκλοφορία.

Πράξη 3, σύντομη
Επείγον εισιτήριο, η βασική λειτουργικότητα δεν λειτουργεί για έναν από τους χρήστες στην παραγωγή. Ξοδεύουμε μερικές ώρες για να τσεκάρουμε και να τσεκάρουμε. Σε ένα περιβάλλον ανάπτυξης, όλα λειτουργούν. Υπάρχει σαφής κατανόηση ότι θα ήταν καλή ιδέα να εξετάσετε τα αρχεία καταγραφής php-fpm. Δεν υπήρχαν συστήματα καταγραφής όπως το ΕΛΚ ή ο Προμηθέας στο έργο εκείνη την εποχή. Ανοίγουμε ένα εισιτήριο στο τμήμα διαχείρισης ώστε να δίνουν πρόσβαση στα αρχεία καταγραφής php-fpm στον διακομιστή. Εδώ πρέπει να καταλάβετε ότι ζητάμε πρόσβαση για κάποιο λόγο, δεν θυμάστε ότι η μαύρη τρύπα και οι διαχειριστές είναι απασχολημένοι 24/7; Αν τους ζητήσετε να κοιτάξουν τα ίδια τα κούτσουρα, τότε αυτό είναι μια εργασία με προτεραιότητα «όχι σε αυτή τη ζωή». Το εισιτήριο δημιουργήθηκε, λάβαμε μια άμεση απάντηση από τον επικεφαλής του τμήματος διαχείρισης: "Δεν πρέπει να χρειάζεστε πρόσβαση στα αρχεία καταγραφής παραγωγής, γράψτε χωρίς σφάλματα." Μια κουρτίνα.

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

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

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

Τι καναμε?
Για κάθε έκδοση, δημιουργήθηκε μια λίστα με Σημειώσεις Έκδοσης, η οποία περιελάμβανε μια λίστα εργασιών που πρέπει να γίνουν στον διακομιστή για να λειτουργήσει η επόμενη έκδοση. Η λίστα περιείχε πολλές ενότητες, εργασίες που θα έπρεπε να εκτελεστούν από τον διαχειριστή, τον υπεύθυνο για την κυκλοφορία και τον προγραμματιστή. Οι προγραμματιστές έλαβαν πρόσβαση χωρίς root σε όλους τους διακομιστές παραγωγής, γεγονός που επιτάχυνε την ανάπτυξη γενικά και την επίλυση προβλημάτων ειδικότερα. Οι προγραμματιστές κατανοούν επίσης πώς λειτουργεί η παραγωγή, σε ποιες υπηρεσίες χωρίζεται, πού και πόσο κοστίζουν τα αντίγραφα. Μερικά από τα φορτία μάχης έχουν γίνει πιο ξεκάθαρα, γεγονός που αναμφίβολα επηρεάζει την ποιότητα του κώδικα. Η επικοινωνία κατά τη διαδικασία απελευθέρωσης πραγματοποιήθηκε στη συνομιλία ενός από τους άμεσους αγγελιοφόρους. Πρώτον, είχαμε ένα αρχείο καταγραφής όλων των ενεργειών και, δεύτερον, η επικοινωνία γινόταν σε πιο στενό περιβάλλον. Η ύπαρξη ιστορικού ενεργειών έχει επιτρέψει περισσότερες από μία φορές στους νέους υπαλλήλους να επιλύουν προβλήματα πιο γρήγορα. Είναι ένα παράδοξο, αλλά αυτό βοήθησε συχνά τους ίδιους τους διαχειριστές. Δεν θα αναλάβω να πω με σιγουριά, αλλά μου φαίνεται ότι οι διαχειριστές έχουν αρχίσει να καταλαβαίνουν περισσότερο πώς λειτουργεί το έργο και πώς είναι γραμμένο. Μερικές φορές μοιραζόμασταν ακόμη και κάποιες λεπτομέρειες μεταξύ μας. Ο μέσος χρόνος απελευθέρωσης μειώθηκε σε μία ώρα. Μερικές φορές τελειώναμε σε 30-40 λεπτά. Ο αριθμός των σφαλμάτων έχει μειωθεί σημαντικά, αν όχι δεκαπλασιάστηκε. Φυσικά και άλλοι παράγοντες επηρέασαν τη μείωση του χρόνου απελευθέρωσης, όπως οι αυτόματες δοκιμές. Μετά από κάθε κυκλοφορία, αρχίσαμε να κάνουμε αναδρομικά. Για να έχει ολόκληρη η ομάδα μια ιδέα για το τι νέο υπάρχει, τι έχει αλλάξει και τι έχει αφαιρεθεί. Δυστυχώς, οι διαχειριστές δεν έρχονταν πάντα σε αυτούς, καλά, οι διαχειριστές είναι απασχολημένοι... Η ικανοποίηση από τη δουλειά μου ως προγραμματιστής έχει αναμφίβολα αυξηθεί. Όταν μπορείτε να λύσετε γρήγορα σχεδόν οποιοδήποτε πρόβλημα που βρίσκεται στον τομέα των αρμοδιοτήτων σας, νιώθετε ότι είστε στην κορυφή. Αργότερα, θα καταλάβω ότι σε κάποιο βαθμό εισαγάγαμε μια κουλτούρα devops, όχι εντελώς φυσικά, αλλά ακόμη και αυτή η αρχή της μεταμόρφωσης ήταν εντυπωσιακή.

Ιστορία τρίτη
Ξεκίνα. Ένας διαχειριστής, μικρό τμήμα ανάπτυξης. Κατά την άφιξη είμαι ένα πλήρες μηδέν, γιατί... Δεν έχω πρόσβαση πουθενά εκτός από το mail. Γράφουμε στον διαχειριστή και ζητάμε πρόσβαση. Επιπλέον, υπάρχουν πληροφορίες ότι γνωρίζει τον νέο υπάλληλο και την ανάγκη έκδοσης logins/passwords. Δίνουν πρόσβαση από το αποθετήριο και το VPN. Γιατί να δώσετε πρόσβαση σε wiki, teamcity, rundesk; Άχρηστα πράγματα για ένα άτομο που κλήθηκε να γράψει ολόκληρο το κομμάτι του backend. Μόνο με την πάροδο του χρόνου αποκτούμε πρόσβαση σε ορισμένα εργαλεία. Η άφιξη, φυσικά, αντιμετωπίστηκε με δυσπιστία. Προσπαθώ να αποκτήσω σιγά σιγά μια αίσθηση για το πώς λειτουργεί η υποδομή του έργου μέσω συνομιλιών και βασικών ερωτήσεων. Βασικά δεν αναγνωρίζω τίποτα. Η παραγωγή είναι το ίδιο μαύρο κουτί όπως πριν. Αλλά περισσότερο από αυτό, ακόμη και οι διακομιστές σταδίου που χρησιμοποιούνται για τη δοκιμή είναι ένα μαύρο κουτί. Δεν μπορούμε να κάνουμε τίποτα άλλο από το να αναπτύξουμε έναν κλάδο από το Git εκεί. Επίσης, δεν μπορούμε να διαμορφώσουμε την εφαρμογή μας όπως αρχεία .env. Δεν παρέχεται πρόσβαση για τέτοιες λειτουργίες. Πρέπει να ζητήσετε να αλλάξετε μια γραμμή στη διαμόρφωση της εφαρμογής σας στον δοκιμαστικό διακομιστή. (Υπάρχει μια θεωρία ότι είναι ζωτικής σημασίας για τους διαχειριστές να αισθάνονται σημαντικοί για το έργο· εάν δεν τους ζητηθεί να αλλάξουν γραμμές στις ρυθμίσεις παραμέτρων, απλώς δεν θα χρειαστούν). Λοιπόν, όπως πάντα, δεν είναι βολικό; Αυτό γίνεται γρήγορα βαρετό, μετά από μια άμεση συνομιλία με τον διαχειριστή ανακαλύπτουμε ότι οι προγραμματιστές γεννήθηκαν για να γράφουν κακό κώδικα, είναι από τη φύση τους ανίκανα άτομα και είναι καλύτερα να τους κρατήσουμε μακριά από την παραγωγή. Αλλά εδώ και από δοκιμαστικούς διακομιστές, για παν ενδεχόμενο. Η σύγκρουση κλιμακώνεται γρήγορα. Δεν υπάρχει επικοινωνία με τον διαχειριστή. Η κατάσταση επιδεινώνεται από το γεγονός ότι είναι μόνος. Η παρακάτω είναι μια τυπική εικόνα. Ελευθέρωση. Ορισμένες λειτουργίες δεν λειτουργούν. Μας παίρνει πολύ χρόνο για να καταλάβουμε τι συμβαίνει, διάφορες ιδέες από προγραμματιστές ρίχνονται στο chat, αλλά ο διαχειριστής σε μια τέτοια κατάσταση συνήθως υποθέτει ότι φταίνε οι προγραμματιστές. Μετά γράφει στο τσατ, περίμενε, τον διόρθωσα. Όταν μας ζητήθηκε να αφήσουμε πίσω μας μια ιστορία με πληροφορίες για το ποιο ήταν το πρόβλημα, λαμβάνουμε τοξικές δικαιολογίες. Όπως, μην κολλάτε τη μύτη σας εκεί που δεν ανήκει. Οι προγραμματιστές πρέπει να γράψουν κώδικα. Η κατάσταση όταν πολλές κινήσεις του σώματος σε ένα έργο περνούν από ένα μόνο άτομο και μόνο αυτός έχει πρόσβαση για να εκτελέσει τις επεμβάσεις που χρειάζονται όλοι είναι εξαιρετικά λυπηρό. Ένα τέτοιο άτομο είναι ένα τρομερό μποτιλιάρισμα. Εάν οι ιδέες του Devops προσπαθούν να μειώσουν το χρόνο για την αγορά, τότε αυτοί οι άνθρωποι είναι ο χειρότερος εχθρός των ιδεών του Devops. Δυστυχώς, η αυλαία κλείνει εδώ.

Υ.Γ Αφού μίλησα λίγο για προγραμματιστές εναντίον διαχειριστών σε συνομιλίες με ανθρώπους, συνάντησα ανθρώπους που συμμερίστηκαν τον πόνο μου. Υπήρχαν όμως και εκείνοι που είπαν ότι δεν είχαν συναντήσει ποτέ κάτι τέτοιο. Σε ένα συνέδριο devops, ρώτησα τον Anton Isanin (Alfa Bank) πώς αντιμετώπισαν το πρόβλημα του bottleneck με τη μορφή διαχειριστών, στους οποίους είπε: «Τους αντικαταστήσαμε με κουμπιά». Παρεμπιπτόντως podcast με τη συμμετοχή του. Θα ήθελα να πιστεύω ότι υπάρχουν πολύ περισσότεροι καλοί διαχειριστές παρά εχθροί. Και ναι, η εικόνα στην αρχή είναι μια πραγματική αντιστοιχία.

Πηγή: www.habr.com

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