Οδηγός Microservices: Τι είναι, Archiδομή και Παράδειγμα
⚡ Έξυπνη Σύνοψη
Οι μικροϋπηρεσίες είναι ένα πρότυπο αρχιτεκτονικής προσανατολισμένο στις υπηρεσίες, στο οποίο μια εφαρμογή κατασκευάζεται ως μια συλλογή μικρών, ανεξάρτητων μονάδων υπηρεσιών. Αυτός ο πόρος εξηγεί την μονολιθική έναντι της μικροϋπηρεσιακής αρχιτεκτονικής, τις διαφορές τους, τις προκλήσεις, τη σύγκριση SOA, τα δημοφιλή εργαλεία και τις βέλτιστες πρακτικές.
Τι είναι οι Microservices;
Μικροεπιχειρήσεις είναι ένα μοτίβο αρχιτεκτονικής προσανατολισμένο στις υπηρεσίες όπου οι εφαρμογές δημιουργούνται ως μια συλλογή από διάφορες μικρότερες ανεξάρτητες μονάδες υπηρεσιών. Είναι ένα τεχνολογία λογισμικού προσέγγιση που εστιάζει στην αποσύνθεση μιας εφαρμογής σε ενότητες μίας λειτουργίας με καλά καθορισμένες διεπαφές. Αυτές οι μονάδες μπορούν να αναπτυχθούν ανεξάρτητα και να λειτουργήσουν από μικρές ομάδες που κατέχουν ολόκληρο τον κύκλο ζωής της υπηρεσίας.
Ο όρος «μικρο» αναφέρεται στο μέγεθος μιας μικρουπηρεσίας, το οποίο πρέπει να είναι διαχειρίσιμο από μία μόνο ομάδα ανάπτυξης (5 έως 10 προγραμματιστές). Σε αυτήν τη μεθοδολογία, οι μεγάλες εφαρμογές χωρίζονται στις μικρότερες ανεξάρτητες μονάδες.
Τι είναι το Μονολιθικό Archiδομή;
Με απλά λόγια, μπορούμε να πούμε ότι η μονολιθική αρχιτεκτονική είναι σαν ένα μεγάλο δοχείο στο οποίο όλα τα στοιχεία λογισμικού μιας εφαρμογής είναι συγκεντρωμένα σε ένα ενιαίο πακέτο. Ας συζητήσουμε ένα παράδειγμα ενός ηλεκτρονικού καταστήματος στο πλαίσιο μιας μονολιθικής αρχιτεκτονικής.
Μονολιθικός Archiδομή της Εφαρμογής ηλεκτρονικού Εμπορίου
Σε οποιαδήποτε εφαρμογή ηλεκτρονικού εμπορίου, υπάρχουν ορισμένες τυπικές λειτουργίες όπως η Αναζήτηση, Revπροβολή & αξιολογήσεις και πληρωμές. Αυτές οι λειτουργίες είναι προσβάσιμες στους πελάτες χρησιμοποιώντας το πρόγραμμα περιήγησης ή τις εφαρμογές τους. Όταν ο προγραμματιστής του ιστότοπου ηλεκτρονικού εμπορίου αναπτύσσει την εφαρμογή, αποτελεί μια ενιαία μονάδα Monolithic. Ο κώδικας για διαφορετικές λειτουργίες όπως η Αναζήτηση, RevΟι εφαρμογές "view & Ratings" και "Payments" βρίσκονται στον ίδιο διακομιστή. Για να κλιμακώσετε την εφαρμογή, πρέπει να εκτελέσετε πολλαπλές παρουσίες (διακομιστές) αυτών των εφαρμογών.
Τι είναι η Microservice Archiδομή;
Μικροϋπηρεσία Archiδομή είναι ένα στυλ αρχιτεκτονικής ανάπτυξης που επιτρέπει τη δημιουργία εφαρμογών ως μια συλλογή μικρών αυτόνομων υπηρεσιών που έχουν αναπτυχθεί για έναν επιχειρηματικό τομέα. Είναι μια παραλλαγή της αρχιτεκτονικής δομικού στυλ που βοηθά στη διευθέτηση των εφαρμογών ως μια χαλαρά συνδεδεμένη συλλογή υπηρεσιών. Η Microservice ArchiΤο tecture περιέχει λεπτομερείς υπηρεσίες και ελαφριά πρωτόκολλα.
Ας πάρουμε ένα παράδειγμα μιας εφαρμογής ηλεκτρονικού εμπορίου που αναπτύχθηκε με αρχιτεκτονική μικρουπηρεσιών. Σε αυτό το παράδειγμα αρχιτεκτονικής μικρουπηρεσιών, κάθε μικρουπηρεσία επικεντρώνεται σε μία μόνο επιχειρηματική δυνατότητα. Αναζήτηση, Αξιολόγηση & RevΟι iew και Payment έχουν η καθεμία την παρουσία της (διακομιστή) και επικοινωνούν μεταξύ τους.
Μικροεπιχειρήσεις Archiδομή
Στη Μονολιθική Archiδομή, όλα τα στοιχεία συγχωνεύονται σε μία ενιαία ενότητα. Αλλά στις Μικροϋπηρεσίες Archiδομή, είναι κατανεμημένα σε μεμονωμένες ενότητες (μικροϋπηρεσίες) που επικοινωνούν μεταξύ τους, όπως φαίνεται στο παράδειγμα Μικροϋπηρεσιών παραπάνω.
Η επικοινωνία μεταξύ των μικροϋπηρεσιών είναι μια επικοινωνία χωρίς κατάσταση όπου κάθε ζεύγος αιτήματος και απάντησης είναι ανεξάρτητο. Ως εκ τούτου, οι Microservices μπορούν να επικοινωνούν αβίαστα. Στο Microservice Archiδομή, τα δεδομένα είναι ενοποιημένα. Κάθε Μικροϋπηρεσία έχει το δικό της ξεχωριστό χώρο αποθήκευσης δεδομένων.
Μικροϋπηρεσίες εναντίον Μονολιθικών Archiδομή
| Μικροεπιχειρήσεις | Μονολιθικός Archiδομή |
|---|---|
| Κάθε μονάδα ολόκληρης της εφαρμογής θα πρέπει να είναι η μικρότερη και θα πρέπει να μπορεί να προσφέρει έναν συγκεκριμένο επιχειρηματικό στόχο. | Μια ενιαία βάση κώδικα για όλους τους επιχειρηματικούς στόχους. |
| Η έναρξη της υπηρεσίας είναι σχετικά γρήγορη. | Η εκκίνηση της υπηρεσίας απαιτεί περισσότερο χρόνο. |
| Η απομόνωση σφαλμάτων είναι εύκολη. Ακόμα κι αν μια υπηρεσία παρουσιάσει βλάβη, οι άλλες μπορούν να συνεχίσουν να λειτουργούν. | Η απομόνωση σφαλμάτων είναι δύσκολη. Εάν κάποια συγκεκριμένη λειτουργία δεν λειτουργεί, ολόκληρο το σύστημα καταρρέει. Για να αντιμετωπιστεί αυτό το πρόβλημα, η εφαρμογή πρέπει να ανακατασκευαστεί, να δοκιμαστεί ξανά και να αναπτυχθεί ξανά. |
| Όλες οι μικροϋπηρεσίες θα πρέπει να είναι χαλαρά συνδεδεμένες, έτσι ώστε οι αλλαγές που γίνονται στη μία να μην επηρεάζουν την άλλη. | Η μονολιθική αρχιτεκτονική είναι στενά συνδεδεμένη. Οι αλλαγές σε μια ενότητα κώδικα επηρεάζουν την άλλη. |
| Οι επιχειρήσεις μπορούν να αναπτύξουν περισσότερους πόρους σε υπηρεσίες που δημιουργούν υψηλότερη απόδοση επένδυσης (ROI). | Δεδομένου ότι οι υπηρεσίες δεν είναι μεμονωμένες, η κατανομή πόρων σε ατομικό επίπεδο δεν είναι δυνατή. |
| Περισσότεροι πόροι υλικού θα μπορούσαν να διατεθούν στην υπηρεσία που χρησιμοποιείται συχνά. Στο παραπάνω παράδειγμα ηλεκτρονικού εμπορίου, περισσότεροι χρήστες ελέγχουν την καταχώριση προϊόντων και την αναζήτηση σε σύγκριση με τις πληρωμές, επομένως περισσότεροι πόροι θα μπορούσαν να διατεθούν στην μικρουπηρεσία αναζήτησης και καταχώρισης προϊόντων. | Η κλιμάκωση εφαρμογών είναι προκλητική αλλά και σπάταλη. |
| Οι μικροϋπηρεσίες παραμένουν πάντα συνεπείς και συνεχώς διαθέσιμες. | Τα εργαλεία ανάπτυξης υπερφορτώνονται καθώς η διαδικασία πρέπει να ξεκινήσει από την αρχή. |
| Τα δεδομένα είναι ενοποιημένα. Αυτό επιτρέπει στις μεμονωμένες Μικροϋπηρεσίες να υιοθετήσουν ένα μοντέλο δεδομένων που ταιριάζει καλύτερα στις ανάγκες τους. | Τα δεδομένα είναι συγκεντρωμένα. |
| Μικρές ομάδες με επίκεντρο την προσοχή. Παράλληλη και ταχύτερη ανάπτυξη. | Απαιτείται μεγάλη ομάδα και σημαντική προσπάθεια στη διαχείριση της ομάδας. |
| Η αλλαγή στο μοντέλο δεδομένων μιας Microservice δεν επηρεάζει άλλες Microservice. | Η αλλαγή στο μοντέλο δεδομένων επηρεάζει ολόκληρη τη βάση δεδομένων. |
| Αλληλεπιδρά με άλλες μικροϋπηρεσίες χρησιμοποιώντας σαφώς καθορισμένες διεπαφές. | Δεν εφαρμόζεται. |
| Οι μικροϋπηρεσίες λειτουργούν με βάση την αρχή ότι εστιάζουν σε προϊόντα και όχι σε έργα. | Δίνει έμφαση σε ολόκληρο το έργο. |
| Δεν υπάρχουν διασταυρούμενες εξαρτήσεις μεταξύ βάσεων κώδικα. Μπορείτε να χρησιμοποιήσετε διαφορετικές τεχνολογίες για διαφορετικές Microservices. | Μία λειτουργία ή πρόγραμμα εξαρτάται από άλλες. |
Προκλήσεις Microservice
- Οι μικροϋπηρεσίες βασίζονται η μία στην άλλη και θα πρέπει να επικοινωνούν μεταξύ τους.
- Σε σύγκριση με τα μονολιθικά συστήματα, υπάρχουν περισσότερες υπηρεσίες για παρακολούθηση, οι οποίες αναπτύσσονται χρησιμοποιώντας διαφορετικά γλώσσες προγραμματισμού.
- Καθώς είναι ένα κατανεμημένο σύστημα, είναι ένα εγγενώς πολύπλοκο μοντέλο.
- Διαφορετικές υπηρεσίες θα έχουν τον δικό τους ξεχωριστό μηχανισμό, με αποτέλεσμα μια μεγάλη ποσότητα μνήμης για μη δομημένα δεδομένα.
- Απαιτείται αποτελεσματική διαχείριση και ομαδική εργασία για την αποφυγή αλυσιδωτών προβλημάτων.
- Η αναπαραγωγή ενός προβλήματος θα είναι δύσκολη όταν αυτό έχει εξαφανιστεί σε μια έκδοση και επανεμφανίζεται στην πιο πρόσφατη έκδοση.
- Η ανεξάρτητη ανάπτυξη είναι περίπλοκη με τις Μικροϋπηρεσίες.
- Η αρχιτεκτονική μικροϋπηρεσιών φέρνει πολλές επιβαρύνσεις.
- Είναι δύσκολο να διαχειριστείτε την εφαρμογή όταν προστίθενται νέες υπηρεσίες στο σύστημα.
- Απαιτείται ένα ευρύ φάσμα εξειδικευμένων επαγγελματιών για την υποστήριξη ετερογενώς κατανεμημένων μικροϋπηρεσιών.
- Η Microservice είναι δαπανηρή, καθώς χρειάζεται να διατηρείτε διαφορετικό χώρο διακομιστή για διαφορετικές επιχειρηματικές εργασίες.
SOA εναντίον Microservices
Οι υπηρεσίες SOA διατηρούνται στον οργανισμό από ένα μητρώο που λειτουργεί ως λίστα καταλόγου. Οι εφαρμογές πρέπει να αναζητήσουν τις υπηρεσίες στο μητρώο και να καλέσουν την υπηρεσία. Με άλλα λόγια, SOA είναι ακριβώς σαν μια ορχήστρα όπου κάθε καλλιτέχνης παίζει με το όργανό του/της ενώ ο μουσικός διευθυντής δίνει οδηγίες σε όλους.
Από την άλλη πλευρά, οι Μικροϋπηρεσίες είναι μια μορφή αρχιτεκτονικής προσανατολισμένης στις υπηρεσίες, όπου οι εφαρμογές κατασκευάζονται ως μια συλλογή διαφορετικών μικρότερων υπηρεσιών αντί για ένα μόνο λογισμικό ή εφαρμογή. Οι Μικροϋπηρεσίες είναι σαν ένα θίασο όπου κάθε χορευτής είναι ανεξάρτητος και ξέρει τι πρέπει να κάνει. Έτσι, αν χάσει κάποια βήματα, ξέρει πώς να επιστρέψει στη σωστή ακολουθία. Ακολουθεί μια λεπτομερής σύγκριση μεταξύ SOA και Μικροϋπηρεσιών.
| Παράμετρος | SOA | Μικροεπιχειρήσεις |
|---|---|---|
| Τύπος σχεδιασμού | Στο SOA, τα στοιχεία λογισμικού εκτίθενται στον εξωτερικό κόσμο για χρήση με τη μορφή υπηρεσιών. | Η Micro Service είναι μέρος της SOA. Είναι μια υλοποίηση του SOA. |
| Εξάρτηση | Οι επιχειρηματικές μονάδες είναι εξαρτημένες. | Είναι ανεξάρτητοι μεταξύ τους. |
| Μέγεθος του Λογισμικού | Το μέγεθος του λογισμικού είναι μεγαλύτερο από οποιοδήποτε συμβατικό λογισμικό. | Το μέγεθος του Λογισμικού είναι πάντα μικρό στις Μικροϋπηρεσίες. |
| Τεχνολογία στοίβα | Η στοίβα τεχνολογίας είναι χαμηλότερη σε σύγκριση με τη Microservice. | Η στοίβα τεχνολογίας Microservice θα μπορούσε να είναι πολύ μεγάλη. |
| Φύση της αίτησης | Μονολιθικού χαρακτήρα. | Πλήρης στοίβα στη φύση. |
| Ανεξάρτητη και Εστίαση | Οι εφαρμογές SOA έχουν δημιουργηθεί για την εκτέλεση πολλαπλών επιχειρηματικών εργασιών. | Είναι κατασκευασμένα για να εκτελούν μια ενιαία επιχειρηματική εργασία. |
| Ανάπτυξη | Η διαδικασία ανάπτυξης είναι χρονοβόρα. | Η ανάπτυξη είναι απλή και λιγότερο χρονοβόρα. |
| Αποτελεσματικότητα κόστους | Πιο οικονομικό. | Less αποδοτική. |
| Απεριόριστες δυνατότητες | Less σε σύγκριση με τις Microservices. | Εξαιρετικά επεκτάσιμο. |
| Επαγγελματική λογική | Τα στοιχεία επιχειρηματικής λογικής αποθηκεύονται μέσα σε έναν ενιαίο τομέα υπηρεσίας, με απλά πρωτόκολλα καλωδίωσης (HTTP με XML ή JSON) και API που καθοδηγούνται από SDK/Clients. | Η επιχειρηματική λογική μπορεί να υπάρχει σε όλους τους τομείς, με επίπεδα τύπου Enterprise Service Bus μεταξύ των υπηρεσιών (Middleware). |
Εργαλεία Microservices
1) Wiremock: Testing Microservices
WireMock είναι μια ευέλικτη βιβλιοθήκη για stubbing και mocking διαδικτυακών υπηρεσιών. Μπορεί να διαμορφώσει την απόκριση που επιστρέφεται από το HTTP API όταν λαμβάνει ένα συγκεκριμένο αίτημα. Χρησιμοποιείται επίσης για τον έλεγχο Μικροϋπηρεσιών.
Download link: http://wiremock.org/
2) Ντόκερ
Το Docker είναι ένα έργο ανοιχτού κώδικα που μας επιτρέπει να δημιουργούμε, να αναπτύσσουμε και να εκτελούμε εφαρμογές χρησιμοποιώντας κοντέινερ. Χρησιμοποιώντας αυτά τα κοντέινερ, οι προγραμματιστές μπορούν να εκτελούν μια εφαρμογή ως ένα ενιαίο πακέτο. Σας επιτρέπει να μεταφέρετε βιβλιοθήκες και άλλες εξαρτήσεις σε ένα πακέτο.
Download link: https://www.docker.com/
3) Υστρίξ
Το Hystrix έχει ανοχή σφαλμάτων Java βιβλιοθήκη. Αυτό το εργαλείο έχει σχεδιαστεί για να διαχωρίζει τα σημεία πρόσβασης σε απομακρυσμένες υπηρεσίες, συστήματα και βιβλιοθήκες τρίτων σε ένα κατανεμημένο περιβάλλον όπως οι Μικροϋπηρεσίες. Βελτιώνει το συνολικό σύστημα απομονώνοντας τις υπηρεσίες που παρουσιάζουν σφάλματα και αποτρέποντας το φαινόμενο αλυσιδωτών βλαβών.
Download Link: https://github.com/Netflix/Hystrix
καλυτερα Practices of Microservices Archiδομή
- Ξεχωριστός χώρος αποθήκευσης δεδομένων για κάθε Μικροϋπηρεσία.
- Διατηρήστε τον κώδικα σε παρόμοιο επίπεδο ωριμότητας.
- Ξεχωριστή έκδοση για κάθε Microservice.
- Να αντιμετωπίζετε πάντα κάθε διακομιστή ως χωρίς κατάσταση.



