Architecture Decision Record

Active theme: Light

← Παραδείγματα καταγραφής αποφάσεων

Microsoft Azure DevOps

Περιεχόμενα:

Περίληψη

Ζήτημα

Θέλουμε να χρησιμοποιήσουμε devops για να χτίζουμε, να ενσωματώνουμε, να αναπτύσσουμε και να φιλοξενούμε τα έργα μας. Εξετάζουμε το Microsoft Azure DevOps.

  • Θέλουμε η εμπειρία του προγραμματιστή να είναι γρήγορη και αξιόπιστη, τόσο για τη ρύθμιση του devops, π.χ. τη διαμόρφωση, όσο και για τη συνεχή χρήση, π.χ. γρήγοροι χρόνοι build.

  • Θέλουμε να εξετάσουμε τη χρήση του Microsoft Azure στο σύνολό του, για τη φιλοξενία των εφαρμογών των έργων, των βάσεων δεδομένων κ.λπ.

Απόφαση

Αποφασίστηκε εναντίον του Microsoft Azure DevOps.

Κατάσταση

Αποφασίστηκε. Είμαστε ανοικτοί σε επανεξέταση αν/όταν φτάσουν νέες σημαντικές πληροφορίες.

Λεπτομέρειες

Παραδοχές

Όλες οι συνήθεις παραδοχές devops, όπως στο βιβλίο Accelerate.

  • Τα γρήγορα builds βοηθούν σημαντικά. Αυτό επιταχύνει τους βρόχους ανατροφοδότησης.

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

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

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

Περιορισμοί

Κανένας γνωστός. Το Azure έχει δημοσιευμένη δέσμευση να συνεργάζεται καλά με εξωτερικά εργαλεία.

Θέσεις

Εξετάσαμε το Microsoft Azure Devops έναντι του AWS, που είναι η υπάρχουσα λύση.

Πειραματιστήκαμε με το Azure DevOps, το Azure Pipelines, το Azure Repo και τη δημιουργία νέου διακομιστή στο Azure μέσω Terraform.

Πειραματιστήκαμε με τη λήψη υποστήριξης από εκπροσώπους της Microsoft.

Συγκεντρώσαμε πληροφορίες από συναδέλφους σε blogs και στο Hacker News.

Επιχείρημα

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

Η δική μας άμεση εμπειρία:

  • Η ρύθμιση του Azure είναι ένα χάος διεπαφών, μερικές από τις οποίες επικαλύπτονται με λογαριασμούς Microsoft και μερικές όχι. Π.χ. υπάρχει σύνδεση Azure, σύνδεση Microsoft.com, σύνδεση Live.com κ.λπ. και όλες είναι ταυτόχρονα σε παιχνίδι.

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

  • Η τεκμηρίωση είναι συχνά είτε λανθασμένη είτε παρωχημένη. Τουλάχιστον μέρος αυτού οφείλεται στην κακή μηχανή αναζήτησης της Microsoft και μέρος σε μέτριο SEO.

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

Οι εμπειρίες συναδέλφων:

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

  • Οι συνάδελφοι ανέφεραν πρόσθετα προβλήματα με τους χρόνους build και προβλήματα με τη χρήση δικού τους διακομιστή build. Αυτά τα προβλήματα είναι σημαντικά σοβαρότερα από τα προβλήματα διεπαφής, επειδή η εκτέλεση builds είναι ο βασικός σκοπός μιας ροής build και αναμένουμε να κάνουμε πολλά ανά ημέρα.

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

Επιπτώσεις

Η επιλογή του Microsoft Azure DevOps φαίνεται πιθανό να είναι ακριβότερη (~3x) σε χρόνο και κόστος από τη μη επιλογή του Azure.

Σχετικά

Σχετικές αποφάσεις

Αν επιλέξουμε το Azure DevOps, υπάρχουν πολλές σχετικές προσφορές, συμπεριλαμβανομένων των Azure Repo, Azure Pipeline κ.λπ. Πιστεύουμε ότι αν επιλέξουμε το Azure Devops, αυτό μπορεί να διευκολύνει τη χρήση περισσότερων δυνατοτήτων του Azure ή να δυσκολέψει τη χρήση δυνατοτήτων άλλων προμηθευτών.

Πιστεύουμε ότι η Microsoft κάνει μεγάλα βήματα στην εμπειρία του προγραμματιστή και βλέπουμε τη Microsoft να κάνει μεγάλες εξαγορές εργαλείων προγραμματιστών (π.χ. GitHub) και εξαρτήσεων (π.χ. Citus).

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

Σχετικές απαιτήσεις

Θέλουμε οι χρόνοι build να είναι πολύ γρήγοροι. Δεχόμαστε να πληρώσουμε υψηλό ασφάλιστρο γι' αυτό. Αυτό επειδή θέλουμε να επαναλαμβάνουμε πολύ γρήγορα.

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

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

Σχετικά τεχνουργήματα

Θέλουμε το σύστημα build να παράγει τεχνουργήματα κατάλληλα για χρήση σε άλλα συστήματα, όπως το Artifactory.

Σχετικές αρχές

Εύκολα αναστρέψιμο. Μπορούμε να αξιολογήσουμε το Azure DevOps παράλληλα με το υπάρχον AWS.

Σημειώσεις

Microsoft Devops CI: An Unsatisfying Adventure

https://toxicbakery.github.io/vsts-devops/microsoft-devops-ci/

Ανάρτηση σε blog.

«Ως προγραμματιστής λογισμικού, γνωρίζω από πρώτο χέρι πόσο δύσκολο είναι να χτίζεις προϊόντα ποιότητας γρήγορα και φτηνά. Είναι μια μορφή τέχνης που μερικές φορές την πετυχαίνουμε και άλλες φορές εκφυλίζεται σε κάτι σαν τον κυβερνητικό ιστότοπο υγειονομικής περίθαλψης της εποχής Ομπάμα. Το επίπεδο ελέγχου μας στο προϊόν που προκύπτει ποικίλλει, και την ευθύνη για την αποτυχία συχνά τη φέρουν λάθος άνθρωποι στην ιεραρχία λήψης αποφάσεων. Το Azure DevOps της Microsoft (παλαιότερα γνωστό ως Visual Studio Team Services), παρά τις σαφώς καλές προθέσεις, είναι μια τέλεια καταιγίδα κακών αποφάσεων και φτωχής εκτέλεσης.»

Κυριότερα σημεία της συζήτησης στο Hacker News

https://news.ycombinator.com/item?id=18983586

«Χρησιμοποιούμε εκτενώς το Azure DevOps στη δουλειά μου και, αφού έχω χρησιμοποιήσει GitHub, Gitlab, αυτο-φιλοξενούμενες λύσεις, Jenkins, TeamCity... το Azure DevOps κατατάσσεται τελευταίο.»

«Το UI είναι τρομερά αδέξιο παντού. Το χειρότερο για μένα είναι τα pull requests. Απίστευτα δύσκολο να συνεργαστείς με ανθρώπους σε ένα pull request. Δεν μπορώ ούτε να σας υποδείξω «ένα» συγκεκριμένο πρόβλημα - για εμάς είναι χαλασμένο παντού.»

«Το Azure Devops είναι κάτι που θέλω να αγαπήσω. Το UI αλλάζει συνεχώς, αλλά δεν διορθώνει υποκείμενα σφάλματα που υπάρχουν εδώ και αιώνες.»

«Τα εργαλεία δεν είναι καλά ενσωματωμένα, το UI είναι πραγματικά αργό, δεν υπάρχει προβολή πίνακα ελέγχου ενεργών pull requests, builds, releases κ.λπ. για τα αγαπημένα μου αποθετήρια. Οι χρόνοι Build/Deploy είναι τρελά αργοί.»

«Προσπαθήσαμε επίσης να χρησιμοποιήσουμε το Azure Boards (Work Items, Boards, Backlogs κ.λπ.). Ωχ. Είναι ένα πλήρες χάος UI από ασύνδετες ιδέες. Αντί να υλοποιήσουν ένα πράγμα καλά, υλοποίησαν δύο δωδεκάδες πράγματα φοβερά.»

Windows Development MVP

Windows Development MVP εδώ. Νιώθω ότι πρέπει να επωμιστώ μέρος της ευθύνης που δεν μίλησα πιο δυνατά γι' αυτά τα ζητήματα. Αλλά πρέπει να πω ότι απογοητεύομαι που ακούω ότι «εκπλήσσεστε» με τα ζητήματα UX. Λέω στους ανθρώπους σας ότι το UX είναι φρικτό (π.χ. ήδη πριν την κυκλοφορία) και έπαιρνα συνεχώς απάντηση «το ξέρουμε, το διορθώνουμε». Θα αρχίσω να τυποποιώ την ανατροφοδότηση και να την ωθώ μέσα από τους σωλήνες, μείνετε συντονισμένοι. Είμαι επίσης τοπικός (Bellevue), θα ήθελα να έρθω και να προσπαθήσω να περάσω από pipeline τη σχετικά απλή εφαρμογή μας oss .net/wpf/uwp. Υποψιάζομαι ότι θα είναι ανοιχτικό για τους δυο μας.

Μερικά παραδείγματα:

  • Δεν μπορείτε να χτίσετε pipeline με αποθετήριο git που περιέχει υποενότητες (submodules)

  • Βρήκα αδύνατο να επεξεργαστώ το PATH για κάποια προσαρμοσμένα εργαλεία

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

Περίληψη του Edward Thomson (Azure PM)

Έγραψα τον κώδικα που συγχωνεύει τα pull requests σας. Program Manager στη Microsoft για το Azure DevOps· παλαιότερα μηχανικός λογισμικού σε εργαλεία ελέγχου εκδόσεων στο GitHub, τη Microsoft, τη SourceGear.

https://www.edwardthomson.com/

Συνσυντηρητής της libgit2. https://libgit2.github.io

Συν-παρουσιαστής του All Things Git, του podcast για το Git. https://www.allthingsgit.com/

Επιμελητής του Developer Tools Weekly, ενός newsletter για εργαλεία ανάπτυξης. https://developertoolsweekly.com/