Πώς να δημιουργήσετε μια ολοκληρωμένη εσωτερική ανάπτυξη χρησιμοποιώντας την εμπειρία DevOps - VTB

Οι πρακτικές DevOps λειτουργούν. Ήμασταν πεπεισμένοι για αυτό όταν μειώσαμε τον χρόνο εγκατάστασης απελευθέρωσης κατά 10 φορές. Στο σύστημα προφίλ FIS, το οποίο χρησιμοποιούμε στο VTB, η εγκατάσταση διαρκεί πλέον 90 λεπτά αντί για 10. Ο χρόνος δημιουργίας έκδοσης μειώθηκε από δύο εβδομάδες σε δύο ημέρες. Ο αριθμός των επίμονων ελαττωμάτων εφαρμογής έχει μειωθεί σχεδόν στο ελάχιστο. Για να ξεφύγουμε από τη «χειρωνακτική εργασία» και να εξαλείψουμε την εξάρτηση από τον πωλητή, έπρεπε να δουλέψουμε με πατερίτσες και να βρούμε απροσδόκητες λύσεις. Κάτω από την περικοπή είναι μια λεπτομερής ιστορία για το πώς δημιουργήσαμε μια ολοκληρωμένη εσωτερική ανάπτυξη.

Πώς να δημιουργήσετε μια ολοκληρωμένη εσωτερική ανάπτυξη χρησιμοποιώντας την εμπειρία DevOps - VTB
 

Πρόλογος: Το DevOps είναι μια φιλοσοφία

Τον περασμένο χρόνο, κάναμε πολλή δουλειά για να οργανώσουμε την εσωτερική ανάπτυξη και εφαρμογή των πρακτικών DevOps στο VTB:

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

Μία από τις πιο δύσκολες στην οργάνωση εσωτερικής ανάπτυξης και εφαρμογής πρακτικών DevSecOps αποδείχθηκε ότι ήταν το σύστημα προφίλ FIS - ένας επεξεργαστής προϊόντων λιανικής σε ένα μη σχετιζόμενο DBMS. Ωστόσο, καταφέραμε να δημιουργήσουμε την ανάπτυξη, να ξεκινήσουμε τη διοχέτευση, να εγκαταστήσουμε μεμονωμένα πακέτα μη κυκλοφορίας στο προϊόν και μάθαμε πώς να συναρμολογούμε εκδόσεις. Η εργασία δεν ήταν εύκολη, αλλά ενδιαφέρουσα και χωρίς προφανείς περιορισμούς στην εφαρμογή: εδώ είναι το σύστημα - πρέπει να δημιουργήσετε μια εσωτερική ανάπτυξη. Η μόνη προϋπόθεση είναι να χρησιμοποιήσετε το CD πριν από ένα παραγωγικό περιβάλλον.

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

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

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

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

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

Πού ξεκινά η εσωτερική ανάπτυξη; 

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

  • Εξωτική γλώσσα (MUMPS);
  • Διασύνδεση κονσόλας;
  • Έλλειψη ενοποίησης με δημοφιλή εργαλεία και πλαίσια αυτοματισμού.
  • Όγκος δεδομένων σε δεκάδες terabyte.
  • Φορτίο πάνω από 2 εκατομμύρια λειτουργίες ανά ώρα.
  • Σημασία - Επιχειρηματική-Κρίσιμη.

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

  • Μελέτησε την τεκμηρίωση και τα βασικά της δημιουργίας κώδικα.
  • Μελετήσαμε το σύντομο μάθημα για την ανάπτυξη που λάβαμε από τον πωλητή.
  • Κατακτημένες δεξιότητες αρχικής ανάπτυξης.
  • Συντάξαμε ένα εκπαιδευτικό εγχειρίδιο για νέα μέλη της ομάδας.
  • Συμφωνήσαμε να συμπεριλάβουμε την ομάδα σε λειτουργία «μάχης».
  • Επιλύθηκε το πρόβλημα με τον ποιοτικό έλεγχο κώδικα.
  • Οργανώσαμε ένα περίπτερο για ανάπτυξη.

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

Μετανάστευση αποθετηρίου και αυτόματες δοκιμές

Η πρώτη εργασία DevOps είναι το αποθετήριο. Συμφωνήσαμε γρήγορα για την παροχή πρόσβασης, αλλά ήταν απαραίτητο να μεταφερθούμε από το τρέχον SVN με έναν κλάδο κορμού στο Git-στόχο μας με τη μετάβαση σε ένα μοντέλο πολλών κλάδων και την ανάπτυξη του Git Flow. Έχουμε επίσης 2 ομάδες με τη δική τους υποδομή, καθώς και μέρος της ομάδας του πωλητή στο εξωτερικό. Έπρεπε να ζήσω με δύο Gits και να εξασφαλίσω τον συγχρονισμό. Σε μια τέτοια κατάσταση, ήταν το μικρότερο από τα δύο κακά.

Η μετανάστευση του αποθετηρίου αναβλήθηκε επανειλημμένα· ολοκληρώθηκε μόλις τον Απρίλιο, με τη βοήθεια συναδέλφων από την πρώτη γραμμή. Με το Git Flow, αποφασίσαμε να διατηρήσουμε τα πράγματα απλά για αρχή και εγκαταστήσαμε τον κλασικό συνδυασμό με την επείγουσα επιδιόρθωση, την ανάπτυξη και την κυκλοφορία. Αποφάσισαν να εγκαταλείψουν τον κύριο (γνωστός και ως prod-like). Παρακάτω θα εξηγήσουμε γιατί αυτή η επιλογή αποδείχθηκε η βέλτιστη για εμάς. Ως εργαζόμενος χρησιμοποιήθηκε ένα εξωτερικό αποθετήριο που ανήκει στον προμηθευτή, κοινό για δύο ομάδες. Συγχρονίστηκε με το εσωτερικό αποθετήριο σύμφωνα με ένα πρόγραμμα. Τώρα με το Git και το Gitlab ήταν δυνατό να αυτοματοποιηθούν οι διαδικασίες.

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

Πώς ήταν: το μοντέλο πριν από τον αυτοματισμό

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

Η συναρμολόγηση πραγματοποιήθηκε σε επίπεδο μεμονωμένων παραδόσεων, οι οποίες ήταν ανεξάρτητα αντικείμενα. Οποιαδήποτε αλλαγή είναι μια νέα παράδοση. Μεταξύ άλλων, 60–70 τεχνικές εκδόσεις προστέθηκαν στα 10-15 πακέτα της κύριας σύνθεσης κυκλοφορίας - εκδόσεις που λαμβάνονται όταν προστίθεται ή εξαιρείται κάτι από την κυκλοφορία και αντανακλούν τις αλλαγές στις πωλήσεις εκτός εκδόσεων.

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

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

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

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

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

Πρώτες ενημερώσεις: δέσμευση συναρμολόγησης και παράδοσης

Ο αυτοματισμός ξεκίνησε με τη μετάδοση κώδικα μέσω ενός σωλήνα κατά μήκος αυτής της διαδρομής:

  • Παραλάβετε την τελική παράδοση από την αποθήκευση.
  • Εγκαταστήστε το σε ειδικό περιβάλλον.
  • Εκτέλεση αυτόματων δοκιμών.
  • Αξιολογήστε το αποτέλεσμα εγκατάστασης.
  • Καλέστε την ακόλουθη διοχέτευση στο πλάι της εντολής δοκιμής.

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

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

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

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

Η τελική λύση: αθροιστικά πακέτα εγκατάστασης 

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

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

Με λίγο περισσότερο από έναν μήνα να απομένει, οι προμήθειες που είχαν επιλεγεί με το χέρι έδειχναν ξεκάθαρα ότι ο χρόνος τελειώνει. Αποφάσισαν να κάνουν την κατασκευή από τον κλάδο απελευθέρωσης, αλλά γιατί να διαχωριστεί; Δεν έχουμε Prod-like και τα υπάρχοντα υποκαταστήματα δεν είναι καλά - υπάρχει πολύς περιττός κώδικας. Χρειάζεται επειγόντως να κόψουμε τα prod-likes, και αυτό είναι πάνω από τρεις χιλιάδες δεσμεύσεις. Η συναρμολόγηση με το χέρι δεν είναι καθόλου επιλογή. Σχεδιάσαμε ένα σενάριο που διατρέχει το αρχείο καταγραφής εγκατάστασης του προϊόντος και συλλέγει δεσμεύσεις στον κλάδο. Την τρίτη φορά λειτούργησε σωστά και αφού «τελείωσε με αρχείο» το κλαδί ήταν έτοιμο. 

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

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

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

Πρώτη φορά, γρήγορα και χωρίς λάθη

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

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

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

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

Αποτελέσματα και συμπεράσματα

Σε λιγότερο από ένα χρόνο καταφέραμε:

  • Δημιουργήστε μια ολοκληρωμένη εσωτερική ανάπτυξη χρησιμοποιώντας ένα εξωτικό σύστημα.
  • Εξάλειψη της κρίσιμης εξάρτησης από τον προμηθευτή.
  • Εκκινήστε το CI/CD για μια πολύ εχθρική κληρονομιά.
  • Βελτίωση των διαδικασιών υλοποίησης σε νέο τεχνικό επίπεδο.
  • Σημαντική μείωση του χρόνου ανάπτυξης.
  • Σημαντική μείωση του αριθμού των σφαλμάτων υλοποίησης.
  • Δηλώστε με σιγουριά τον εαυτό σας ως κορυφαίος εμπειρογνώμονας ανάπτυξης.

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

Πηγή: www.habr.com

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