Κατανόηση της συνεχούς ενοποίησης και της συνεχούς ανάπτυξης

Ακούσατε CI/CD αλλά δεν είστε σίγουροι τι είναι;

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

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

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

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

Ποια είναι η λύση;

Συνεχής ενσωμάτωση

Για να αποτρέψω τα σενάρια που ανέφερα παραπάνω? Οι ομάδες μηχανικών μπορούν να υιοθετήσουν την πρακτική που ονομάζεται συνεχής ενοποίηση – όπως υποδηλώνει το όνομα, περιλαμβάνει τη συνεχή ενσωμάτωση των αλλαγών κώδικα που πραγματοποιούνται από προγραμματιστές στο κοινό υποκατάστημα/αποθήκη. Ο κωδικός που πρόκειται να ενσωματωθεί πρέπει να υποβληθεί σε επαληθευμένη δοκιμή για να διασφαλιστεί ότι δεν σπάει την εφαρμογή. Μόνο όταν περάσει το τεστ ενσωματώνεται

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

  Πώς μπορώ να αποσυνδεθώ από το Outlook Mobile

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

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

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

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

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

Τύποι δοκιμών

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

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

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

Εργαλεία συνεχούς ενοποίησης

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

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

Εάν είστε νέος στο Jenkins, τότε θα πρότεινα να το πάρετε Μάθημα Udemy για να μάθετε CI με Java και .NET.

Συνεχής Ανάπτυξη

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

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

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

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

  • Οι αυτοματοποιημένες δοκιμές είναι η βασική ραχοκοκαλιά όλων των συνεχών πρακτικών μηχανικής. Στην περίπτωση συνεχούς ανάπτυξης, ο κώδικας που θα αναπτυχθεί πρέπει να ανταποκρίνεται στο πρότυπο που έχει θέσει η ομάδα για αυτό που σκοπεύει να προωθήσει στους τελικούς χρήστες. Στην ιδανική περίπτωση, εάν μια νέα αλλαγή είναι κάτω από το όριο, η δοκιμή θα πρέπει να αποτύχει και να μην ενσωματωθεί. Διαφορετικά, ενσωματώνεται.
  • Παρά το γεγονός ότι υπάρχουν αυτοματοποιημένες δοκιμές back-to-back, είναι πιθανό ορισμένα σφάλματα να γλιστρήσουν στο περιβάλλον παραγωγής. Για αυτό, είναι απαραίτητο η ομάδα να είναι σε θέση να αναιρέσει μια αλλαγή που έχει γίνει – να αναιρέσει μια ανάπτυξη. Αυτό θα πρέπει να επαναφέρει τον κωδικό παραγωγής σε αυτό που ήταν πριν γίνει η νέα αλλαγή.
  • Απαιτούνται συστήματα παρακολούθησης για την παρακολούθηση των αλλαγών που έχουν ωθηθεί στο περιβάλλον παραγωγής. Αυτός είναι ο τρόπος με τον οποίο η ομάδα μπορεί να παρακολουθεί σφάλματα που αντιμετωπίζουν οι χρήστες όταν κάνουν χρήση των αναπτυσσόμενων αλλαγών.
  Πώς να μοιραστείτε την οθόνη του Mac σας με άλλο Mac

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

συμπέρασμα

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

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

Μπορείτε επίσης να μάθετε πώς να κλιμακώνετε και να βελτιστοποιείτε το CI/CD.

Εάν είστε προγραμματιστής και ενδιαφέρεστε να μάθετε CI/CD, τότε ρίξτε μια ματιά σε αυτό λαμπρή πορεία.

Σας άρεσε να διαβάζετε το άρθρο; Τι θα λέγατε να μοιράζεστε με τον κόσμο;