Δώσε μου πίσω το μονόπετρό μου

Φαίνεται ότι η κορύφωση της διαφημιστικής εκστρατείας για τις μικροϋπηρεσίες είναι πίσω μας. Δεν διαβάζουμε πλέον αναρτήσεις πολλές φορές την εβδομάδα «Πώς μετέφερα το μονόλιθο μου σε 150 υπηρεσίες». Τώρα ακούω περισσότερες σκέψεις κοινής λογικής: «Δεν μισώ το μονόλιθο, με νοιάζει μόνο η αποτελεσματικότητα». Παρατηρήσαμε μάλιστα αρκετές μεταναστεύσεις από τις microservices πίσω στο monolith. Όταν μετακινείστε από μια μεγάλη εφαρμογή σε πολλές μικρότερες υπηρεσίες, θα πρέπει να λύσετε πολλά νέα προβλήματα. Ας τα απαριθμήσουμε όσο το δυνατόν συνοπτικά.

Ρύθμιση: από τη βασική χημεία στην κβαντική μηχανική

Η δημιουργία μιας βασικής βάσης δεδομένων και μιας εφαρμογής με μια διαδικασία παρασκηνίου ήταν μια αρκετά απλή διαδικασία. Δημοσιεύω το readme στο Github - και συχνά μέσα σε μια ώρα, το πολύ μερικές ώρες, όλα λειτουργούν και ξεκινάω ένα νέο έργο. Η προσθήκη και η εκτέλεση κώδικα, τουλάχιστον για το αρχικό περιβάλλον, γίνεται την πρώτη μέρα. Αλλά αν τολμήσουμε στις μικροϋπηρεσίες, ο αρχικός χρόνος εκτόξευσης εκτοξεύεται στα ύψη. Ναι, τώρα έχουμε το Docker με ενορχήστρωση και ένα σύμπλεγμα μηχανών K8, αλλά για έναν αρχάριο προγραμματιστή όλα αυτά είναι πολύ πιο περίπλοκα. Για πολλούς juniors, αυτό είναι ένα βάρος που είναι πραγματικά μια περιττή επιπλοκή.

Το σύστημα δεν είναι εύκολο να κατανοηθεί

Ας επικεντρωθούμε για λίγο στο junior μας. Με τις μονολιθικές εφαρμογές, εάν παρουσιαζόταν κάποιο σφάλμα, ήταν εύκολο να το εντοπίσετε και να προχωρήσετε αμέσως στον εντοπισμό σφαλμάτων. Τώρα έχουμε μια υπηρεσία που μιλά με μια άλλη υπηρεσία που θέτει κάτι σε ουρά σε ένα δίαυλο μηνυμάτων που επεξεργάζεται μια άλλη υπηρεσία—και μετά υπάρχει ένα σφάλμα. Πρέπει να βάλουμε όλα αυτά τα κομμάτια μαζί για να ανακαλύψουμε τελικά ότι η Υπηρεσία Α εκτελεί την έκδοση 11 και η Υπηρεσία Ε περιμένει ήδη την έκδοση 12. Αυτό είναι πολύ διαφορετικό από το τυπικό ενοποιημένο αρχείο καταγραφής μου: πρέπει να χρησιμοποιήσω ένα διαδραστικό τερματικό/εντοπιστή σφαλμάτων για να περπατήσετε μέσα από τη διαδικασία βήμα προς βήμα. Ο εντοπισμός σφαλμάτων και η κατανόηση έχουν γίνει εγγενώς πιο δύσκολες.

Εάν δεν μπορεί να διορθωθεί, ίσως τα δοκιμάσουμε

Η συνεχής ολοκλήρωση και η συνεχής ανάπτυξη γίνονται πλέον συνηθισμένες. Οι περισσότερες νέες εφαρμογές που βλέπω δημιουργούν και εκτελούν αυτόματα δοκιμές με κάθε νέα κυκλοφορία και απαιτούν τη διενέργεια δοκιμών και τον έλεγχο πριν από την εγγραφή. Πρόκειται για σπουδαίες διαδικασίες που δεν πρέπει να εγκαταλειφθούν και αποτέλεσαν μεγάλη αλλαγή για πολλές εταιρείες. Αλλά τώρα, για να δοκιμάσω πραγματικά την υπηρεσία, πρέπει να δημιουργήσω μια πλήρη λειτουργική έκδοση της εφαρμογής μου. Θυμάστε εκείνο τον νέο μηχανικό με το σύμπλεγμα K8 των 150 υπηρεσιών; Λοιπόν, τώρα θα διδάξουμε το σύστημά μας CI πώς να εμφανίζει όλα αυτά τα συστήματα για να επαληθεύσουμε ότι όλα λειτουργούν πραγματικά. Αυτό είναι πιθανώς υπερβολική προσπάθεια, επομένως απλώς θα δοκιμάσουμε κάθε μέρος μεμονωμένα: είμαι βέβαιος ότι οι προδιαγραφές μας είναι αρκετά καλές, τα API είναι καθαρά και μια αποτυχία υπηρεσίας είναι μεμονωμένη και δεν θα επηρεάσει άλλους.

Όλοι οι συμβιβασμοί έχουν έναν καλό λόγο. Σωστά?

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

Αλλά πάντα με ενδιαφέρει να μάθω για την αρχιτεκτονική τους. Σε ποιο στάδιο της μετάβασης στις μικροϋπηρεσίες βρίσκονται; Είναι ενδιαφέρον να βλέπουμε περισσότερους μηχανικούς να λένε ότι είναι ευχαριστημένοι με τη μονολιθική εφαρμογή τους. Πολλοί άνθρωποι θα επωφεληθούν από τις μικροϋπηρεσίες και τα οφέλη θα υπερβούν τα προβλήματα στη διαδρομή μετανάστευσης. Αλλά προσωπικά, δώστε μου τη μονολιθική εφαρμογή μου, ένα μέρος στην παραλία - και είμαι απόλυτα ευχαριστημένος.

Πηγή: www.habr.com

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