Τι είναι το Service Mesh;

Γεια σας και πάλι!.. Την παραμονή της έναρξης του μαθήματος "Αρχιτέκτονας λογισμικού" Ετοιμάσαμε άλλη μια χρήσιμη μετάφραση.

Τι είναι το Service Mesh;

Ένα πλέγμα υπηρεσιών είναι ένα διαμορφώσιμο επίπεδο υποδομής χαμηλής καθυστέρησης που απαιτείται για τη διαχείριση μεγάλων όγκων διαδικασιών επικοινωνιών που βασίζονται σε δίκτυο μεταξύ διεπαφών προγραμματισμού εφαρμογών (API). Το Service Mesh επιτρέπει τη γρήγορη, αξιόπιστη και ασφαλή επικοινωνία μεταξύ των υπηρεσιών υποδομής εφαρμογών με εμπορευματοκιβώτια και συχνά εφήμερες. Το Service Mesh παρέχει δυνατότητες όπως ανακάλυψη υπηρεσίας, εξισορρόπηση φορτίου, κρυπτογράφηση, διαφάνεια, ιχνηλασιμότητα, έλεγχο ταυτότητας και εξουσιοδότηση και υποστήριξη μοτίβων αυτόματης απενεργοποίησης (διακόπτη).
Ένα πλέγμα υπηρεσίας συνήθως υλοποιείται παρέχοντας σε κάθε παρουσία υπηρεσίας μια παρουσία διακομιστή μεσολάβησης, που ονομάζεται Αμάξι μοτοσυκλέττας. Αμάξι μοτοσυκλέττας χειρίζεται τις επικοινωνίες μεταξύ υπηρεσιών, παρακολουθεί και επιλύει ζητήματα ασφάλειας, δηλαδή ό,τι μπορεί να αφαιρεθεί από μεμονωμένες υπηρεσίες. Με αυτόν τον τρόπο, οι προγραμματιστές μπορούν να γράφουν, να διατηρούν και να εξυπηρετούν τον κώδικα εφαρμογής σε υπηρεσίες και οι διαχειριστές συστήματος μπορούν να εργαστούν με το Service Mesh και να εκτελέσουν την εφαρμογή.

Το Istio από τις Google, IBM και Lyft είναι αυτή τη στιγμή η πιο διάσημη αρχιτεκτονική πλέγματος υπηρεσιών. Και το Kubernetes, το οποίο αναπτύχθηκε αρχικά στην Google, είναι τώρα το μόνο πλαίσιο ενορχήστρωσης κοντέινερ που υποστηρίζεται από την Istio. Οι πωλητές προσπαθούν να δημιουργήσουν εμπορικά υποστηριζόμενες εκδόσεις του Istio. Θα είναι ενδιαφέρον να δούμε τι νέα πράγματα μπορούν να φέρουν στο έργο ανοιχτού κώδικα.

Ωστόσο, το Istio δεν είναι η μόνη επιλογή καθώς αναπτύσσονται άλλες εφαρμογές Service Mesh. Πρότυπο sidecar proxy είναι η πιο δημοφιλής υλοποίηση, όπως μπορεί να κριθεί από τα έργα Buoyant, HashiCorp, Solo.io και άλλα. Υπάρχουν επίσης εναλλακτικές αρχιτεκτονικές: η εργαλειοθήκη τεχνολογίας Netflix είναι μία από τις προσεγγίσεις όπου η λειτουργικότητα Service Mesh υλοποιείται μέσω των βιβλιοθηκών Ribbon, Hysterix, Eureka, Archaius, καθώς και πλατφορμών όπως το Azure Service Fabric.

Το Service Mesh έχει επίσης τη δική του ορολογία για εξαρτήματα και λειτουργίες σέρβις:

  • Πλαίσιο ενορχήστρωσης κοντέινερ. Καθώς όλο και περισσότερα κοντέινερ προστίθενται στην υποδομή της εφαρμογής, υπάρχει ανάγκη για ένα ξεχωριστό εργαλείο για την παρακολούθηση και τη διαχείριση κοντέινερ - ένα πλαίσιο ενορχήστρωσης κοντέινερ. Η Kubernetes έχει καταλάβει σταθερά αυτή τη θέση, τόσο πολύ που ακόμη και οι κύριοι ανταγωνιστές της Docker Swarm και Mesosphere DC/OS προσφέρουν ενοποίηση με το Kubernetes ως εναλλακτική λύση.
  • Υπηρεσίες και περιπτώσεις (Kubernetes Pods). Ένα παράδειγμα είναι ένα μεμονωμένο αντίγραφο μιας microservice που εκτελείται. Μερικές φορές ένα παράδειγμα είναι ένα δοχείο. Στο Kubernetes, ένα παράδειγμα αποτελείται από μια μικρή ομάδα ανεξάρτητων δοχείων που ονομάζονται pod. Οι πελάτες σπάνια έχουν άμεση πρόσβαση σε μια παρουσία ή μια ομάδα διαφημίσεων, πιο συχνά, έχουν πρόσβαση σε μια υπηρεσία, η οποία είναι ένα σύνολο πανομοιότυπων, επεκτάσιμων και ανεκτικών σε σφάλματα παρουσιών ή ομάδων (αντίγραφα).
  • Sidecar Proxy. Το Sidecar Proxy λειτουργεί με μία μόνο παρουσία ή ομάδα. Ο σκοπός του Sidecar Proxy είναι η δρομολόγηση ή η κυκλοφορία διακομιστή μεσολάβησης που προέρχεται από το κοντέινερ με το οποίο συνεργάζεται και η επιστροφή της κυκλοφορίας. Το Sidecar αλληλεπιδρά με άλλα Sidecar Proxies και διαχειρίζεται από ένα πλαίσιο ενορχήστρωσης. Πολλές υλοποιήσεις Service Mesh χρησιμοποιούν τον διακομιστή μεσολάβησης Sidecar για την παρακολούθηση και τη διαχείριση όλης της κυκλοφορίας εντός και εκτός μιας παρουσίας ή μιας ομάδας διαφημίσεων.
  • Ανακάλυψη υπηρεσίας. Όταν μια παρουσία χρειάζεται να επικοινωνήσει με μια άλλη υπηρεσία, πρέπει να βρει (να ανακαλύψει) μια υγιή και διαθέσιμη παρουσία της άλλης υπηρεσίας. Συνήθως, το στιγμιότυπο εκτελεί αναζητήσεις DNS. Το πλαίσιο ενορχήστρωσης κοντέινερ διατηρεί μια λίστα με παρουσίες που είναι έτοιμες να λάβουν αιτήματα και παρέχει μια διεπαφή για ερωτήματα DNS.
  • Εξισορρόπηση φορτίου. Τα περισσότερα πλαίσια ενορχήστρωσης κοντέινερ παρέχουν εξισορρόπηση φορτίου στο επίπεδο 4 (μεταφορά). Το Service Mesh υλοποιεί πιο σύνθετη εξισορρόπηση φορτίου στο επίπεδο 7 (επίπεδο εφαρμογής), πλούσια σε αλγόριθμους και πιο αποτελεσματική στη διαχείριση της κυκλοφορίας. Οι ρυθμίσεις εξισορρόπησης φορτίου μπορούν να αλλάξουν χρησιμοποιώντας το API, επιτρέποντάς σας να ενορχηστρώνετε γαλαζοπράσινες ή καναρινιές αναπτύξεις.
  • Κρυπτογράφηση. Το Service Mesh μπορεί να κρυπτογραφήσει και να αποκρυπτογραφήσει αιτήματα και απαντήσεις, αφαιρώντας αυτό το βάρος από τις υπηρεσίες. Το Service Mesh μπορεί επίσης να βελτιώσει την απόδοση δίνοντας προτεραιότητα ή επαναχρησιμοποιώντας υπάρχουσες μόνιμες συνδέσεις, μειώνοντας την ανάγκη για ακριβούς υπολογισμούς για τη δημιουργία νέων συνδέσεων. Η πιο κοινή εφαρμογή κρυπτογράφησης κίνησης είναι αμοιβαίο TLS (mTLS), όπου μια υποδομή δημόσιου κλειδιού (PKI) δημιουργεί και διανέμει πιστοποιητικά και κλειδιά για χρήση από το Sidecar Proxy.
  • Έλεγχος ταυτότητας και εξουσιοδότηση. Το Service Mesh μπορεί να εξουσιοδοτήσει και να επαληθεύσει αιτήματα που γίνονται εκτός ή εντός της εφαρμογής, στέλνοντας μόνο επικυρωμένα αιτήματα σε παρουσίες.
  • Υποστήριξη μοτίβου αυτόματης απενεργοποίησης. Υποστηρίζει Service Mesh μοτίβο αυτόματης απενεργοποίησης, το οποίο απομονώνει ανθυγιεινά περιστατικά και στη συνέχεια τα επιστρέφει σταδιακά στη δεξαμενή των υγιών περιπτώσεων όταν χρειάζεται.

Καλείται το τμήμα μιας εφαρμογής Service Mesh που διαχειρίζεται την κυκλοφορία δικτύου μεταξύ των παρουσιών Επίπεδο δεδομένων. Δημιουργήστε και αναπτύξτε διαμόρφωση που ελέγχει τη συμπεριφορά Επίπεδο δεδομένων, εκτελείται χρησιμοποιώντας ξεχωριστό Επίπεδο ελέγχου. Επίπεδο ελέγχου συνήθως περιλαμβάνει ή έχει σχεδιαστεί για σύνδεση σε ένα API, CLI ή GUI για τον έλεγχο της εφαρμογής.

Τι είναι το Service Mesh;
Το Control Plane στο Service Mesh κατανέμει τη διαμόρφωση μεταξύ του Sidecar Proxy και του Data Plane.

Η αρχιτεκτονική Service Mesh χρησιμοποιείται συχνά για την επίλυση πολύπλοκων λειτουργικών προβλημάτων χρησιμοποιώντας κοντέινερ και μικροϋπηρεσίες. Πρωτοπόροι στον χώρο μικροϋπηρεσίες είναι εταιρείες όπως η Lyft, το Netflix και το Twitter, που παρέχουν σταθερές υπηρεσίες σε εκατομμύρια χρήστες σε όλο τον κόσμο. (Ακολουθεί μια λεπτομερής ματιά σε μερικές από τις αρχιτεκτονικές προκλήσεις που αντιμετώπισε το Netflix.). Για λιγότερο απαιτητικές εφαρμογές, μάλλον θα αρκούν απλούστερες αρχιτεκτονικές.

Η αρχιτεκτονική Service Mesh είναι απίθανο να είναι ποτέ η απάντηση σε όλα τα ζητήματα λειτουργίας και παράδοσης της εφαρμογής. Οι αρχιτέκτονες και οι προγραμματιστές έχουν ένα τεράστιο οπλοστάσιο εργαλείων και μόνο ένα από αυτά είναι ένα σφυρί, το οποίο, μεταξύ πολλών εργασιών, πρέπει να λύσει μόνο ένα - το σφυρί καρφιών. Microservices Reference Architecture από την NGINX, για παράδειγμα, περιλαμβάνει πολλά διαφορετικά μοντέλα που παρέχουν μια συνέχεια προσεγγίσεων για την επίλυση προβλημάτων χρησιμοποιώντας μικροϋπηρεσίες.

Τα στοιχεία που συνδυάζονται σε μια αρχιτεκτονική Service Mesh, όπως το NGINX, τα κοντέινερ, τα Kubernetes και οι microservices ως αρχιτεκτονική προσέγγιση, μπορούν να είναι εξίσου παραγωγικά σε εφαρμογές που δεν είναι Service Mesh. Για παράδειγμα, το Istio σχεδιάστηκε ως μια ολοκληρωμένη αρχιτεκτονική πλέγματος υπηρεσιών, αλλά η σπονδυλωτότητά του σημαίνει ότι οι προγραμματιστές μπορούν να επιλέξουν και να εφαρμόσουν μόνο τα τεχνολογικά στοιχεία που χρειάζονται. Έχοντας αυτό υπόψη, είναι σημαντικό να αναπτύξετε μια σαφή κατανόηση της έννοιας του Service Mesh, ακόμα κι αν δεν είστε σίγουροι ότι θα μπορέσετε ποτέ να την εφαρμόσετε πλήρως στην εφαρμογή σας.

Modular μονόλιθοι και DDD

Πηγή: www.habr.com

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