Οδηγός Microservices: Τι είναι, Archiδομή και Παράδειγμα

⚡ Έξυπνη Σύνοψη

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

  • 🧩 Βασική ιδέα: Οι μικροϋπηρεσίες αναλύουν μια εφαρμογή σε ενότητες μίας λειτουργίας, ανεξάρτητα αναπτυσσόμενες, καθεμία από τις οποίες ανήκει σε μια μικρή ομάδα 5 έως 10 προγραμματιστών.
  • 📦 Μονολιθική Αντίθεση: Μια μονολιθική εφαρμογή συγκεντρώνει όλες τις λειτουργίες σε ένα πακέτο σε έναν διακομιστή, επομένως η κλιμάκωση σημαίνει την εκτέλεση πολλαπλών πλήρων αντιγράφων.
  • Μικροϋπηρεσία Archiδομή: Κάθε υπηρεσία χειρίζεται μία επιχειρηματική δυνατότητα, εκτελείται σε δική της παρουσία και επικοινωνεί μέσω ελαφρών, χωρίς καταστάσεις πρωτοκόλλων.
  • 🗄️ Ομοσπονδιακά Δεδομένα: Κάθε μικρουπηρεσία διαθέτει το δικό της χώρο αποθήκευσης δεδομένων, επομένως μια αλλαγή στο μοντέλο δεδομένων μιας υπηρεσίας δεν επηρεάζει τις άλλες.
  • Εργαλεία και πρακτικές: Εργαλεία όπως WireMock, Docker και Hystrix υποστηρίζουν δοκιμές, ανάπτυξη και ανοχή σφαλμάτων· διατηρούν κάθε υπηρεσία χωρίς κατάσταση με τη δική της έκδοση.

Οδηγός Microservices

Τι είναι οι Microservices;

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

Ο όρος «μικρο» αναφέρεται στο μέγεθος μιας μικρουπηρεσίας, το οποίο πρέπει να είναι διαχειρίσιμο από μία μόνο ομάδα ανάπτυξης (5 έως 10 προγραμματιστές). Σε αυτήν τη μεθοδολογία, οι μεγάλες εφαρμογές χωρίζονται στις μικρότερες ανεξάρτητες μονάδες.

Τι είναι το Μονολιθικό Archiδομή;

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

Μονολιθικός Archiδομή της Εφαρμογής ηλεκτρονικού Εμπορίου

Μονολιθικός Archiδομή της Εφαρμογής ηλεκτρονικού Εμπορίου

Σε οποιαδήποτε εφαρμογή ηλεκτρονικού εμπορίου, υπάρχουν ορισμένες τυπικές λειτουργίες όπως η Αναζήτηση, Revπροβολή & αξιολογήσεις και πληρωμές. Αυτές οι λειτουργίες είναι προσβάσιμες στους πελάτες χρησιμοποιώντας το πρόγραμμα περιήγησης ή τις εφαρμογές τους. Όταν ο προγραμματιστής του ιστότοπου ηλεκτρονικού εμπορίου αναπτύσσει την εφαρμογή, αποτελεί μια ενιαία μονάδα Monolithic. Ο κώδικας για διαφορετικές λειτουργίες όπως η Αναζήτηση, RevΟι εφαρμογές "view & Ratings" και "Payments" βρίσκονται στον ίδιο διακομιστή. Για να κλιμακώσετε την εφαρμογή, πρέπει να εκτελέσετε πολλαπλές παρουσίες (διακομιστές) αυτών των εφαρμογών.

Τι είναι η Microservice Archiδομή;

Μικροϋπηρεσία Archiδομή είναι ένα στυλ αρχιτεκτονικής ανάπτυξης που επιτρέπει τη δημιουργία εφαρμογών ως μια συλλογή μικρών αυτόνομων υπηρεσιών που έχουν αναπτυχθεί για έναν επιχειρηματικό τομέα. Είναι μια παραλλαγή της αρχιτεκτονικής δομικού στυλ που βοηθά στη διευθέτηση των εφαρμογών ως μια χαλαρά συνδεδεμένη συλλογή υπηρεσιών. Η Microservice ArchiΤο tecture περιέχει λεπτομερείς υπηρεσίες και ελαφριά πρωτόκολλα.

Ας πάρουμε ένα παράδειγμα μιας εφαρμογής ηλεκτρονικού εμπορίου που αναπτύχθηκε με αρχιτεκτονική μικρουπηρεσιών. Σε αυτό το παράδειγμα αρχιτεκτονικής μικρουπηρεσιών, κάθε μικρουπηρεσία επικεντρώνεται σε μία μόνο επιχειρηματική δυνατότητα. Αναζήτηση, Αξιολόγηση & RevΟι iew και Payment έχουν η καθεμία την παρουσία της (διακομιστή) και επικοινωνούν μεταξύ τους.

Μικροεπιχειρήσεις Archiδομή

Μικροεπιχειρήσεις 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.
  • Να αντιμετωπίζετε πάντα κάθε διακομιστή ως χωρίς κατάσταση.

Συχνές Ερωτήσεις

Οι δυνατότητες της Τεχνητής Νοημοσύνης συχνά συσκευάζονται ως μεμονωμένες μικρουπηρεσίες, επομένως οι εφαρμογές μπορούν να καλέσουν ένα μοντέλο μέσω ενός API χωρίς να το ενσωματώσουν. Η Τεχνητή Νοημοσύνη υποστηρίζει επίσης την έξυπνη δρομολόγηση, την αυτόματη κλιμάκωση και την ανίχνευση ανωμαλιών σε πολλές υπηρεσίες.

Ναι. Τα εργαλεία παρατηρησιμότητας που βασίζονται στην τεχνητή νοημοσύνη συσχετίζουν τα αρχεία καταγραφής, τις μετρήσεις και tracσε όλες τις υπηρεσίες για την ανίχνευση βλαβών, την πρόβλεψη σημείων συμφόρησης και τον εντοπισμό της βασικής αιτίας ταχύτερα από τη χειροκίνητη ανάλυση σε ένα μεγάλο κατανεμημένο σύστημα.

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

Μεγάλες εταιρείες τεχνολογίας, όπως π. Netflix, Amazon, Uber και Spotify Χρησιμοποιήστε μικροϋπηρεσίες για ανεξάρτητη κλιμάκωση και συχνή ανάπτυξη. Η προσέγγιση είναι κατάλληλη για εφαρμογές υψηλής επισκεψιμότητας, cloud-native, που χρειάζονται γρήγορες, απομονωμένες κυκλοφορίες.

Συνοψίστε αυτήν την ανάρτηση με: