Προγραμματισμός

5 κοινές παγίδες του CI / CD - και πώς να τις αποφύγετε

Οι φορητοί υπολογιστές μπορεί να είναι ένας από τους πιο τρελούς όρους στην ανάπτυξη λογισμικού, αλλά οι περισσότεροι από εμάς συμφωνούν ότι πέντε δραστηριότητες κάνουν τους devops αυτό που είναι: συνεχής ολοκλήρωση, συνεχής παράδοση, υποδομή cloud, αυτοματοποίηση δοκιμών και διαχείριση διαμόρφωσης. Εάν κάνετε αυτά τα πέντε πράγματα, κάνετε devops. Είναι σαφές ότι και τα πέντε είναι σημαντικά για να γίνουν σωστά, αλλά πολύ εύκολο να κάνουν λάθος. Συγκεκριμένα, η συνεχής ενσωμάτωση και η συνεχής παράδοση (CI / CD) μπορεί να είναι οι πιο δύσκολες κινήσεις του devops.

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

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

Έτσι, το CI / CD είναι μια διαδικασία για συνεχή ανάπτυξη, δοκιμή και παράδοση νέου κώδικα. Ορισμένες εταιρείες όπως το Facebook και το Netflix χρησιμοποιούν CI / CD για να ολοκληρώσουν 10 ή περισσότερες κυκλοφορίες την εβδομάδα. Άλλες εταιρείες δυσκολεύονται να επιτύχουν αυτόν τον ρυθμό επειδή υποκύπτουν σε μία ή περισσότερες από τις πέντε παγίδες που θα συζητήσω στη συνέχεια.

CI / CD pitfall # 1: Αυτοματοποίηση πρώτα των λανθασμένων διαδικασιών

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

Όταν ρωτάτε, "Αυτό πρέπει να αυτοματοποιηθεί τώρα;" εκτελέστε την ακόλουθη λίστα ελέγχου:

  1. Πόσο συχνά επαναλαμβάνεται η διαδικασία ή το σενάριο;
  2. Πόσο καιρό είναι η διαδικασία;
  3. Ποια άτομα και εξαρτήσεις πόρων εμπλέκονται στη διαδικασία; Προκαλούν καθυστερήσεις στο CI / CD;
  4. Είναι η διαδικασία επιρρεπής σε σφάλματα εάν δεν είναι αυτοματοποιημένη;
  5. Ποιο είναι το επείγον να αυτοματοποιηθεί η διαδικασία;

Χρησιμοποιώντας αυτήν τη λίστα ελέγχου, μπορείτε να δώσετε προτεραιότητα στα βήματα μιας εφαρμογής CI / CD. Πρώτα απ 'όλα, αυτοματοποιήστε τη διαδικασία σύνταξης κώδικα. Στην ιδανική περίπτωση, θα ενσωματώνετε τον κώδικα πολλές φορές την ημέρα (1). Χειροκίνητα, η διαδικασία διαρκεί μερικά λεπτά έως μερικές ώρες (2). Αυτό σταματά την έξοδο έως ότου ο μεταγλωττιστής ολοκληρώσει την εργασία (3). Είναι επίσης ευαίσθητο σε ανθρώπινο σφάλμα (4) και επειδή το CI / CD είναι ένα όνειρο χωρίς αυτοματοποιημένη ενσωμάτωση, αυτό είναι επείγον (5).

Μπορούμε να τρέξουμε την ίδια λίστα ελέγχου κατά τη δοκιμή. Καθώς μεταβαίνετε σε CI / CD, ίσως αναρωτιέστε: Πρέπει να αυτοματοποιήσουμε πρώτα τις λειτουργικές δοκιμές ή τις δοκιμές UI; Και τα δύο επαναλαμβάνονται τουλάχιστον μία φορά την ημέρα (1). Και οι δύο μπορούν να διαρκέσουν δύο έως τρεις ώρες για μια μεσαίου μεγέθους εφαρμογή (2). Περιλαμβάνουν όμως πολλές εξαρτήσεις (3). Εάν αυτοματοποιήσετε τις λειτουργικές δοκιμές, ενδέχεται να μην χρειάζεται να ενημερώνετε συχνά το σενάριο αυτοματοποίησης. Το περιβάλλον εργασίας χρήστη, από την άλλη πλευρά, αλλάζει συχνά και συνεπώς απαιτεί συχνές αλλαγές σεναρίων. Αν και οι δύο είναι επιρρεπείς σε σφάλματα (4), θα πρέπει να δώσετε προτεραιότητα στη λειτουργική δοκιμή πριν από τη δοκιμή διεπαφής χρήστη για να αξιοποιήσετε καλύτερα τους πόρους σας (5)

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

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

CI / CD pitfall # 2: Σύγχυση συνεχούς ανάπτυξης για συνεχή παράδοση

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

Οι εταιρείες πιστεύουν ότι εάν δεν ασκούν συνεχή ανάπτυξη, δεν κάνουν CD. Αποτυγχάνουν να διακρίνουν μεταξύ συνεχούς ανάπτυξης και συνεχούς παράδοσης.

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

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

Ενώ η συνεχής ανάπτυξη ενοχλεί τους περισσότερους οργανισμούς, η συνεχής παράδοση αντηχεί μαζί τους. Η συνεχής παράδοση τους δίνει τον έλεγχο της διάθεσης προϊόντων, της λειτουργικότητας και των παραγόντων κινδύνου. Υπάρχει χρόνος για δοκιμές alpha, για πελάτες beta, για πρώιμους χρήστες και ούτω καθεξής.

CI / CD pitfall # 3: Έλλειψη ουσιαστικών πινάκων ελέγχου και μετρήσεων

Σε εφαρμογές CI / CD, η ομάδα scrum μπορεί να δημιουργήσει έναν πίνακα ελέγχου πριν τα μέλη γνωρίζουν τι πρέπει να παρακολουθήσουν. Ως αποτέλεσμα, η ομάδα πέφτει θύμα μιας λογικής πλάνης: «Αυτές είναι οι μετρήσεις που έχουμε, οπότε πρέπει να είναι σημαντικές». Αντ 'αυτού, πραγματοποιήστε μια προοδευτική αξιολόγηση πριν σχεδιάζοντας ένα ταμπλό.

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

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

Αυτός ο πίνακας εργαλείων είναι πιθανώς χρήσιμος για έναν κύριο scrum, αλλά τι γίνεται με το VP ανάπτυξης ή το CTO; Εάν μια ομάδα scrum έχει 350 ώρες εργασίας μπροστά για ένα σπριντ δύο εβδομάδων, και τα 10 μέλη της είναι υπεύθυνα για 35 ώρες το καθένα, θα λάβουν έναν αντίστοιχο αριθμό σημείων ιστορίας. Η ανώτερη διαχείριση μπορεί να μην ενδιαφέρεται λιγότερο για την κατάσταση των σημείων ιστορίας και να είναι πιο περίεργη για το ποσοστό «εξάντλησης»: την ταχύτητα ολοκλήρωσης των εργασιών. Τα μέλη της ομάδας μεταφέρουν τα φορτία τους; Πόσο γρήγορα? Βελτιώνονται με την πάροδο του χρόνου;

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

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

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

CI / CD pitfall # 4: Έλλειψη συντονισμού μεταξύ συνεχούς ολοκλήρωσης και συνεχούς παράδοσης

Αυτή η παγίδα μας επαναφέρει στον ορισμό της συναίνεσης για τους devops, ο οποίος υποστηρίζει ότι η συνεχής ολοκλήρωση και η συνεχής παράδοση είναι δύο διαφορετικά στοιχεία. CI τροφές CD. Η εφαρμογή ενός αξιοπρεπούς αγωγού συνεχούς ολοκλήρωσης και ενός πλήρους συστήματος συνεχούς παράδοσης διαρκεί μήνες και απαιτεί συνεργασία. Διασφάλιση ποιότητας, η ομάδα devops, οι μηχανικοί ops, οι scrum master - όλοι πρέπει να συνεισφέρουν. Ίσως η πιο δύσκολη πτυχή του CI / CD είναι αυτός ο ανθρώπινος παρά παρά οποιαδήποτε τεχνική πρόκληση που έχουμε συζητήσει. Όπως δεν μπορείτε να προγραμματίσετε μια υγιή σχέση μεταξύ δύο ατόμων, δεν μπορείτε να αυτοματοποιήσετε τη συνεργασία και την επικοινωνία.

Για να μετρήσετε αυτό το επίπεδο συντονισμού, συγκρίνετε τη διαδικασία CI / CD με τα καλύτερα της επιχείρησης. Εταιρείες όπως το Netflix μπορούν να ολοκληρώσουν την ολοκλήρωση, τον έλεγχο και την παράδοση σε διάστημα δύο έως τριών ωρών. Καθιέρωσαν ένα σύστημα που περνά κώδικα από χέρι σε χέρι χωρίς αναποφασιστικότητα και συζήτηση. Όχι, δεν είναι 100 τοις εκατό αυτοματοποιημένο γιατί αυτό είναι αδύνατο με την τρέχουσα τεχνολογία.

CI / CD pitfall # 5: Εξισορρόπηση της συχνότητας εκτέλεσης εργασιών συνεχούς ολοκλήρωσης και αξιοποίησης πόρων

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

Επειδή αυτή η διαδικασία περιλαμβάνει πολλή χρήση πόρων (CPU, ισχύς, χρόνος), το λογισμικό θα πρέπει να χωριστεί σε μικρότερα στοιχεία για τη δημιουργία αγωγών ταχύτερης λειτουργίας. Εναλλακτικά, οι εργασίες συνεχούς ολοκλήρωσης θα πρέπει να σχεδιαστούν ώστε να κάνουν check-in σε παρτίδες που δοκιμάζονται πρώτα σε τοπικό επίπεδο. Ο στόχος είναι να βρεθεί μια ισορροπία μεταξύ της συχνότητας εκτέλεσης εργασιών συνεχούς ολοκλήρωσης και της χρήσης πόρων.

Κρατήστε τον στόχο

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

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

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

Ο Zubin Irani είναι συνιδρυτής και διευθύνων σύμβουλος του cPrime, μιας συμβουλευτικής υπηρεσίας πλήρους εξυπηρέτησης που υλοποιεί ευέλικτους μετασχηματισμούς και προσφέρει ευέλικτες λύσεις για περισσότερες από 50 εταιρείες Fortune 100 και πολλούς από τους μεγαλύτερους εργοδότες της Silicon Valley.

Το New Tech Forum παρέχει έναν χώρο για να εξερευνήσετε και να συζητήσετε την αναδυόμενη τεχνολογία σε πρωτοφανές βάθος και εύρος. Η επιλογή είναι υποκειμενική, με βάση την επιλογή των τεχνολογιών που πιστεύουμε ότι είναι σημαντικές και έχουν μεγάλο ενδιαφέρον για τους αναγνώστες. δεν αποδέχεται ασφάλεια μάρκετινγκ για δημοσίευση και διατηρεί το δικαίωμα να επεξεργαστεί όλο το περιεχόμενο. Στείλτε όλες τις ερωτήσεις στο [email protected]