Μικροϋπηρεσίες: τι είναι, γιατί είναι και πότε να τις εφαρμόσετε

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

Ο νόμος του Conway και η σχέση μεταξύ επιχείρησης, οργανισμού και πληροφοριακού συστήματος

Για άλλη μια φορά θα επιτρέψω στον εαυτό μου να αναφέρω:

«Οποιοσδήποτε οργανισμός που σχεδιάζει ένα σύστημα (με την ευρεία έννοια) θα λάβει ένα σχέδιο του οποίου η δομή αντιγράφει τη δομή των ομάδων σε αυτόν τον οργανισμό».
— Melvyn Conway, 1967

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

Επιχειρηματικός προσανατολισμός πληροφοριακών συστημάτων

Μικροϋπηρεσίες: τι είναι, γιατί είναι και πότε να τις εφαρμόσετε

Επιτρέψτε μου να εξηγήσω με ένα παράδειγμα. Ας υποθέσουμε ότι υπάρχει μια επιχειρηματική ευκαιρία να οργανώσετε μια επιχείρηση που πωλεί πίτσα. Στην έκδοση V1 (ας το πούμε προπληροφόρηση), η εταιρεία ήταν πιτσαρία, ταμείο και υπηρεσία παράδοσης. Αυτή η έκδοση ήταν μακροχρόνια σε συνθήκες χαμηλής περιβαλλοντικής μεταβλητότητας. Στη συνέχεια ήρθε να το αντικαταστήσει η έκδοση 2 - πιο προηγμένη και ικανή να χρησιμοποιεί ένα πληροφοριακό σύστημα στον πυρήνα του για επιχειρήσεις με μονολιθική αρχιτεκτονική. Και εδώ, κατά τη γνώμη μου, υπάρχει απλώς μια τρομερή αδικία σε σχέση με τους μονόλιθους - Η φερόμενη μονολιθική αρχιτεκτονική δεν αντιστοιχεί στο επιχειρηματικό μοντέλο τομέα. Ναι, αν ήταν έτσι, το σύστημα δεν θα μπορούσε να λειτουργήσει καθόλου - σε αντίθεση με τον ίδιο νόμο και την κοινή λογική του Conway. Όχι, η μονολιθική αρχιτεκτονική είναι πλήρως συνεπής με το επιχειρηματικό μοντέλο σε αυτό το στάδιο της επιχειρηματικής ανάπτυξης - εννοώ, φυσικά, το στάδιο όπου το σύστημα έχει ήδη δημιουργηθεί και τεθεί σε λειτουργία. Είναι ένα απολύτως θαυμάσιο γεγονός ότι ανεξάρτητα από την αρχιτεκτονική προσέγγιση, τόσο η αρχιτεκτονική προσανατολισμένη στις υπηρεσίες έκδοση 3 όσο και η αρχιτεκτονική microservices έκδοση N θα λειτουργήσουν εξίσου καλά. Ποιά είναι η παγίδα?

Όλα ρέουν, όλα αλλάζουν ή οι μικροϋπηρεσίες είναι ένα μέσο για την καταπολέμηση της πολυπλοκότητας;

Πριν συνεχίσουμε, ας δούμε μερικές παρανοήσεις σχετικά με την αρχιτεκτονική μικροϋπηρεσιών.

Οι υποστηρικτές της χρήσης μιας προσέγγισης μικροϋπηρεσιών συχνά υποστηρίζουν ότι η διάσπαση ενός μονόλιθου σε μικροϋπηρεσίες απλοποιεί την προσέγγιση ανάπτυξης μειώνοντας τη βάση κώδικα μεμονωμένων υπηρεσιών. Κατά τη γνώμη μου, αυτή η δήλωση είναι πλήρης ανοησία. Σοβαρά, η προφανής αλληλεπίδραση μέσα σε έναν μονόλιθο και ομοιογενή κώδικα φαίνεται περίπλοκη; Αν όντως ίσχυε αυτό, όλα τα έργα θα κατασκευάζονταν αρχικά ως μικροϋπηρεσίες, ενώ η πρακτική δείχνει ότι η μετάβαση από μονόλιθο σε μικροϋπηρεσίες είναι πολύ πιο συνηθισμένη. Η πολυπλοκότητα δεν εξαφανίζεται· απλώς μετακινείται από μεμονωμένες μονάδες σε διεπαφές (είτε είναι διαύλους δεδομένων, RPC, API και άλλα πρωτόκολλα) και συστήματα ενορχήστρωσης. Και αυτό είναι δύσκολο!

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

Κύκλος ζωής προϊόντος και κύκλος ζωής υπηρεσίας

Ρίξτε μια άλλη ματιά στο παραπάνω διάγραμμα. Δεν είναι τυχαίο που σημείωσα τη μείωση του κύκλου ζωής μιας ξεχωριστής έκδοσης μιας επιχείρησης - στις σύγχρονες συνθήκες, είναι η επιτάχυνση της μετάβασης μιας επιχείρησης μεταξύ των εκδόσεων που είναι καθοριστική για την επιτυχία της. Η επιτυχία ενός προϊόντος καθορίζεται από την ταχύτητα δοκιμής των επιχειρηματικών υποθέσεων σε αυτό. Και εδώ, κατά τη γνώμη μου, βρίσκεται το βασικό πλεονέκτημα της αρχιτεκτονικής microservice. Πάμε όμως με τη σειρά.

Ας περάσουμε στο επόμενο στάδιο της εξέλιξης των πληροφοριακών συστημάτων - στην προσανατολισμένη στις υπηρεσίες αρχιτεκτονική του SOA. Έτσι, κάποια στιγμή τονίσαμε στο προϊόν μας μακροχρόνιες υπηρεσίες - μακροχρόνια με την έννοια ότι όταν μετακινείστε μεταξύ εκδόσεων ενός προϊόντος, υπάρχει πιθανότητα ο κύκλος ζωής της υπηρεσίας να είναι μεγαλύτερος από τον κύκλο ζωής της επόμενης έκδοσης του προϊόντος. Θα ήταν λογικό να μην τα αλλάξουμε καθόλου - εμείς Σημασία έχει η ταχύτητα μετάβασης στην επόμενη έκδοση. Αλλά δυστυχώς, είμαστε αναγκασμένοι να κάνουμε συνεχείς αλλαγές στις υπηρεσίες - και εδώ όλα λειτουργούν για εμάς, πρακτικές DevOps, κοντέινερ και ούτω καθεξής - ό,τι έρχεται στο μυαλό. Αλλά και πάλι δεν πρόκειται για μικροϋπηρεσίες!

Οι μικροϋπηρεσίες ως μέσο για την καταπολέμηση της πολυπλοκότητας... διαχείρισης διαμόρφωσης

Και εδώ μπορούμε επιτέλους να προχωρήσουμε στον καθοριστικό ρόλο των μικροϋπηρεσιών - αυτή είναι μια προσέγγιση που απλοποιεί τη διαχείριση της διαμόρφωσης του προϊόντος. Πιο αναλυτικά, η λειτουργία κάθε μικρουπηρεσίας περιγράφει ακριβώς την επιχειρηματική λειτουργία μέσα στο προϊόν σύμφωνα με το μοντέλο τομέα - και αυτά είναι πράγματα που ζουν όχι σε μια βραχύβια έκδοση, αλλά σε μια μακροχρόνια επιχειρηματική ευκαιρία. Και η μετάβαση στην επόμενη έκδοση του προϊόντος γίνεται κυριολεκτικά απαρατήρητη - αλλάζεις/προσθέτεις μία microservice, και ίσως μόνο το σχήμα της αλληλεπίδρασής τους, και ξαφνικά βρίσκεσαι στο μέλλον, αφήνοντας πίσω τους ανταγωνιστές που κλαίνε που συνεχίζουν να μεταπηδούν μεταξύ των εκδόσεων του τους μονόλιθους τους. Τώρα φανταστείτε ότι υπάρχει ένας αρκετά μεγάλος όγκος μικροϋπηρεσιών με προκαθορισμένες διεπαφές και επιχειρηματικές δυνατότητες. Και έρχεστε και χτίζετε τη δομή του προϊόντος σας από έτοιμες μικροϋπηρεσίες - απλά σχεδιάζοντας ένα διάγραμμα, για παράδειγμα. Συγχαρητήρια - έχετε μια πλατφόρμα - και τώρα μπορείτε να προσελκύσετε επιχειρήσεις για τον εαυτό σας. Όνειρα Όνειρα.

Ευρήματα

  • Η αρχιτεκτονική του συστήματος θα πρέπει να καθορίζεται από τον κύκλο ζωής των στοιχείων του. Εάν ένα στοιχείο ζει μέσα σε μια έκδοση προϊόντος, δεν έχει νόημα να αυξηθεί η πολυπλοκότητα του συστήματος χρησιμοποιώντας μια προσέγγιση microservice.
  • Η αρχιτεκτονική μικροϋπηρεσιών θα πρέπει να βασίζεται στο μοντέλο τομέα - επειδή η επιχειρηματική ευκαιρία είναι ο μακροβιότερος τομέας
  • Οι πρακτικές παράδοσης (πρακτικές DevOps) και η ενορχήστρωση είναι από τις πιο σημαντικές για την αρχιτεκτονική μικροϋπηρεσιών - για το λόγο ότι η αύξηση του ρυθμού αλλαγής των στοιχείων δημιουργεί αυξημένες απαιτήσεις για την ταχύτητα και την ποιότητα παράδοσης

Πηγή: www.habr.com

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