Architecture Decision Record

Active theme: Light

← έγγραφα

Η διαδικασία καταγραφής αρχιτεκτονικών αποφάσεων της AWS

https://docs.aws.amazon.com/prescriptive-guidance/latest/architectural-decision-records/adr-process.html

Μια καταγραφή αρχιτεκτονικής απόφασης (ADR) είναι ένα έγγραφο που περιγράφει μια επιλογή που κάνει η ομάδα για μια σημαντική πτυχή της αρχιτεκτονικής λογισμικού που σχεδιάζει να χτίσει. Κάθε ADR περιγράφει την αρχιτεκτονική απόφαση, το πλαίσιό της και τις συνέπειές της. Τα ADR έχουν καταστάσεις και επομένως ακολουθούν έναν κύκλο ζωής. Για ένα παράδειγμα ADR, δείτε το παράρτημα.

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

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

Εύρος της διαδικασίας ADR

Τα μέλη του έργου πρέπει να δημιουργούν ένα ADR για κάθε αρχιτεκτονικά σημαντική απόφαση που επηρεάζει το έργο ή το προϊόν λογισμικού, συμπεριλαμβανομένων των εξής (Richards και Ford 2020):

  • Δομή (για παράδειγμα, μοτίβα όπως οι μικροϋπηρεσίες)

  • Μη λειτουργικές απαιτήσεις (ασφάλεια, υψηλή διαθεσιμότητα και ανοχή σε σφάλματα)

  • Εξαρτήσεις (σύζευξη στοιχείων)

  • Διεπαφές (API και δημοσιευμένα συμβόλαια)

  • Τεχνικές κατασκευής (βιβλιοθήκες, πλαίσια, εργαλεία και διαδικασίες)

  • Οι λειτουργικές και μη λειτουργικές απαιτήσεις είναι οι πιο συνηθισμένες είσοδοι της διαδικασίας ADR.

Περιεχόμενο ενός ADR

Όταν η ομάδα εντοπίσει την ανάγκη για ένα ADR, ένα μέλος της ομάδας αρχίζει να γράφει το ADR με βάση ένα πρότυπο που ισχύει για όλο το έργο. (Δείτε τον οργανισμό ADR στο GitHub για παραδείγματα προτύπων.) Το πρότυπο απλοποιεί τη δημιουργία των ADR και διασφαλίζει ότι το ADR καταγράφει όλες τις σχετικές πληροφορίες. Κάθε ADR πρέπει τουλάχιστον να ορίζει το πλαίσιο της απόφασης, την ίδια την απόφαση και τις συνέπειες της απόφασης για το έργο και τα παραδοτέα του. (Για παραδείγματα αυτών των ενοτήτων, δείτε το παράρτημα.) Ένα από τα πιο ισχυρά χαρακτηριστικά της δομής ADR είναι ότι εστιάζει στον λόγο της απόφασης και όχι στον τρόπο με τον οποίο την υλοποίησε η ομάδα. Η κατανόηση του γιατί η ομάδα πήρε την απόφαση διευκολύνει τα άλλα μέλη της ομάδας να την υιοθετήσουν και εμποδίζει άλλους αρχιτέκτονες που δεν συμμετείχαν στη διαδικασία λήψης αποφάσεων να την ανατρέψουν στο μέλλον.

Διαδικασία υιοθέτησης ADR

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

Αφού η ομάδα εντοπίσει μια αρχιτεκτονική απόφαση και τον ιδιοκτήτη της, ο ιδιοκτήτης του ADR παρουσιάζει το ADR στην κατάσταση Proposed (Προτεινόμενο) στην αρχή της διαδικασίας. Τα ADR στην κατάσταση Proposed είναι έτοιμα για αναθεώρηση.

Στη συνέχεια, ο ιδιοκτήτης του ADR ξεκινά τη διαδικασία αναθεώρησης του ADR. Στόχος της διαδικασίας αναθεώρησης του ADR είναι να αποφασιστεί αν η ομάδα αποδέχεται το ADR, κρίνει ότι χρειάζεται επεξεργασία ή το απορρίπτει. Η ομάδα του έργου, συμπεριλαμβανομένου του ιδιοκτήτη, αναθεωρεί το ADR. Η συνάντηση αναθεώρησης πρέπει να ξεκινά με ένα αποκλειστικό χρονικό διάστημα για την ανάγνωση του ADR. Κατά μέσο όρο, 10 έως 15 λεπτά πρέπει να είναι αρκετά. Σε αυτό το διάστημα, κάθε μέλος της ομάδας διαβάζει το έγγραφο και προσθέτει σχόλια και ερωτήσεις για να επισημάνει ασαφή θέματα. Μετά τη φάση αναθεώρησης, ο ιδιοκτήτης του ADR διαβάζει φωναχτά και συζητά κάθε σχόλιο με την ομάδα.

Αν η ομάδα εντοπίσει σημεία δράσης για τη βελτίωση του ADR, η κατάσταση του ADR παραμένει Proposed. Ο ιδιοκτήτης του ADR διατυπώνει τις ενέργειες και, σε συνεργασία με την ομάδα, προσθέτει έναν υπεύθυνο σε κάθε ενέργεια. Κάθε μέλος της ομάδας μπορεί να συμβάλει και να επιλύσει τα σημεία δράσης. Είναι ευθύνη του ιδιοκτήτη του ADR να επαναπρογραμματίσει τη διαδικασία αναθεώρησης.

Η ομάδα μπορεί επίσης να αποφασίσει να απορρίψει το ADR. Σε αυτή την περίπτωση, ο ιδιοκτήτης του ADR προσθέτει έναν λόγο για την απόρριψη, ώστε να αποτραπούν μελλοντικές συζητήσεις για το ίδιο θέμα. Ο ιδιοκτήτης αλλάζει την κατάσταση του ADR σε Rejected (Απορριφθέν).

Αν η ομάδα εγκρίνει το ADR, ο ιδιοκτήτης προσθέτει χρονοσήμανση, έκδοση και κατάλογο των ενδιαφερόμενων μερών. Στη συνέχεια ο ιδιοκτήτης ενημερώνει την κατάσταση σε Accepted (Αποδεκτό).

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

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

Διαδικασία αναθεώρησης ADR

Η ομάδα πρέπει να αντιμετωπίζει τα ADR ως αμετάβλητα έγγραφα αφού τα αποδεχτεί ή τα απορρίψει. Οι αλλαγές σε ένα υπάρχον ADR απαιτούν τη δημιουργία νέου ADR, τη θέσπιση διαδικασίας αναθεώρησης για το νέο ADR και την έγκρισή του. Αν η ομάδα εγκρίνει το νέο ADR, ο ιδιοκτήτης πρέπει να αλλάξει την κατάσταση του παλιού ADR σε Superseded (Αντικατεστημένο).