Γιατί χρειάζεται το DevOps και ποιοι είναι οι ειδικοί του DevOps;

Όταν μια εφαρμογή δεν λειτουργεί, το τελευταίο πράγμα που θέλετε να ακούσετε από τους συναδέλφους σας είναι η φράση «το πρόβλημα είναι με το μέρος σας». Ως αποτέλεσμα, οι χρήστες υποφέρουν – και δεν τους νοιάζει ποιο μέρος της ομάδας είναι υπεύθυνο για την κατάρρευση. Η κουλτούρα DevOps προέκυψε ακριβώς για να συνδυάσει την ανάπτυξη και την υποστήριξη γύρω από μια κοινή ευθύνη για το τελικό προϊόν.

Ποιες πρακτικές περιλαμβάνονται στην έννοια του DevOps και γιατί χρειάζονται; Τι κάνουν οι μηχανικοί DevOps και τι πρέπει να μπορούν να κάνουν; Οι ειδικοί από το EPAM απαντούν σε αυτές και σε άλλες ερωτήσεις: ο Kirill Sergeev, μηχανικός συστημάτων και ευαγγελιστής DevOps, και ο Igor Boyko, κορυφαίος μηχανικός συστημάτων και συντονιστής μιας από τις ομάδες DevOps της εταιρείας.

Γιατί χρειάζεται το DevOps και ποιοι είναι οι ειδικοί του DevOps;

Γιατί χρειάζεται το DevOps;

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

Τι είναι το DevOps;

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

Κύριλλος Σεργκέεφ: «Οι προγραμματιστές γράφουν κώδικα, οι δοκιμαστές τον ελέγχουν και οι διαχειριστές αναπτύσσουν το τελικό προϊόν στην παραγωγή. Για πολύ καιρό, αυτά τα μέρη της ομάδας ήταν κάπως διάσπαρτα και στη συνέχεια προέκυψε η ιδέα να τα ενώσουμε μέσα από μια κοινή διαδικασία. Έτσι εμφανίστηκαν οι πρακτικές DevOps."

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

Γιατί χρειάζεται το DevOps και ποιοι είναι οι ειδικοί του DevOps;

Ποια είναι η ουσία της κουλτούρας DevOps;

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

Το πιο σημαντικό πράγμα σε μια κουλτούρα DevOps είναι η επίλυση του προβλήματος, όχι απλώς η εφαρμογή πρακτικών DevOps. Επιπλέον, αυτές οι πρακτικές δεν εφαρμόζονται «από την πλευρά κάποιου», αλλά σε ολόκληρο το προϊόν. Ένα έργο δεν χρειάζεται έναν μηχανικό DevOps αυτό καθαυτό - χρειάζεται μια λύση σε ένα πρόβλημα και ο ρόλος ενός μηχανικού DevOps μπορεί να κατανεμηθεί σε πολλά μέλη της ομάδας με διαφορετικές εξειδικεύσεις.

Ποιοι είναι οι τύποι πρακτικών DevOps;

Οι πρακτικές DevOps καλύπτουν όλα τα στάδια του κύκλου ζωής του λογισμικού.

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

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

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

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

Ποια είναι τα οφέλη των πρακτικών DevOps;

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

Κύριλλος Σεργκέεφ: «Το πρώτο πράγμα είναι ο αυτοματισμός. Μπορούμε να αυτοματοποιήσουμε όλες τις αλληλεπιδράσεις στην ομάδα: γράψαμε τον κώδικα - τον κυκλοφόρησε - τον έλεγξε - τον εγκαταστήσαμε - συλλέξαμε σχόλια - επέστρεψε στην αρχή. Όλα αυτά είναι αυτόματα.

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

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

Γιατί χρειάζεται το DevOps και ποιοι είναι οι ειδικοί του DevOps;

Πώς σχετίζονται οι έννοιες «μηχανικός συστημάτων», «μηχανικός κατασκευής» και «μηχανικός προγραμματιστών»;

Αλληλεπικαλύπτονται, αλλά ανήκουν σε ελαφρώς διαφορετικές περιοχές.

Μηχανικός Συστημάτων στο ΕΠΑΜ είναι θέση. Έρχονται σε διαφορετικά επίπεδα: από κατώτερο έως επικεφαλής ειδικό.

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

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

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

Τι ακριβώς κάνει ένας μηχανικός DevOps;

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

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

Κύριλλος Σεργκέεφ: «Πριν από την εφαρμογή ενημερώσεων στο προϊόν, πρέπει να δοκιμαστούν σε περιβάλλον τρίτου κατασκευαστή. Έχει προετοιμαστεί από μηχανικούς DevOps. Ενσταλάζουν μια κουλτούρα DevOps στο έργο ως σύνολο: εισάγουν πρακτικές DevOps σε όλα τα επίπεδα των έργων τους. Αυτές οι τρεις αρχές: αυτοματισμός, απλοποίηση, επιτάχυνση - φέρνουν όπου μπορούν να φτάσουν».

Τι πρέπει να γνωρίζει ένας μηχανικός DevOps;

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

1. Γλώσσες προγραμματισμού

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

Ένας μηχανικός DevOps μπορεί να μάθει μία ή περισσότερες από αυτές τις γλώσσες: Python, Groovy, Bash, Powershell, Ruby, Go. Δεν είναι απαραίτητο να τα γνωρίζουμε σε βαθύ επίπεδο - αρκούν τα βασικά της σύνταξης, οι αρχές του OOP και η δυνατότητα σύνταξης απλών σεναρίων για αυτοματισμό.

2. Λειτουργικά συστήματα

Ένας μηχανικός DevOps πρέπει να καταλάβει σε ποιο διακομιστή θα εγκατασταθεί το προϊόν, σε ποιο περιβάλλον θα εκτελείται και με ποιες υπηρεσίες θα αλληλεπιδράσει. Μπορείτε να επιλέξετε να ειδικευτείτε στα Windows ή στην οικογένεια Linux.

3. Συστήματα ελέγχου έκδοσης

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

4. Παροχείς cloud

AWS, Google, Azure - ειδικά αν μιλάμε για την κατεύθυνση των Windows.

Κύριλλος Σεργκέεφ: «Οι πάροχοι cloud μάς παρέχουν εικονικούς διακομιστές που ταιριάζουν τέλεια σε CI/CD.

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

5. Συστήματα ενορχήστρωσης: Docker και Kubernetes

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

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

6. Συστήματα διαμόρφωσης: Chef, Ansible, Puppet

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

Τι είδους καριέρα μπορεί να δημιουργήσει ένας μηχανικός DevOps;

Μπορείτε να αναπτυχθείτε τόσο οριζόντια όσο και κάθετα.

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

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

Πώς να γίνετε μηχανικός DevOps;

  1. Διαβάστε το Εγχειρίδιο The Phoenix Project και DevOps. Αυτοί είναι οι πραγματικοί πυλώνες της φιλοσοφίας του DevOps, με τον πρώτο να είναι ένα έργο μυθοπλασίας.
  2. Μάθετε τεχνολογίες από την παραπάνω λίστα: μόνοι σας ή μέσω διαδικτυακών μαθημάτων.
  3. Εγγραφείτε ως μηχανικός DevOps για ένα έργο ανοιχτού κώδικα.
  4. Εξασκηθείτε και προσφέρετε πρακτικές DevOps στα προσωπικά και εργασιακά σας έργα.

Πηγή: www.habr.com

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