8 Βασικές προκλήσεις στην υιοθέτηση DevOps: Μέρος 2 - Λύσεις

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

Η αλλαγή είναι πιο δύσκολη στην αρχή, πιο αμφίβολη στη μέση και το καλύτερο στο τέλος. - Robin S. Sharma

1. Δημιουργία λειτουργίας πολιτισμού σύμφωνα με τις αρχές DevOps

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

Μάθηση και κοινότητες πρακτικής

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

Γνωσιακή Βάση DevOps & Συχνές Ερωτήσεις

Οι ομάδες DevOps μπορούν να δημιουργήσουν μια βάση γνώσεων ή Συχνές Ερωτήσεις (FAQ) και να μοιραστούν με όλους τους ανθρώπους του οργανισμού, οπότε όλοι γνωρίζουν από πού να αποκτήσουν πληροφορίες που σχετίζονται με DevOps όπου το χρειάζονται. Η ορατότητα και η εύκολη πρόσβαση στις πληροφορίες που τους παροτρύνουν να ψάξουν και να το διαβάσουν από μόνα τους και ακόμη και να συνεισφέρουν. Αυτού του είδους οι πληροφορίες μπορούν να πραγματοποιηθούν σε συνεργατικές πλατφόρμες όπως η Atlassian Confluence ή οι ομάδες της Microsoft.

Εφαρμογή των πρακτικών καλλιέργειας του οργανισμού Westrum

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

Εδώ πώς μπορείτε να οικοδομήσετε ένα γενετικό πολιτισμό?

2.Adresing Αντίσταση στην Αλλαγή

Οι ηγέτες πρέπει να περιμένουν ότι οι άνθρωποι θα αντισταθούν στην αλλαγή. Σύμφωνα με τον DevOpsologist, Philippa Hale, στο άρθρο της σχετικά με τα εργαλεία χαρτογράφησης των ενδιαφερομένων και συζήτησε πώς μπορούμε να αντιμετωπίσουμε τις διαθέσεις και τα συναισθήματα ορισμένων ανθρώπων από τις ομάδες, τότε μπορούμε να εφαρμόσουμε διαφορετικές στρατηγικές δέσμευσης για να τις προσεγγίσουμε προς τις πρωτοβουλίες DevOps. Υπάρχουν 6 "προφίλ συμπεριφοράς" και πώς μπορούμε να ασχοληθούμε μαζί τους όπως παρακάτω.

Μη συνδεδεμένο

Θεατές

Κυνηγοί

Κριτικοί

Ενθουσιώτες

Δικηγόροι (Πρωταθλητές / Εμπειρογνώμονες)

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

3.Αναφέρετε σαφήνεια στο όραμα DevOps

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

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

4. Δημιουργία συνεργασίας μεταξύ ομάδων

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

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

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

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

5.Κυθοποίηση των περιβαλλόντων

Ένα περιβάλλον είναι μια συλλογή πόρων ή στοχευμένων χώρων που θέλετε να μετατρέψετε από κώδικα σε πραγματικό προϊόν μέσω του αγωγού. Το περιβάλλον μπορεί να περιλαμβάνει εικονικές μηχανές (VM), διακομιστές βάσεων δεδομένων, υπηρεσίες τρίτου μέρους κ.λπ. Παρακάτω είναι ένα παράδειγμα περιβαλλοντικών σταδίων με τη χρήση του, χρήστη / persona και υπεύθυνος διατήρησης του περιβάλλοντος.

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

  1. Εγγραφή / ιστορικό ανάπτυξης - Όλες οι λεπτομέρειες εκτέλεσης της αγωγού καταγράφονται σε εργαλεία CI / CD για τους πόρους της.
  2. Ανιχνευσιμότητα - Επιτρέπει σε κάποιον να παρακολουθεί εάν μια αλλαγή κώδικα (commit) ή ένα χαρακτηριστικό / bug-fix (στοιχεία εργασίας) έφτασε σε ένα περιβάλλον.
  3. Έγκριση / Έλεγχος - ένα ασφαλές περιβάλλον καθορίζοντας ποιος χρήστης επιτρέπεται και ποιο περιβάλλον στόχευσης θα αναπτυχθεί.

Η προμήθεια περιβάλλοντος αυτοματισμού αποτελεί μείζονα παράγοντα επιτυχίας σε μια διαδικασία συνεχούς παράδοσης. Μπορεί η ομάδα Dev να ζητήσει ένα νέο περιβάλλον ad-hoc και το περιβάλλον σας παρέχεται κατά παραγγελία ως εφαρμογή ανάπτυξης; Το περιβάλλον εφαρμογής μπορεί να χωριστεί σε 3 βασικούς τομείς:

1. Υποδομή

2. Διαμόρφωση

3. Εξαρτήσεις

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

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

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

Το πλεονέκτημα της χρήσης της αυτόματης παροχής του περιβάλλοντος ως εξής:

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

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

6. Τυποποίηση του εργαλείου DevOps και παροχή του ως Self-Service

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

** Ακριβώς ονομάστε μερικά εργαλεία που διατίθενται στην αγορά για τα παραπάνω τμήματα.

7. Επιτάχυνση της διαχείρισης έκδοσης

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

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

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

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

  1. Atlassian JIRA - ένα εργαλείο για την ομαδική συνεργασία από την καθυστέρηση του προϊόντος, τον προγραμματισμό της Sprint και την αναφορά της απελευθέρωσης και πόσο καλά κάνει η ομάδα της Agile σε κάθε σπριντ.
  2. Github - ένα σύστημα ελέγχου διανεμημένων εκδόσεων (DVCS) όπου ο προγραμματιστής επικοινωνεί μεταξύ τους και συνεργάζεται για να βελτιώσει τον κωδικό του προϊόντος και να προβάλει τις αλλαγές και τις εκδόσεις κώδικα. Οποιεσδήποτε αλλαγές πρέπει να εξεταστούν από άλλους προγραμματιστές ή τον Αναθεωρητή Κώδικα, ο οποίος έκανε τον κώδικα πιο καθαρό και λιγότερο σφάλμα / σφάλμα.
  3. Azure DevOps - είναι ένα εργαλείο που χρησιμοποιούμε για την ενορχήστρωση του αγωγού CI / CD και είναι επίσης ο τόπος όπου υπάρχει περισσότερη συνεργασία μεταξύ της DevOps Engineer, Developer, Release Manager και της ομάδας QA. Είναι επίσης ο τόπος όπου πραγματοποιούνται οι ολοκληρώσεις προκειμένου να παραδοθεί ένα προϊόν καλής ποιότητας και γι 'αυτό έχουμε την ανάλυση ασφάλειας και τις δοκιμές QA προτού προχωρήσουμε στο περιβάλλον παραγωγής.
  4. Datadog - Είναι ένα εργαλείο παρακολούθησης το οποίο με το Datadog, μπορείτε να παρακολουθείτε τους διακομιστές σας, τα σύννεφα, τις μετρήσεις σας, τις εφαρμογές σας, την ομάδα σας μαζί. Είναι σαν μια ενιαία στάση για όλα τα είδη οθονών για το περιβάλλον και τα προϊόντα σας.

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

8. Αυτοματοποίηση δοκιμών

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

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

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

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

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

συμπέρασμα

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