Οδηγός Dummies: Δημιουργία αλυσίδων DevOps με εργαλεία ανοιχτού κώδικα

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

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

Η εισαγωγή μου στο DevOps

Συνήθιζα να δουλέψω με cloud στο Citi Group και ανέπτυξα μια εφαρμογή Ιστού IaaS για τη διαχείριση της υποδομής cloud της Citi, αλλά πάντα με ενδιέφερε πώς να βελτιστοποιήσω την αλυσίδα ανάπτυξης και να βελτιώσω την κουλτούρα μεταξύ των προγραμματιστών. Ο Greg Lavender, ο CTO μας για την Αρχιτεκτονική και την Υποδομή Cloud, μου συνέστησε αυτό το βιβλίο. Έργο "Phoenix". Εξηγεί όμορφα τις αρχές του DevOps και διαβάζεται σαν μυθιστόρημα.

Ο πίνακας στο πίσω μέρος δείχνει πόσο συχνά οι εταιρείες κυκλοφορούν νέες εκδόσεις:

Οδηγός Dummies: Δημιουργία αλυσίδων DevOps με εργαλεία ανοιχτού κώδικα

Πώς καταφέρνουν η Amazon, η Google και το Netflix να κυκλοφορήσουν τόσο πολύ; Και είναι απλό: κατάλαβαν πώς να δημιουργήσουν μια σχεδόν τέλεια αλυσίδα DevOps.

Τα πράγματα ήταν πολύ διαφορετικά για εμάς στο Citi μέχρι να μεταβούμε στο DevOps. Τότε η ομάδα μου είχε διαφορετικά περιβάλλοντα, αλλά κάναμε την παράδοση στον διακομιστή ανάπτυξης χειροκίνητα. Όλοι οι προγραμματιστές είχαν πρόσβαση μόνο σε έναν διακομιστή ανάπτυξης που βασίζεται στο IBM WebSphere Application Server Community Edition. Με μια ταυτόχρονη προσπάθεια παράδοσης, ο διακομιστής «έπεφτε», και κάθε φορά έπρεπε να διαπραγματευόμαστε «επώδυνα» μεταξύ μας. Είχαμε επίσης ανεπαρκή κάλυψη κωδικού με δοκιμές, μια χρονοβόρα διαδικασία μη αυτόματης παράδοσης και δεν υπήρχε τρόπος παρακολούθησης της παράδοσης κώδικα με τη βοήθεια κάποιας εργασίας ή απαίτησης πελάτη.

Ήταν ξεκάθαρο ότι κάτι έπρεπε να γίνει επειγόντως και βρήκα έναν συνάδελφο με ομοϊδεάτες. Αποφασίσαμε να δημιουργήσουμε μαζί την πρώτη αλυσίδα DevOps - δημιούργησε μια εικονική μηχανή και έναν διακομιστή εφαρμογών Tomcat και εγώ φρόντισα τον Jenkins, την ενσωμάτωση με το Atlassian Jira και το BitBucket, καθώς και την κάλυψη κώδικα με δοκιμές. Το έργο ήταν επιτυχές: αυτοματοποιήσαμε πλήρως την αλυσίδα ανάπτυξης, πετύχαμε σχεδόν 100% χρόνο λειτουργίας στον διακομιστή ανάπτυξης, μπορέσαμε να παρακολουθήσουμε και να βελτιώσουμε την κάλυψη κώδικα με δοκιμές και ένας κλάδος Git θα μπορούσε να συνδεθεί με μια παράδοση και ένα ζήτημα Jira. Και σχεδόν όλα τα εργαλεία που χρησιμοποιήσαμε για τη δημιουργία της αλυσίδας DevOps ήταν ανοιχτού κώδικα.

Στην πραγματικότητα, η αλυσίδα απλοποιήθηκε, επειδή δεν εφαρμόσαμε καν προηγμένες διαμορφώσεις χρησιμοποιώντας το Jenkins ή το Ansible. Αλλά τα καταφέραμε. Ίσως αυτό είναι συνέπεια της αρχής Παρέτο (γνωστός και ως ο κανόνας 80/20).

Σύντομη περιγραφή της αλυσίδας DevOps και CI/CD

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

Ενώ τα εργαλεία από μόνα τους δεν αρκούν για τη δημιουργία ενός περιβάλλοντος DevOps, είναι απαραίτητα. Το πιο σημαντικό από αυτά είναι η συνεχής ολοκλήρωση και η συνεχής παράδοση (CI/CD). Υπάρχουν διαφορετικά στάδια στην αλυσίδα για κάθε περιβάλλον (π.χ. DEV (ανάπτυξη), INT (ολοκλήρωση), TST (δοκιμή), QA (διασφάλιση ποιότητας), UAT (δοκιμή αποδοχής χρήστη), STG (προετοιμασία), PROD (χρήση)) , οι μη αυτόματες εργασίες είναι αυτοματοποιημένες, οι προγραμματιστές μπορούν να παράγουν ποιοτικό κώδικα, να τον παραδώσουν και να μπορούν εύκολα να ανακατασκευαστούν.

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

Οδηγός Dummies: Δημιουργία αλυσίδων DevOps με εργαλεία ανοιχτού κώδικα

Ας ξεκινήσουμε δουλειά.

Βήμα 1: Πλατφόρμα CI/CD

Πρώτα απ 'όλα, χρειάζεστε ένα εργαλείο CI/CD. Το Jenkins είναι ένα εργαλείο ανοιχτού κώδικα CI/CD με άδεια MIT, γραμμένο σε Java, το οποίο έκανε δημοφιλή το κίνημα DevOps και έχει γίνει το de facto πρότυπο για το CICD.

Τι είναι ο Τζένκινς; Φανταστείτε ότι έχετε έναν μαγικό πίνακα ελέγχου για μια ποικιλία υπηρεσιών και εργαλείων. Από μόνο του, ένα εργαλείο CI/CD όπως το Jenkins είναι άχρηστο, αλλά με διαφορετικά εργαλεία και υπηρεσίες, γίνεται πανίσχυρο.

Εκτός από το Jenkins, υπάρχουν πολλά άλλα εργαλεία ανοιχτού κώδικα, επιλέξτε οποιοδήποτε.

Οδηγός Dummies: Δημιουργία αλυσίδων DevOps με εργαλεία ανοιχτού κώδικα

Δείτε πώς φαίνεται μια διαδικασία DevOps με ένα εργαλείο CI/CD

Οδηγός Dummies: Δημιουργία αλυσίδων DevOps με εργαλεία ανοιχτού κώδικα

Έχετε ένα εργαλείο CI/CD στον localhost, αλλά δεν υπάρχουν πολλά να κάνετε ακόμα. Ας προχωρήσουμε στο επόμενο βήμα.

Βήμα 2: Έλεγχος έκδοσης

Ο καλύτερος (και αναμφισβήτητα πιο εύκολος) τρόπος για να δοκιμάσετε τη μαγεία ενός εργαλείου CI/CD είναι να το ενσωματώσετε με ένα εργαλείο διαχείρισης ελέγχου πηγής (SCM). Γιατί χρειάζεστε έλεγχο έκδοσης; Ας υποθέσουμε ότι κάνετε μια αίτηση. Το γράφετε σε Java, Python, C++, Go, Ruby, JavaScript ή οποιαδήποτε άλλη γλώσσα που είναι ένα βαγόνι και ένα μικρό καροτσάκι. Αυτό που γράφετε λέγεται πηγαίος κώδικας. Στην αρχή, ειδικά αν εργάζεστε μόνοι, μπορείτε να αποθηκεύσετε τα πάντα σε έναν τοπικό κατάλογο. Αλλά καθώς το έργο μεγαλώνει και περισσότεροι άνθρωποι συμμετέχουν, χρειάζεστε έναν τρόπο να μοιράζεστε τις αλλαγές κώδικα, αλλά να αποφεύγετε τις συγκρούσεις κατά τη συγχώνευση αλλαγών. Και πρέπει επίσης να επαναφέρετε με κάποιο τρόπο τις προηγούμενες εκδόσεις χωρίς να χρησιμοποιείτε αντίγραφα ασφαλείας και χρησιμοποιώντας τη μέθοδο αντιγραφής-επικόλλησης για αρχεία κώδικα.

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

Υπάρχουν πολλά εργαλεία SCM, αλλά το Git έχει γίνει επάξια το de facto πρότυπο. Σας συμβουλεύω να το χρησιμοποιήσετε, αλλά υπάρχουν και άλλες επιλογές.

Οδηγός Dummies: Δημιουργία αλυσίδων DevOps με εργαλεία ανοιχτού κώδικα

Εδώ είναι πώς φαίνεται η διοχέτευση DevOps μετά την προσθήκη του SCM.

Οδηγός Dummies: Δημιουργία αλυσίδων DevOps με εργαλεία ανοιχτού κώδικα

Το εργαλείο CI/CD μπορεί να αυτοματοποιήσει τη μεταφόρτωση και λήψη του πηγαίου κώδικα και τη συνεργασία της ομάδας. Δεν είναι κακό; Αλλά τώρα πώς να φτιάξετε μια λειτουργική εφαρμογή από αυτό, που αγαπούν δισεκατομμύρια χρήστες;

Βήμα 3: Δημιουργία εργαλείου αυτοματισμού

Όλα πάνε όπως πρέπει. Μπορείτε να ανεβάσετε κώδικα και να πραγματοποιήσετε αλλαγές στον έλεγχο προέλευσης και να προσκαλέσετε φίλους να συνεργαστούν μαζί σας. Αλλά δεν έχετε ακόμη εφαρμογή. Για να είναι μια διαδικτυακή εφαρμογή, πρέπει να μεταγλωττιστεί και να συσκευαστεί για διανομή ή να εκτελεστεί ως εκτελέσιμο. (Μια ερμηνευμένη γλώσσα προγραμματισμού όπως η JavaScript ή η PHP δεν χρειάζεται να μεταγλωττιστεί.)

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

Οδηγός Dummies: Δημιουργία αλυσίδων DevOps με εργαλεία ανοιχτού κώδικα

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

Οδηγός Dummies: Δημιουργία αλυσίδων DevOps με εργαλεία ανοιχτού κώδικα

Εχει ωραία αίσθηση. Αλλά πού είναι όλα αυτά να ξεδιπλωθούν τώρα;

Βήμα 4: Διακομιστής εφαρμογών Ιστού

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

Μια εφαρμογή Ιστού μπορεί να φιλοξενηθεί σε διακομιστή εφαρμογών Ιστού. Ο διακομιστής εφαρμογών παρέχει ένα περιβάλλον όπου μπορείτε να εκτελέσετε πακεταρισμένη λογική, να αποδώσετε διεπαφές και να εκθέσετε υπηρεσίες web μέσω μιας υποδοχής. Χρειάζεστε έναν διακομιστή HTTP και μερικά άλλα περιβάλλοντα (για παράδειγμα μια εικονική μηχανή) για να εγκαταστήσετε τον διακομιστή εφαρμογών. Προς το παρόν, ας προσποιηθούμε ότι αντιμετωπίζετε όλα αυτά καθώς προχωράτε (αν και θα μιλήσω για κοντέινερ παρακάτω).

Υπάρχουν αρκετοί ανοιχτοί διακομιστές εφαρμογών Ιστού.

Οδηγός Dummies: Δημιουργία αλυσίδων DevOps με εργαλεία ανοιχτού κώδικα

Έχουμε ήδη μια σχεδόν λειτουργική αλυσίδα DevOps. Καλή δουλειά!

Οδηγός Dummies: Δημιουργία αλυσίδων DevOps με εργαλεία ανοιχτού κώδικα

Κατ 'αρχήν, μπορείτε να σταματήσετε εδώ, τότε μπορείτε να το χειριστείτε μόνοι σας, αλλά αξίζει να μιλήσετε για την ποιότητα του κώδικα.

Βήμα 5: Δοκιμαστική κάλυψη

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

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

Πλαίσια δοκιμών

Οδηγός Dummies: Δημιουργία αλυσίδων DevOps με εργαλεία ανοιχτού κώδικα

Εργαλεία με συμβουλές ποιότητας

Οδηγός Dummies: Δημιουργία αλυσίδων DevOps με εργαλεία ανοιχτού κώδικα

Τα περισσότερα από αυτά τα εργαλεία και τα πλαίσια είναι γραμμένα για Java, Python και JavaScript επειδή η C++ και η C# είναι ιδιόκτητα (αν και το GCC είναι ανοιχτού κώδικα).

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

Πρόσθετα βήματα

εμπορευματοκιβώτια

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

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

Για κοντέινερ, συνήθως λαμβάνονται Docker και Kubernetes, αν και υπάρχουν και άλλες επιλογές.

Οδηγός Dummies: Δημιουργία αλυσίδων DevOps με εργαλεία ανοιχτού κώδικα

Διαβάστε άρθρα σχετικά με το Docker και το Kubernetes στο opensource.com:

Εργαλεία αυτοματισμού Middleware

Η αλυσίδα DevOps μας επικεντρώνεται στη συλλογική δημιουργία και παράδοση μιας εφαρμογής, αλλά υπάρχουν και άλλα ενδιαφέροντα πράγματα που μπορείτε να κάνετε με τα εργαλεία DevOps. Για παράδειγμα, χρησιμοποιήστε εργαλεία Infrastructure as Code (IaC), γνωστά και ως εργαλεία αυτοματισμού ενδιάμεσου λογισμικού. Αυτά τα εργαλεία βοηθούν στην αυτοματοποίηση της εγκατάστασης, της διαχείρισης και άλλων εργασιών για το ενδιάμεσο λογισμικό. Για παράδειγμα, ένα εργαλείο αυτοματισμού μπορεί να λάβει εφαρμογές (διακομιστής εφαρμογών web, βάση δεδομένων, εργαλεία παρακολούθησης) με τις σωστές διαμορφώσεις και να τις προωθήσει στον διακομιστή εφαρμογών.

Ακολουθούν ορισμένες επιλογές για ανοιχτά εργαλεία αυτοματισμού ενδιάμεσου λογισμικού:

Οδηγός Dummies: Δημιουργία αλυσίδων DevOps με εργαλεία ανοιχτού κώδικα

Λεπτομέρειες στα άρθρα opensource.com:

Και τώρα τι;

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

Ακολουθούν μερικά ακόμη καλά άρθρα DevOps για αρχάριους:

Μπορείτε επίσης να ενσωματώσετε τα DevOps με ανοιχτά ευέλικτα εργαλεία:

Πηγή: www.habr.com

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