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

Τι είναι οι Microservices;

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

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

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

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

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

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

Σε οποιαδήποτε εφαρμογή ηλεκτρονικού εμπορίου, υπάρχουν ορισμένες τυπικές λειτουργίες όπως η Αναζήτηση, Review & Βαθμολογίες και Πληρωμές. Αυτές οι λειτουργίες είναι προσβάσιμες σε πελάτες που χρησιμοποιούν το πρόγραμμα περιήγησης ή τις εφαρμογές τους. Όταν ο προγραμματιστής του ιστότοπου ηλεκτρονικού εμπορίου αναπτύσσει την εφαρμογή, είναι μια ενιαία Μονολιθική μονάδα. Ο κώδικας για διαφορετικές λειτουργίες όπως η Αναζήτηση, RevΤο iew & Ratings και οι πληρωμές βρίσκονται στον ίδιο διακομιστή. Για να κλιμακώσετε την εφαρμογή, πρέπει να εκτελέσετε πολλές παρουσίες (διακομιστές) αυτών των εφαρμογών.

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

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

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

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

Στη Μονολιθική Architecture, όλα τα στοιχεία συγχωνεύονται σε μια ενιαία ενότητα. Όμως, στις Microservices Architecture είναι απλωμένα σε μεμονωμένες μονάδες (microservice) που επικοινωνούν μεταξύ τους όπως φαίνεται στο παραπάνω παράδειγμα Microservices.

Η επικοινωνία μεταξύ των μικροϋπηρεσιών είναι μια επικοινωνία χωρίς κατάσταση όπου κάθε ζεύγος αιτήματος και απάντησης είναι ανεξάρτητο. Ως εκ τούτου, οι Microservices μπορούν να επικοινωνούν αβίαστα. Στο Microservice Architecture, τα Δεδομένα είναι ομοσπονδιακά. Κάθε Microservice έχει ξεχωριστό χώρο αποθήκευσης δεδομένων. Επόμενο σε αυτό Java Οδηγός Microservices, θα μάθουμε για τη διαφορά μεταξύ Microservices και Monolithic αρχιτεκτονικής.

Μικροϋπηρεσίες εναντίον Μονολιθικών Archiδομή

Μικροεπιχειρήσεις Μονολιθικός Archiδομή
Κάθε μονάδα ολόκληρης της εφαρμογής θα πρέπει να είναι η μικρότερη και θα πρέπει να μπορεί να προσφέρει έναν συγκεκριμένο επιχειρηματικό στόχο. Μια ενιαία βάση κώδικα για όλους τους επιχειρηματικούς στόχους
Η εκκίνηση της υπηρεσίας είναι σχετικά γρήγορη Η εκκίνηση της υπηρεσίας απαιτεί περισσότερο χρόνο
Η απομόνωση σφαλμάτων είναι εύκολη. Ακόμα κι αν μια υπηρεσία πέσει, η άλλη μπορεί να συνεχίσει να λειτουργεί. Η απομόνωση σφαλμάτων είναι δύσκολη. Εάν κάποια συγκεκριμένη λειτουργία δεν λειτουργεί, το πλήρες σύστημα απενεργοποιείται. Για να αντιμετωπιστεί αυτό το ζήτημα, η εφαρμογή πρέπει να ξαναδημιουργηθεί, να δοκιμαστεί ξανά και επίσης να αναπτυχθεί εκ νέου.
Όλες οι μικροϋπηρεσίες θα πρέπει να συνδέονται χαλαρά, έτσι ώστε οι αλλαγές που γίνονται στη μία να μην επηρεάζουν την άλλη. Η μονολιθική αρχιτεκτονική είναι στενά συνδεδεμένη. Οι αλλαγές σε μια ενότητα κώδικα επηρεάζουν την άλλη
Οι επιχειρήσεις μπορούν να αναπτύξουν περισσότερους πόρους σε υπηρεσίες που δημιουργούν υψηλότερη απόδοση επένδυσης (ROI). Δεδομένου ότι οι υπηρεσίες δεν είναι μεμονωμένες, δεν είναι δυνατή η μεμονωμένη κατανομή πόρων
Θα μπορούσαν να διατεθούν περισσότεροι πόροι υλικού στην υπηρεσία που χρησιμοποιείται συχνά. Στο παραπάνω παράδειγμα ηλεκτρονικού εμπορίου, περισσότεροι χρήστες ελέγχουν την καταχώριση προϊόντων και αναζητούν σε σύγκριση με τις πληρωμές. Έτσι, θα μπορούσαν να διατεθούν περισσότεροι πόροι στη μικρουπηρεσία αναζήτησης και καταχώρισης προϊόντων. Η κλιμάκωση εφαρμογών είναι προκλητική αλλά και σπάταλη.
Η Microservices παραμένει πάντα συνεπής και συνεχώς διαθέσιμη. Τα εργαλεία ανάπτυξης επιβαρύνονται υπερβολικά καθώς η διαδικασία πρέπει να ξεκινήσει από την αρχή.
Τα δεδομένα είναι ενοποιημένα. Αυτό επιτρέπει στη μεμονωμένη Microservice να υιοθετήσει ένα μοντέλο δεδομένων που ταιριάζει καλύτερα στις ανάγκες της. Τα δεδομένα είναι συγκεντρωμένα.
Μικρές Εστιασμένες Ομάδες. Παράλληλη και ταχύτερη ανάπτυξη Απαιτείται μεγάλη ομάδα και σημαντική προσπάθεια διαχείρισης της ομάδας
Η αλλαγή στο μοντέλο δεδομένων μιας Microservice δεν επηρεάζει άλλες Microservice. Η αλλαγή στο μοντέλο δεδομένων επηρεάζει ολόκληρη τη βάση δεδομένων
Αλληλεπιδρά με άλλες μικροϋπηρεσίες χρησιμοποιώντας καλά καθορισμένες διεπαφές δεν ισχύει
Οι μικροϋπηρεσίες λειτουργούν με βάση την αρχή που επικεντρώνεται στα προϊόντα και όχι στα έργα Δώστε έμφαση σε ολόκληρο το έργο
Δεν υπάρχουν διασταυρούμενες εξαρτήσεις μεταξύ βάσεων κώδικα. Μπορείτε να χρησιμοποιήσετε διαφορετικές τεχνολογίες για διαφορετικές Microservices. Μία λειτουργία ή πρόγραμμα εξαρτάται από άλλες.

Προκλήσεις Microservice

  • Οι MicroServices βασίζονται η μία στην άλλη και θα πρέπει να επικοινωνούν μεταξύ τους.
  • Σε σύγκριση με τα μονολιθικά συστήματα, υπάρχουν περισσότερες υπηρεσίες για παρακολούθηση, οι οποίες αναπτύσσονται χρησιμοποιώντας διαφορετικά γλώσσες προγραμματισμού.
  • Καθώς είναι ένα κατανεμημένο σύστημα, είναι ένα εγγενώς πολύπλοκο μοντέλο.
  • Διαφορετικές υπηρεσίες θα έχουν τον ξεχωριστό μηχανισμό τους, με αποτέλεσμα μεγάλη ποσότητα μνήμης για μη δομημένα δεδομένα.
  • Απαιτείται αποτελεσματική διαχείριση και ομαδική εργασία για την αποφυγή διαδοχικών προβλημάτων
  • Η αναπαραγωγή ενός προβλήματος θα είναι μια δύσκολη εργασία όταν έχει φύγει σε μία έκδοση και επανέρχεται στην πιο πρόσφατη έκδοση.
  • Η ανεξάρτητη ανάπτυξη είναι πολύπλοκη με τις Microservices.
  • Η αρχιτεκτονική μικροϋπηρεσιών φέρνει πολλές επιβαρύνσεις.
  • Είναι δύσκολο να διαχειριστείτε την εφαρμογή όταν προστίθενται νέες υπηρεσίες στο σύστημα
  • Απαιτείται ένα ευρύ φάσμα ειδικευμένων επαγγελματιών για την υποστήριξη ετερογενώς κατανεμημένων μικροϋπηρεσιών
  • Η Microservice είναι δαπανηρή, καθώς χρειάζεται να διατηρείτε διαφορετικό χώρο διακομιστή για διαφορετικές επιχειρηματικές εργασίες.

SOA εναντίον Microservices

Οι υπηρεσίες SOA διατηρούνται στον οργανισμό από ένα μητρώο που λειτουργεί ως λίστα καταλόγου. Οι εφαρμογές πρέπει να αναζητήσουν τις υπηρεσίες στο μητρώο και να καλέσουν την υπηρεσία.

Σε έναν άλλο κόσμο, SOA είναι ακριβώς σαν μια ορχήστρα όπου κάθε καλλιτέχνης παίζει με το όργανό του/της ενώ ο μουσικός διευθυντής δίνει οδηγίες σε όλους.

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

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

Ακολουθεί μια λεπτομερής σύγκριση μεταξύ SOA και Microservices

Παράμετρος SOA Μικροεπιχειρήσεις
Τύπος σχεδιασμού Στο SOA, τα στοιχεία λογισμικού εκτίθενται στον εξωτερικό κόσμο για χρήση με τη μορφή υπηρεσιών. Η Micro Service είναι μέρος της SOA. Είναι μια υλοποίηση του SOA.
Εξάρτηση Οι επιχειρηματικές μονάδες είναι εξαρτημένες. Είναι ανεξάρτητοι μεταξύ τους.
Μέγεθος του Λογισμικού Το μέγεθος του λογισμικού είναι μεγαλύτερο από οποιοδήποτε συμβατικό λογισμικό Το μέγεθος του Λογισμικού είναι πάντα μικρό στις Microservices
Τεχνολογία στοίβα Η στοίβα τεχνολογίας είναι χαμηλότερη σε σύγκριση με τη Microservice. Η στοίβα τεχνολογίας Microservice θα μπορούσε να είναι πολύ μεγάλη
Φύση της αίτησης Μονολιθική φύση Πλήρης στοίβα στη φύση
Ανεξάρτητη και Εστίαση Οι εφαρμογές SOA έχουν δημιουργηθεί για την εκτέλεση πολλαπλών επιχειρηματικών εργασιών. Είναι κατασκευασμένα για να εκτελούν μια ενιαία επιχειρηματική εργασία.
Ανάπτυξη Η διαδικασία εγκατάστασης είναι χρονοβόρα. Η ανάπτυξη είναι απλή και λιγότερο χρονοβόρα.
Κόστος – αποτελεσματικότητα Πιο οικονομικό. Less αποδοτική.
Απεριόριστες δυνατότητες Less σε σύγκριση με τις Microservices. Εξαιρετικά επεκτάσιμο.
Επαγγελματική λογική Τα στοιχεία επιχειρησιακής λογικής αποθηκεύονται μέσα σε έναν τομέα υπηρεσίας Απλά πρωτόκολλα καλωδίων (HTTP με XML JSON) Το API οδηγείται με SDK/Πελάτες Η επιχειρησιακή λογική μπορεί να ισχύσει σε όλους τους τομείς Business Service Bus όπως επίπεδα μεταξύ υπηρεσιών Middleware

Εργαλεία Microservices

1) Wiremock: Testing Microservices

WireMock είναι μια ευέλικτη βιβλιοθήκη για αποκόλληση και κοροϊδία υπηρεσιών web. Μπορεί να διαμορφώσει την απόκριση που επιστρέφεται από το HTTP API όταν λαμβάνει ένα συγκεκριμένο αίτημα. Χρησιμοποιείται επίσης για τη δοκιμή Microservices.

Download link:http://wiremock.org/

2) Ντόκερ

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

Download link:https://www.docker.com/

3) Υστρίξ

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

Download Link:https://github.com/Netflix/Hystrix

καλυτερα Practices of Microservices Archiδομή

  • Ξεχωριστή αποθήκευση δεδομένων για κάθε Microservice
  • Διατηρήστε κωδικό παρόμοιου επιπέδου ωριμότητας.
  • Ξεχωριστή κατασκευή για κάθε υπηρεσία Micro.
  • Να αντιμετωπίζετε πάντα - σοβαρά ως ανιθαγενείς.

Σύνοψη

  • Οι Microservices είναι ένα μοτίβο αρχιτεκτονικής προσανατολισμένο στις υπηρεσίες όπου οι εφαρμογές δημιουργούνται ως μια συλλογή από διάφορες μικρότερες ανεξάρτητες μονάδες υπηρεσιών.
  • Μικροϋπηρεσία ArchiΤο tecture είναι ένα στυλ αρχιτεκτονικής ανάπτυξης που επιτρέπει τη δημιουργία μιας εφαρμογής ως μια συλλογή μικρών αυτόνομων υπηρεσιών που έχουν αναπτυχθεί για έναν επιχειρηματικό τομέα.
  • Η μονολιθική αρχιτεκτονική είναι σαν ένα μεγάλο δοχείο στο οποίο όλα τα στοιχεία λογισμικού μιας εφαρμογής είναι συνδεδεμένα σε ένα ενιαίο πακέτο
  • Σε μια Microservice, κάθε μονάδα ολόκληρης της εφαρμογής θα πρέπει να είναι η μικρότερη και θα πρέπει να μπορεί να προσφέρει έναν συγκεκριμένο επιχειρηματικό στόχο
  • Στη Μονολιθική αρχιτεκτονική, η μεγάλη βάση κώδικα μπορεί να επιβραδύνει ολόκληρη τη διαδικασία ανάπτυξης. Οι νέες εκδόσεις μπορεί να χρειαστούν μήνες. Η συντήρηση του κώδικα είναι δύσκολη
  • Δύο τύποι Μικροϋπηρεσιών είναι 1) Απάτριδες 2) Κράτος
  • Μικροϋπηρεσίες σε Java βασίζονται ο ένας στον άλλον και θα πρέπει να επικοινωνούν μεταξύ τους. Σας βοηθά να δίνετε έμφαση σε ένα συγκεκριμένο χαρακτηριστικό και επιχειρηματικές ανάγκες
  • Η αρχιτεκτονική προσανατολισμένη στις υπηρεσίες, γνωστή σύντομα ως SOA, είναι μια εξέλιξη του κατανεμημένου υπολογισμού που βασίζεται στο μοντέλο σχεδίασης αιτήματος ή απάντησης για σύγχρονες και ασύγχρονες εφαρμογές
  • Στο SOA, τα στοιχεία λογισμικού εκτίθενται στον εξωτερικό κόσμο για χρήση με τη μορφή υπηρεσιών, ενώ το Micro Service είναι μέρος του SOA. Είναι μια υλοποίηση του SOA
  • Το Wiremock, το Docker και το Hystrix είναι μερικά δημοφιλή εργαλεία Microservices