Προγραμματισμός

Τι είναι χωρίς διακομιστές; Ο υπολογιστής χωρίς διακομιστή εξήγησε

Οι προγραμματιστές περνούν αμέτρητες ώρες για την επίλυση επιχειρηματικών προβλημάτων με κώδικα. Στη συνέχεια, είναι η σειρά της ομάδας ops να περνά αμέτρητες ώρες, πρώτα να καταλάβει πώς να πάρει τον κώδικα που οι προγραμματιστές γράφουν και να εκτελούν σε οποιουσδήποτε υπολογιστές είναι διαθέσιμοι, και δεύτερον να διασφαλίζουν ότι αυτοί οι υπολογιστές λειτουργούν ομαλά. Το δεύτερο μέρος είναι πραγματικά ένα ατελείωτο έργο. Γιατί να μην αφήσετε αυτό το μέρος σε κάποιον άλλο;

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

Τι είναι ο υπολογιστής χωρίς διακομιστή;

Ο υπολογιστής χωρίς διακομιστή είναι ένα μοντέλο εκτέλεσης για το σύννεφο στο οποίο ένας πάροχος cloud εκχωρεί δυναμικά - και στη συνέχεια χρεώνει τον χρήστη - μόνο τους πόρους υπολογισμού και τον αποθηκευτικό χώρο που απαιτούνται για την εκτέλεση ενός συγκεκριμένου κώδικα. Φυσικά, εξακολουθούν να συμμετέχουν διακομιστές, αλλά η παροχή και η συντήρησή τους φροντίζονται εξ ολοκλήρου από τον πάροχο. Ο Chris Munns, υποστηρικτής της Amazon για διακομιστές, είπε σε ένα συνέδριο του 2017 ότι, από τη σκοπιά της ομάδας που γράφει και αναπτύσσει τον κώδικα, «δεν υπάρχουν διακομιστές για διαχείριση ή παροχή. Αυτό δεν περιλαμβάνει τίποτα που θα ήταν γυμνό μέταλλο, τίποτα που δεν είναι εικονικό, τίποτα που δεν είναι κοντέινερ - οτιδήποτε περιλαμβάνει τη διαχείριση ενός κεντρικού υπολογιστή, την επιδιόρθωση ενός κεντρικού υπολογιστή ή την αντιμετώπιση οτιδήποτε σε επίπεδο λειτουργικού συστήματος, δεν είναι κάτι που πρέπει να κάνετε στο κόσμος χωρίς διακομιστές. "

Όπως εξηγεί ο προγραμματιστής Mike Roberts, ο όρος κάποτε χρησιμοποιήθηκε για το λεγόμενο back-end-as-a-service σενάρια, όπου μια εφαρμογή για κινητά θα συνδεόταν με έναν διακομιστή υποστήριξης που φιλοξενείται εξ ολοκλήρου στο cloud. Αλλά σήμερα, όταν οι άνθρωποι μιλούν για υπολογιστές χωρίς διακομιστές, ή αρχιτεκτονική χωρίς διακομιστές, εννοούν Λειτουργία ως υπηρεσία προσφορές, στις οποίες ένας πελάτης γράφει κώδικα μόνο αντιμετωπίζει την επιχειρηματική λογική και τη μεταφορτώνει σε έναν πάροχο. Αυτός ο πάροχος φροντίζει για την παροχή υλικού, τη διαχείριση εικονικής μηχανής και κοντέινερ, ακόμη και εργασίες όπως το multithreading που συχνά είναι ενσωματωμένοι στον κώδικα εφαρμογής.

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

Οφέλη και μειονεκτήματα του υπολογιστή χωρίς διακομιστές

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

Όπως επισημαίνει ο Bernard Golden, αυτό το τελευταίο σημείο έχει ιδιαίτερο όφελος για εφαρμογές που βασίζονται σε εκδηλώσεις. Για παράδειγμα, ενδέχεται να έχετε μια εφαρμογή που είναι αδρανής πολλές φορές, αλλά υπό ορισμένες συνθήκες πρέπει να χειριστείτε πολλά αιτήματα συμβάντων ταυτόχρονα. Ή μπορεί να έχετε μια εφαρμογή που επεξεργάζεται δεδομένα που αποστέλλονται από συσκευές IoT με περιορισμένη ή διαλείπουσα σύνδεση στο Διαδίκτυο. Και στις δύο περιπτώσεις, η παραδοσιακή προσέγγιση θα απαιτούσε την παροχή ενός βοοειδούς διακομιστή που θα μπορούσε να χειριστεί τις μέγιστες δυνατότητες εργασίας - αλλά αυτός ο διακομιστής θα αχρησιμοποίητο τις περισσότερες φορές. Με αρχιτεκτονική χωρίς διακομιστή, πληρώνετε μόνο για τους πόρους διακομιστή που χρησιμοποιείτε πραγματικά. Ο υπολογιστής χωρίς διακομιστή θα ήταν επίσης καλός για συγκεκριμένα είδη επεξεργασίας παρτίδας. Ένα από τα κανονικά παραδείγματα μιας υπόθεσης χρήσης αρχιτεκτονικής χωρίς διακομιστή είναι μια υπηρεσία που ανεβάζει και επεξεργάζεται μια σειρά μεμονωμένων αρχείων εικόνας και τα στέλνει μαζί σε ένα άλλο μέρος της εφαρμογής.

Ίσως το πιο προφανές μειονέκτημα των λειτουργιών χωρίς διακομιστή είναι ότι είναι σκόπιμα εφήμερα και, όπως το λέει ο AlexSoft, «ακατάλληλο για μακροχρόνιες εργασίες». Οι περισσότεροι πάροχοι χωρίς διακομιστές δεν θα αφήσουν τον κώδικά σας να εκτελεστεί για περισσότερα από λίγα λεπτά και όταν ανοίξετε μια λειτουργία, δεν διατηρεί δεδομένα από προηγούμενες εκδόσεις. Ένα σχετικό πρόβλημα είναι ότι ο κώδικας χωρίς διακομιστή μπορεί να διαρκέσει έως και αρκετά δευτερόλεπτα για να περιστραφεί - όχι πρόβλημα για πολλές περιπτώσεις χρήσης, αλλά εάν η εφαρμογή σας απαιτεί χαμηλό λανθάνοντα χρόνο, προειδοποιήστε.

Πολλά από τα άλλα μειονεκτήματα, όπως επισημαίνουν οι Rohit Akiwatkar και Gary Arora, έχουν να κάνουν με το lock-in του πωλητή. Αν και υπάρχουν διαθέσιμες επιλογές ανοιχτού κώδικα, η αγορά χωρίς διακομιστές κυριαρχείται από τους μεγάλους εμπορικούς παρόχους cloud, όπως θα συζητήσουμε σε λίγο. Αυτό σημαίνει ότι οι προγραμματιστές συχνά καταλήγουν να χρησιμοποιούν εργαλεία από τους προμηθευτές τους, γεγονός που καθιστά δύσκολη την εναλλαγή εάν μεγαλώνουν δυσαρεστημένοι. Και επειδή τόσο μεγάλο μέρος του υπολογισμού χωρίς διακομιστές πραγματοποιείται, εξ ορισμού, στην υποδομή του προμηθευτή, μπορεί να είναι δύσκολο να ενσωματωθεί ο κώδικας χωρίς διακομιστή σε εσωτερικούς κύκλους ανάπτυξης και δοκιμών.

Προμηθευτές χωρίς διακομιστές: AWS Lambda, Azure Functions και Google Cloud Functions

Η σύγχρονη εποχή υπολογιστών χωρίς διακομιστές ξεκίνησε με την κυκλοφορία του AWS Lambda, μιας πλατφόρμας που βασίζεται στην υπηρεσία cloud της Amazon, το 2014. Η Microsoft ακολούθησε το ίδιο με τις λειτουργίες Azure το 2016. Το Google Cloud Functions, το οποίο ήταν σε beta από το 2017, έφτασε τελικά σε κατάσταση παραγωγής τον Ιούλιο του 2018. Οι τρεις υπηρεσίες έχουν ελαφρώς διαφορετικούς περιορισμούς, πλεονεκτήματα, υποστηριζόμενες γλώσσες και τρόπους εκτέλεσης πραγμάτων. Ο Rohit Akiwatkar έχει μια καλή και λεπτομερή υποβάθμιση των διακρίσεων μεταξύ των τριών. Επίσης, βρίσκεται σε λειτουργία το IBM Cloud Functions, το οποίο βασίζεται στην πλατφόρμα Apache OpenWhisk ανοιχτού κώδικα.

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

Στοίβες χωρίς διακομιστές

Όπως συμβαίνει σε πολλά πεδία λογισμικού, ο κόσμος χωρίς διακομιστές έχει δει την εξέλιξη του στοίβες λογισμικού, το οποίο συγκεντρώνει διαφορετικά στοιχεία που απαιτούνται για τη δημιουργία μιας εφαρμογής χωρίς διακομιστή. Κάθε στοίβα αποτελείται από ένα προγραμματισμόςΓλώσσα ότι πρόκειται να γράψετε τον κωδικό, σε πλαίσιο εφαρμογής που παρέχει μια δομή για τον κωδικό σας και ένα σύνολο πυροδοτεί ότι η πλατφόρμα θα κατανοήσει και θα χρησιμοποιήσει για να ξεκινήσει την εκτέλεση κώδικα.

Ενώ μπορείτε να συνδυάσετε και να αντιστοιχίσετε διαφορετικές συγκεκριμένες προσφορές σε καθεμία από αυτές τις κατηγορίες, υπάρχουν περιορισμοί ανάλογα με τον προμηθευτή που χρησιμοποιείτε, με κάποια επικάλυψη. Για παράδειγμα, για γλώσσες, μπορείτε να χρησιμοποιήσετε Node.js, Java, Go, C # και Python στο AWS Lambda, αλλά μόνο JavaScript, C # και F # λειτουργούν εγγενώς σε λειτουργίες Azure. Όσον αφορά τους κανόνες ενεργοποίησης, το AWS Lambda έχει τη μεγαλύτερη λίστα, αλλά πολλά από αυτά είναι ειδικά για την πλατφόρμα AWS, όπως η υπηρεσία απλής υπηρεσίας email Amazon και το AWC CodeCommit. Το Google Cloud Functions, εν τω μεταξύ, μπορεί να ενεργοποιηθεί από γενικά αιτήματα HTTP. Ο Paul Jaworski έχει μια εις βάθος ματιά στις στοίβες για καθεμία από τις τρεις μεγάλες προσφορές.

Πλαίσια χωρίς διακομιστή

Αξίζει να παραμείνουμε λίγο στο δομή μέρος της εξίσωσης, δεδομένου ότι αυτό θα καθορίσει πολλά για το πώς καταλήγετε να δημιουργήσετε την εφαρμογή σας. Η Amazon έχει τη δική της μητρική προσφορά, το μοντέλο ανοιχτού κώδικα χωρίς εφαρμογές (SAM), αλλά υπάρχουν και άλλοι, οι περισσότεροι από τους οποίους είναι cross-platform και επίσης open source. Ένα από τα πιο δημοφιλή ονομάζεται, γενικά, χωρίς διακομιστή και τονίζει ότι παρέχει την ίδια εμπειρία με κάθε υποστηριζόμενη πλατφόρμα, δηλαδή AWS Lambda, Azure Functions, Google Cloud Functions και IBM OpenWhisk. Μια άλλη δημοφιλής προσφορά είναι το Apex, το οποίο μπορεί να βοηθήσει να φέρει κάποιες γλώσσες που δεν είναι διαθέσιμες σε συγκεκριμένους παρόχους.

Βάσεις δεδομένων χωρίς διακομιστές

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

Ορισμένες από αυτές τις βάσεις δεδομένων αναφέρονται ως χωρίς διακομιστή. Αυτό σημαίνει ότι συμπεριφέρονται σαν άλλες λειτουργίες χωρίς διακομιστές που έχουμε συζητήσει σε αυτό το άρθρο, με την προφανή εξαίρεση ότι τα δεδομένα αποθηκεύονται επ 'αόριστον. Ωστόσο, μεγάλο μέρος των γενικών εξόδων διαχείρισης που εμπλέκονται στην παροχή και τη συντήρηση μιας βάσης δεδομένων απορρίπτεται. Όπως το θέτει ο προγραμματιστής Jeremy Daly, "Το μόνο που χρειάζεται να κάνετε είναι να διαμορφώσετε ένα σύμπλεγμα και στη συνέχεια όλες οι εργασίες συντήρησης, διόρθωσης, δημιουργίας αντιγράφων ασφαλείας, αντιγραφής και κλιμάκωσης αντιμετωπίζονται αυτόματα για εσάς." Όπως και με τις λειτουργίες ως υπηρεσίες, πληρώνετε μόνο για τον χρόνο υπολογισμού που χρησιμοποιείτε στην πραγματικότητα και οι πόροι περιστρέφονται ανάλογα με τις ανάγκες για να ταιριάζουν με τη ζήτηση.

Οι τρεις μεγάλοι πάροχοι χωρίς διακομιστές προσφέρουν ο καθένας τις δικές τους βάσεις δεδομένων χωρίς διακομιστές: η Amazon διαθέτει Aurora Serverless και DynamoDB, η Microsoft διαθέτει Azure Cosmos DB και η Google διαθέτει Cloud Firestore. Ωστόσο, αυτές δεν είναι οι μόνες διαθέσιμες βάσεις δεδομένων. Η Nemanja Novkovic έχει πληροφορίες για περισσότερες προσφορές.

Υπολογισμός χωρίς διακομιστές και Kubernetes

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

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

Χωρίς διακομιστή εκτός σύνδεσης

Μπορεί να βρείτε την προοπτική να ξεκινήσετε με τον υπολογιστή χωρίς διακομιστή λίγο εκφοβιστικό, καθώς φαίνεται ότι θα πρέπει να εγγραφείτε με έναν προμηθευτή για να παίξετε και να δείτε πώς λειτουργεί. Αλλά μην φοβάστε: Υπάρχουν τρόποι για να εκτελέσετε τον κώδικα χωρίς διακομιστή εκτός σύνδεσης στο δικό σας τοπικό υλικό. Για παράδειγμα, το AWS SAM παρέχει μια τοπική δυνατότητα που σας επιτρέπει να δοκιμάσετε τον κωδικό Lambda εκτός σύνδεσης. Και αν χρησιμοποιείτε το πλαίσιο εφαρμογής χωρίς διακομιστή, ελέγξτε χωρίς διακομιστή χωρίς σύνδεση, μια προσθήκη που σας επιτρέπει να εκτελείτε κώδικα τοπικά. Χαρούμενος πειραματισμός!