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

Τι είναι οι Microservices;

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

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

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

Με λαϊκούς όρους, μπορείς να πεις ότι το Monolithic archiΤο tecture είναι σαν ένα μεγάλο δοχείο στο οποίο όλα τα στοιχεία λογισμικού μιας εφαρμογής είναι ενωμένα σε ένα ενιαίο πακέτο.

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

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

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

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

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

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

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

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

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

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

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

Προκλήσεις Microservice

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

SOA εναντίον Microservices

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

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

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

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

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

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

Εργαλεία Microservices

1) Wiremock: Δοκιμές 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

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

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

Χαρακτηριστικά

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