Βασικά σημεία
- Εδώ και αρκετά χρόνια μας έχουν υποσχεθεί ότι οι υπολογιστές χωρίς διακομιστή (serverless) θα ανοίξουν μια νέα εποχή χωρίς συγκεκριμένο λειτουργικό σύστημα για την εκτέλεση εφαρμογών. Μας είπαν ότι μια τέτοια δομή θα έλυνε πολλά προβλήματα επεκτασιμότητας. Στην πραγματικότητα, όλα είναι διαφορετικά.
- Αν και πολλοί βλέπουν την τεχνολογία χωρίς διακομιστές ως μια νέα ιδέα, οι ρίζες της εντοπίζονται στο 2006 με το Zimki PaaS και το Google App Engine, τα οποία χρησιμοποιούν μια αρχιτεκτονική χωρίς διακομιστή.
- Υπάρχουν τέσσερις λόγοι για τους οποίους η επανάσταση χωρίς διακομιστή έχει σταματήσει, από την περιορισμένη υποστήριξη γλώσσας προγραμματισμού μέχρι ζητήματα απόδοσης.
- Οι υπολογιστές χωρίς διακομιστή δεν είναι και τόσο άχρηστοι. Μακριά από αυτό. Ωστόσο, δεν πρέπει να θεωρούνται ως άμεση αντικατάσταση των διακομιστών. Για ορισμένες εφαρμογές, μπορεί να είναι ένα εύχρηστο εργαλείο.
Ο διακομιστής πέθανε, ζήτω ο διακομιστής!
Αυτή είναι η κραυγή μάχης των οπαδών της επανάστασης χωρίς διακομιστές. Μια γρήγορη ματιά στον τύπο του κλάδου τα τελευταία χρόνια είναι αρκετή για να συμπεράνουμε ότι το παραδοσιακό μοντέλο διακομιστή είναι νεκρό και ότι σε λίγα χρόνια όλοι θα χρησιμοποιούμε αρχιτεκτονικές χωρίς διακομιστή.
Όπως γνωρίζει οποιοσδήποτε στον κλάδο, και όπως επίσης τονίσαμε στο άρθρο μας για , αυτό είναι λάθος. Παρά τα πολλά άρθρα επί της ουσίας , δεν πραγματοποιήθηκε ποτέ. Στην πραγματικότητα, ότι αυτή η επανάσταση μπορεί να έχει φτάσει σε αδιέξοδο.
Μερικές από τις υποσχέσεις για μοντέλα χωρίς διακομιστή έχουν σίγουρα πραγματοποιηθεί, αλλά όχι όλες. Οχι όλοι.
Σε αυτό το άρθρο θέλω να εξετάσω τους λόγους αυτής της κατάστασης. Γιατί η έλλειψη ευελιξίας των μοντέλων χωρίς διακομιστή εξακολουθεί να αποτελεί εμπόδιο στην ευρύτερη υιοθέτησή τους, αν και παραμένουν χρήσιμα σε συγκεκριμένες, καλά καθορισμένες περιστάσεις.
Τι υποσχέθηκαν οι ειδικοί της πληροφορικής χωρίς διακομιστή
Πριν προχωρήσουμε στα προβλήματα των υπολογιστών χωρίς διακομιστή, ας δούμε τι έπρεπε να παρέχουν. ήταν πολυάριθμες και - κατά καιρούς - πολύ φιλόδοξες.
Για όσους δεν είναι εξοικειωμένοι με τον όρο, εδώ είναι ένας σύντομος ορισμός. Ο υπολογισμός χωρίς διακομιστή ορίζει μια αρχιτεκτονική στην οποία οι εφαρμογές (ή τμήματα εφαρμογών) εκτελούνται κατ' απαίτηση σε περιβάλλοντα χρόνου εκτέλεσης που συνήθως φιλοξενούνται απομακρυσμένα. Επιπλέον, μπορούν να φιλοξενηθούν συστήματα χωρίς διακομιστή. Η δημιουργία ισχυρών συστημάτων χωρίς διακομιστές αποτελεί βασικό μέλημα των διαχειριστών συστημάτων και των εταιρειών SaaS τα τελευταία χρόνια, καθώς (υποστηρίζεται) αυτή η αρχιτεκτονική προσφέρει πολλά βασικά πλεονεκτήματα σε σχέση με το «παραδοσιακό» μοντέλο πελάτη/διακομιστή:
- Τα μοντέλα χωρίς διακομιστή δεν απαιτούν από τους χρήστες να διατηρούν τα δικά τους λειτουργικά συστήματα ή ακόμη και να δημιουργούν εφαρμογές που είναι συμβατές με συγκεκριμένα λειτουργικά συστήματα. Αντίθετα, οι προγραμματιστές δημιουργούν κοινόχρηστο κώδικα, τον ανεβάζουν σε μια πλατφόρμα χωρίς διακομιστή και τον παρακολουθούν να εκτελείται.
- Οι πόροι σε πλαίσια χωρίς διακομιστή συνήθως χρεώνονται ανά λεπτό (ή ακόμα και δευτερόλεπτα). Αυτό σημαίνει ότι οι πελάτες πληρώνουν μόνο για το χρόνο εκτέλεσης του κώδικα. Αυτό συγκρίνεται ευνοϊκά με το παραδοσιακό cloud VM, όπου το μηχάνημα είναι σε αδράνεια τις περισσότερες φορές, αλλά πρέπει να πληρώσετε για αυτό.
- Το πρόβλημα της επεκτασιμότητας λύθηκε επίσης. Οι πόροι σε πλαίσια χωρίς διακομιστή εκχωρούνται δυναμικά, έτσι ώστε το σύστημα να μπορεί εύκολα να αντιμετωπίσει τις ξαφνικές αυξήσεις της ζήτησης.
Εν ολίγοις, τα μοντέλα χωρίς διακομιστή παρέχουν ευέλικτες, χαμηλού κόστους, επεκτάσιμες λύσεις. Είμαι έκπληκτος που δεν σκεφτήκαμε αυτή την ιδέα νωρίτερα.
Είναι πραγματικά μια νέα ιδέα;
Στην πραγματικότητα η ιδέα δεν είναι καινούργια. Η ιδέα να επιτρέπεται στους χρήστες να πληρώνουν μόνο για το χρόνο εκτέλεσης του κώδικα υπάρχει από τότε που εισήχθη στο πλαίσιο του το 2006, και περίπου την ίδια περίοδο, η Google App Engine βρήκε μια πολύ παρόμοια λύση.
Στην πραγματικότητα, αυτό που τώρα αποκαλούμε μοντέλο "χωρίς διακομιστή" είναι παλαιότερο από πολλές από τις τεχνολογίες που ονομάζονται τώρα "σύννεφο εγγενές" και παρέχουν σχεδόν το ίδιο. Όπως σημειώθηκε, τα μοντέλα χωρίς διακομιστή είναι ουσιαστικά απλώς μια επέκταση του επιχειρηματικού μοντέλου SaaS που υπάρχει εδώ και δεκαετίες.
Αξίζει επίσης να αναγνωρίσουμε ότι το μοντέλο χωρίς διακομιστή δεν είναι αρχιτεκτονική FaaS, αν και υπάρχει σύνδεση μεταξύ των δύο. Το FaaS είναι ουσιαστικά το υπολογιστικό τμήμα μιας αρχιτεκτονικής χωρίς διακομιστή, αλλά δεν αντιπροσωπεύει ολόκληρο το σύστημα.
Γιατί λοιπόν όλη αυτή η διαφημιστική εκστρατεία; Λοιπόν, καθώς ο ρυθμός διείσδυσης του Διαδικτύου στις αναπτυσσόμενες χώρες συνεχίζει να εκτοξεύεται, το ίδιο συμβαίνει και με τη ζήτηση για υπολογιστικούς πόρους. Για παράδειγμα, πολλές χώρες με ταχέως αναπτυσσόμενους τομείς ηλεκτρονικού εμπορίου απλά δεν διαθέτουν την υπολογιστική υποδομή για εφαρμογές σε αυτές τις πλατφόρμες. Εδώ μπαίνουν οι πλατφόρμες χωρίς διακομιστές επί πληρωμή.
Προβλήματα με μοντέλα χωρίς διακομιστή
Το αλίευμα είναι ότι τα μοντέλα χωρίς διακομιστή έχουν… προβλήματα. Μην με παρεξηγήσετε: δεν λέω ότι είναι κακές από μόνες τους ή ότι δεν παρέχουν σημαντική αξία σε ορισμένες εταιρείες σε ορισμένες περιπτώσεις. Αλλά ο κύριος ισχυρισμός της «επανάστασης» - ότι η αρχιτεκτονική χωρίς διακομιστές θα αντικαταστήσει γρήγορα την παραδοσιακή - δεν γίνεται ποτέ πραγματικότητα.
Να γιατί.
Περιορισμένη υποστήριξη για γλώσσες προγραμματισμού
Οι περισσότερες πλατφόρμες χωρίς διακομιστή επιτρέπουν την εκτέλεση μόνο εφαρμογών γραμμένων σε συγκεκριμένες γλώσσες. Αυτό περιορίζει σοβαρά την ευελιξία και την προσαρμοστικότητα αυτών των συστημάτων.
Οι πλατφόρμες χωρίς διακομιστή θεωρείται ότι υποστηρίζουν τις περισσότερες κύριες γλώσσες. Οι λειτουργίες AWS Lambda και Azure παρέχουν επίσης ένα περιτύλιγμα για την εκτέλεση εφαρμογών και λειτουργιών σε μη υποστηριζόμενες γλώσσες, αν και αυτό έχει συχνά κόστος απόδοσης. Έτσι, για τους περισσότερους οργανισμούς, αυτός ο περιορισμός συνήθως δεν είναι μεγάλος. Αλλά εδώ είναι το θέμα. Ένα από τα πλεονεκτήματα των μοντέλων χωρίς διακομιστή υποτίθεται ότι είναι ότι τα ασαφή, σπάνια χρησιμοποιούμενα προγράμματα μπορούν να χρησιμοποιηθούν φθηνότερα, επειδή πληρώνετε μόνο για το χρόνο που εκτελούνται. Και τα σκοτεινά, σπάνια χρησιμοποιούμενα προγράμματα γράφονται συχνά σε ... σκοτεινές, σπάνια χρησιμοποιούμενες γλώσσες προγραμματισμού.
Αυτό υπονομεύει ένα από τα βασικά πλεονεκτήματα του μοντέλου χωρίς διακομιστή.
Δέσμευση σε έναν πωλητή
Το δεύτερο πρόβλημα με τις πλατφόρμες χωρίς διακομιστές, ή τουλάχιστον με τον τρόπο εφαρμογής τους, είναι ότι συνήθως δεν μοιάζουν σε λειτουργικό επίπεδο. Πρακτικά δεν υπάρχει τυποποίηση όσον αφορά τις λειτουργίες γραφής, την ανάπτυξη και τη διαχείριση. Αυτό σημαίνει ότι η μετεγκατάσταση χαρακτηριστικών από μια πλατφόρμα σε άλλη είναι εξαιρετικά χρονοβόρα.
Το πιο δύσκολο μέρος της μετάβασης σε ένα μοντέλο χωρίς διακομιστή δεν είναι τα υπολογιστικά χαρακτηριστικά, τα οποία είναι συνήθως απλώς αποσπάσματα κώδικα, αλλά ο τρόπος με τον οποίο οι εφαρμογές επικοινωνούν με συνδεδεμένα συστήματα, όπως η αποθήκευση αντικειμένων, η διαχείριση ταυτότητας και οι ουρές. Οι λειτουργίες μπορούν να μετακινηθούν, αλλά η υπόλοιπη εφαρμογή δεν μπορεί. Αυτό είναι ακριβώς το αντίθετο από τις υποσχόμενες φθηνές και ευέλικτες πλατφόρμες.
Ορισμένοι υποστηρίζουν ότι τα μοντέλα χωρίς διακομιστή είναι νέα και δεν υπάρχει χρόνος για τυποποίηση του τρόπου λειτουργίας τους. Αλλά δεν είναι τόσο καινούργια, όπως σημείωσα παραπάνω, και πολλές άλλες τεχνολογίες cloud, όπως τα κοντέινερ, έχουν ήδη γίνει πολύ πιο βολικές λόγω της ανάπτυξης και της ευρείας υιοθέτησης καλών προτύπων.
Παραγωγικότητα
Η υπολογιστική απόδοση πλατφορμών χωρίς διακομιστές είναι δύσκολο να μετρηθεί, εν μέρει επειδή οι πωλητές τείνουν να κρατούν μυστικές πληροφορίες. Οι περισσότεροι υποστηρίζουν ότι οι λειτουργίες σε απομακρυσμένες πλατφόρμες χωρίς διακομιστή εκτελούνται εξίσου γρήγορα με τους εσωτερικούς διακομιστές, εκτός από μερικά αναπόφευκτα ζητήματα καθυστέρησης.
Ωστόσο, ορισμένα στοιχεία δείχνουν το αντίθετο. Λειτουργίες που δεν έχουν εκτελεστεί στο παρελθόν σε μια συγκεκριμένη πλατφόρμα ή δεν έχουν εκτελεστεί για κάποιο χρονικό διάστημα, χρειάζονται λίγο χρόνο για να αρχικοποιηθούν. Αυτό πιθανότατα οφείλεται στο ότι ο κώδικάς τους έχει μεταφερθεί σε κάποιο λιγότερο άμεσα διαθέσιμο μέσο αποθήκευσης, αν και - όπως και με τα σημεία αναφοράς - οι περισσότεροι προμηθευτές δεν θα σας πουν για τη μεταφορά δεδομένων.
Φυσικά, υπάρχουν διάφοροι τρόποι για να το παρακάμψετε. Το ένα είναι να βελτιστοποιήσετε τις δυνατότητες για οποιαδήποτε γλώσσα cloud στην οποία εκτελείται η πλατφόρμα χωρίς διακομιστή, αλλά αυτό υπονομεύει κάπως τον ισχυρισμό ότι αυτές οι πλατφόρμες είναι "ευέλικτες".
Μια άλλη προσέγγιση είναι να διασφαλιστεί ότι τα κρίσιμα για την απόδοση προγράμματα εκτελούνται τακτικά για να διατηρούνται "φρέσκα". Αυτή η δεύτερη προσέγγιση, φυσικά, είναι λίγο αντίθετη στον ισχυρισμό ότι οι πλατφόρμες χωρίς διακομιστή είναι πιο αποδοτικές από πλευράς κόστους επειδή πληρώνετε μόνο για το χρόνο εκτέλεσης των προγραμμάτων σας. Οι πάροχοι cloud έχουν εισαγάγει νέους τρόπους για τη μείωση των ψυχρών εκκινήσεων, αλλά πολλοί από αυτούς απαιτούν "κλίμακα σε ένα" (κλίμακα σε ένα), γεγονός που υπονομεύει την αρχική αξία του FaaS.
Το πρόβλημα της ψυχρής εκκίνησης μπορεί να αντιμετωπιστεί εν μέρει με την εσωτερική λειτουργία συστημάτων χωρίς διακομιστές, αλλά αυτό γίνεται με δικά του έξοδα και παραμένει μια εξειδικευμένη επιλογή για ομάδες με καλούς πόρους.
Δεν μπορείτε να εκτελέσετε ολόκληρες εφαρμογές
Τέλος, ίσως ο πιο σημαντικός λόγος για τον οποίο οι αρχιτεκτονικές χωρίς διακομιστή δεν θα αντικαταστήσουν σύντομα τα παραδοσιακά μοντέλα είναι ότι (γενικά) δεν μπορούν να τρέξουν ολόκληρες εφαρμογές.
Πιο συγκεκριμένα, δεν είναι πρακτικό από άποψη κόστους. Το επιτυχημένο μονόλιθο πιθανότατα δεν θα πρέπει να μετατραπεί σε ένα σύνολο τεσσάρων δωδεκάδων συναρτήσεων που συνδέονται μεταξύ τους από οκτώ πύλες, σαράντα ουρές και δώδεκα παρουσίες βάσης δεδομένων. Για το λόγο αυτό, το πρόγραμμα χωρίς διακομιστή είναι πιο κατάλληλο για νέες εξελίξεις. Ουσιαστικά καμία υπάρχουσα εφαρμογή (αρχιτεκτονική) δεν μπορεί να μεταφερθεί. Μπορείτε να μεταναστεύσετε, αλλά πρέπει να ξεκινήσετε από το μηδέν.
Αυτό σημαίνει ότι στη συντριπτική πλειονότητα των περιπτώσεων, οι πλατφόρμες χωρίς διακομιστές χρησιμοποιούνται ως συμπλήρωμα σε διακομιστές υποστήριξης για την εκτέλεση εργασιών με υπολογιστική ένταση. Αυτό είναι πολύ διαφορετικό από τις άλλες δύο μορφές υπολογιστικού νέφους, τα κοντέινερ και τις εικονικές μηχανές, που προσφέρουν έναν ολιστικό τρόπο εκτέλεσης απομακρυσμένων υπολογιστών. Αυτό δείχνει μια από τις προκλήσεις της μετάβασης από τις μικροϋπηρεσίες σε συστήματα χωρίς διακομιστή.
Φυσικά, αυτό δεν είναι πάντα πρόβλημα. Η ικανότητα να χρησιμοποιείτε περιοδικά τεράστιους υπολογιστικούς πόρους χωρίς να αγοράζετε το δικό σας υλικό μπορεί να αποφέρει πραγματικά και διαρκή οφέλη σε πολλούς οργανισμούς. Αλλά εάν ορισμένες εφαρμογές βρίσκονται σε εσωτερικούς διακομιστές και άλλες σε αρχιτεκτονικές cloud χωρίς διακομιστή, τότε η διαχείριση εισέρχεται σε ένα νέο επίπεδο πολυπλοκότητας.
Ζήτω η επανάσταση?
Παρά όλα αυτά τα παράπονα, δεν είμαι αντίθετος με τις λύσεις χωρίς διακομιστή καθαυτές. Τίμια. Απλώς οι προγραμματιστές πρέπει να καταλάβουν - ειδικά αν εξερευνούν μοντέλα χωρίς διακομιστή για πρώτη φορά - ότι αυτή η τεχνολογία δεν αντικαθιστά άμεσα τους διακομιστές. Αντίθετα, ρίξτε μια ματιά στις συμβουλές και τους πόρους μας και αποφασίστε πώς να εφαρμόσετε καλύτερα αυτό το μοντέλο.
Πηγή: www.habr.com
