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

Χωρίς διακομιστή στο cloud: AWS εναντίον Google Cloud εναντίον Microsoft Azure

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

Η ατελείωτη αλυσίδα πονοκεφάλων από τη λειτουργία ενός διακομιστή είναι ένας από τους λόγους που οι μεγάλες εταιρείες cloud έχουν αγκαλιάσει την αρχιτεκτονική «χωρίς διακομιστές». Ξέρουν ότι το αφεντικό έχει ακούσει τις δικαιολογίες - ο διακομιστής αυτός, ο διακομιστής που - για πάρα πολύ καιρό. Εάν μπορούσαμε να απαλλαγούμε μόνο από αυτούς τους διακομιστές, το αφεντικό πρέπει να σκεφτεί.

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

Η Amazon, η Google και η Microsoft είναι τρεις από τις μεγαλύτερες εταιρείες που αγωνίζονται να φιλοξενήσουν εφαρμογές του μέλλοντος, αυτές που ελπίζουν ότι θα γραφτούν στο API χωρίς διακομιστή και θα διαχειρίζονται μέσω του επιπέδου αυτοματισμού τους. Εάν οι πλατφόρμες κάνουν αυτό που θέλετε - και τα νέα μοντέλα είναι αρκετά γενικά - μπορεί να είναι ο απλούστερος και ταχύτερος τρόπος για να δημιουργήσετε τη δική σας εφαρμογή web unicorn πολλών δισεκατομμυρίων δολαρίων. Γράφετε μόνο τα κρίσιμα κομμάτια της λογικής και η πλατφόρμα χειρίζεται όλες τις λεπτομέρειες.

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

Η σιωπηρή υπόσχεση είναι ότι ο τεμαχισμός όλων των λεπτών καθιστά ευκολότερη την κοινή χρήση πόρων στο cloud. Στο παρελθόν, όλοι θα δημιουργούσαν φρικτά νέες παρουσίες με, για παράδειγμα, τον Ubuntu Server που λειτουργεί με τη δική του εικονική μηχανή. Ο καθένας χρησιμοποίησε το ίδιο λειτουργικό σύστημα και αντιγράφηκε zillion φορές στο ίδιο πραγματικό κουτί που προσποιούταν ότι ήταν δώδεκα ή περισσότερα εικονικά κουτιά Ubuntu. Οι λειτουργίες χωρίς διακομιστές αποφεύγουν όλη αυτή την επανάληψη, καθιστώντας το cloud computing δραματικά φθηνότερο, ειδικά για εργασίες που εκτελούνται σποραδικά και ποτέ δεν μπλοκάρουν το παλιό κουτί που κάθεται στο κλιματιζόμενο δωμάτιο διακομιστή.

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

Για να κατανοήσω την ελκυστικότητα των επιλογών χωρίς διακομιστή, πέρασα λίγο χρόνο για να δημιουργήσω μερικές λειτουργίες και να στρίψω γύρω από τις στοίβες. Δεν έγραψα πολύ κώδικα, αλλά αυτό ήταν το θέμα. Πέρασα περισσότερο χρόνο κάνοντας κλικ σε κουμπιά και πληκτρολογώντας φόρμες ιστού για να ρυθμίσω τα πάντα. Θυμάστε όταν διαμορφώσαμε τα πάντα με XML και μετά JSON; Τώρα συμπληρώνουμε μια φόρμα ιστού και το cloud το κάνει για εμάς. Ωστόσο, πρέπει να σκεφτείτε σαν προγραμματιστής, για να καταλάβετε τι συμβαίνει πίσω από τα παρασκήνια και πέρα ​​από τον έλεγχό σας.

AWS Λάμδα

Το AWS Lambda εξελίσσεται στο επίπεδο σεναρίου shell για ολόκληρο το cloud του Amazon. Είναι ένα βασικό σύστημα που σας επιτρέπει να ενσωματώσετε λειτουργίες που ανταποκρίνονται σε συμβάντα που ενδέχεται να δημιουργηθούν από σχεδόν οποιοδήποτε μέρος της τεράστιας υποδομής cloud του Amazon. Εάν ένα νέο αρχείο μεταφορτωθεί στο S3, θα μπορούσατε να το ενεργοποιήσετε μια λειτουργία που κάνει κάτι ενδιαφέρον με αυτό. Εάν κάποιο βίντεο μετακωδικοποιείται από το Amazon Elastic Transcoder, θα μπορούσατε να έχετε μια λειτουργία Lambda που περιμένει να ενεργοποιηθεί όταν τελειώσει. Αυτές οι λειτουργίες, με τη σειρά τους, μπορούν να προκαλέσουν άλλες λειτουργίες Lambda ή ίσως απλά να στείλουν σε κάποιον μια ενημέρωση.

Μπορείτε να γράψετε λειτουργίες Lambda σε JavaScript (Node.js), Python, Java, C # και Go. Δεδομένου ότι αυτές οι γλώσσες μπορούν να ενσωματώσουν πολλές άλλες γλώσσες, είναι πολύ πιθανό να εκτελέσετε άλλο κώδικα όπως το Haskell, το Lisp ή ακόμα και το C ++. (Δείτε αυτήν την ιστορία σχετικά με τη σύνταξη παλαιού τύπου C ++ σε μια βιβλιοθήκη για χρήση με AWS Lambda.)

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

Μερικά από τα πρόσθετα βήματα οφείλονται στο ότι η Amazon εκθέτει περισσότερες επιλογές στον χρήστη και αναμένει περισσότερα από τον συντάκτη λειτουργιών για πρώτη φορά. Μόλις τελείωσα τη σύνταξη μιας λειτουργίας στο Google ή τη Microsoft, θα μπορούσα να δείξω το πρόγραμμα περιήγησής μου στη σωστή διεύθυνση URL και να το δοκιμάσω αμέσως. Η Amazon με έκανε να κάνω κλικ για να διαμορφώσω την πύλη API και να ανοίξω τη σωστή τρύπα στο τείχος προστασίας.

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

Η Amazon έχει μια σειρά από άλλες επιλογές που είναι σχεδόν «χωρίς διακομιστές» όπως το AWS Lambda, εάν χωρίς διακομιστή σημαίνει να σας απαλλάξετε από τις εργασίες διαχείρισης διακομιστή. Διαθέτει ελαστικά εργαλεία όπως το Amazon EC2 Auto Scaling και το AWS Fargate που περιστρέφουν και κλείνουν τους διακομιστές και το AWS Elastic Beanstalk, το οποίο λαμβάνει τον κώδικα που έχετε ανεβάσει, τον αναπτύσσει σε διακομιστές ιστού και χειρίζεται την εξισορρόπηση φορτίου και την κλιμάκωση. Φυσικά, με πολλά από αυτά τα εργαλεία αυτοματισμού, εξακολουθείτε να είστε υπεύθυνοι για τη δημιουργία της εικόνας του διακομιστή.

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

Google Cloud Functions και Firebase

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

Ξεκινώντας με το Google App Engine το 2008, η Google προσθέτει αργά διαφορετικές επιλογές «χωρίς διακομιστές» με διάφορους συνδυασμούς ανταλλαγής μηνυμάτων και διαφάνειας δεδομένων. Κάποιος που ονομάζεται Google Cloud Pub / Sub κρύβει την ουρά μηνυμάτων από εσάς, ώστε το μόνο που χρειάζεται να κάνετε είναι να γράψετε τον κώδικα για τον παραγωγό και τον καταναλωτή δεδομένων. Το Google Cloud Functions προσφέρει υπολογισμό βάσει εκδηλώσεων για πολλά από τα σημαντικότερα προϊόντα, συμπεριλαμβανομένων ορισμένων από τα εργαλεία και τα API marquee. Και έπειτα υπάρχει το Google Firebase, μια βάση δεδομένων για στεροειδή που σας επιτρέπει να αναμίξετε κώδικα JavaScript σε ένα επίπεδο αποθήκευσης δεδομένων που παραδίδει τα δεδομένα στον πελάτη σας.

Από αυτά, το Firebase είναι το πιο ενδιαφέρον για μένα. Μερικοί υποδηλώνουν ότι οι βάσεις δεδομένων ήταν η αρχική εφαρμογή χωρίς διακομιστές, αφαιρώντας τις δομές δεδομένων και τις δουλειές αποθήκευσης δίσκων για την παράδοση όλων των πληροφοριών μέσω θύρας TCP / IP. Το Firebase κάνει αυτήν την αφαίρεση στο άκρο προσθέτοντας επίσης κώδικα JavaScript και ανταλλαγή μηνυμάτων για να κάνετε σχεδόν ό, τι ίσως θέλετε να κάνετε με την υποδομή από τον διακομιστή, συμπεριλαμβανομένου του ελέγχου ταυτότητας. Τεχνικά είναι απλώς μια βάση δεδομένων, αλλά είναι μια που μπορεί να χειριστεί μεγάλο μέρος της επιχειρηματικής λογικής και των μηνυμάτων για τη στοίβα σας. Μπορείτε πραγματικά να ξεφύγετε με λίγο HTML πελάτη, CSS, JavaScript και Firebase.

Ίσως να μπείτε στον πειρασμό να καλέσετε τα επίπεδα JavaScript του Firebase "αποθηκευμένες διαδικασίες", όπως έκανε η Oracle, αλλά αυτό θα έλειπε η μεγαλύτερη εικόνα. Ο κωδικός Firebase είναι γραμμένος σε JavaScript, οπότε θα εκτελείται σε τοπική έκδοση του Node.js. Μπορείτε να ενσωματώσετε μεγάλο μέρος της επιχειρηματικής λογικής σε αυτό το επίπεδο επειδή ο κόσμος του Node είναι ήδη γεμάτος με βιβλιοθήκες για τον χειρισμό αυτής της ροής εργασίας. Επιπλέον, θα απολαύσετε τις απολαύσεις του ισόμορφου κώδικα που εκτελείται στον πελάτη, στον διακομιστή και τώρα στη βάση δεδομένων.

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

Δεν χρειάζεται να επικεντρωθείτε μόνο στο Firebase. Οι πιο βασικές λειτουργίες του Google Cloud είναι μια απλούστερη προσέγγιση για την ενσωμάτωση προσαρμοσμένου κώδικα σε όλο το Google cloud. Προς το παρόν, το Cloud Functions είναι σε μεγάλο βαθμό απλώς μια επιλογή για τη σύνταξη κώδικα Node.js που θα εκτελείται σε ένα προκαθορισμένο περιβάλλον κόμβου. Ενώ το υπόλοιπο του Google Cloud Platform υποστηρίζει μια μεγάλη ποικιλία γλωσσών - από Java και C # έως Go, Python και PHP - το Cloud Functions περιορίζεται αυστηρά σε JavaScript και Node. Υπήρξαν υποδείξεις ότι έρχονται άλλες επιλογές γλώσσας και δεν θα εκπλαγώ αν εμφανιστούν σύντομα.

Το Google Cloud Functions δεν φτάνει τόσο βαθιά στο Google Cloud όσο το AWS Lambda φτάνει στο AWS, τουλάχιστον σε αυτό το σημείο. Όταν στριφογύρισα κοιτάζοντας τη δημιουργία μιας λειτουργίας για αλληλεπίδραση με τα Έγγραφα Google, διαπίστωσα ότι πιθανότατα θα έπρεπε να χρησιμοποιήσω το REST API και να γράψω τον κώδικα σε κάτι που ονομάζεται Apps Script. Με άλλα λόγια, ο κόσμος των Εγγράφων Google έχει το δικό του REST API που δεν είχε διακομιστή πολύ πριν δημιουργηθεί η λέξη-κλειδί.

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

Εξακολουθούν να υπάρχουν μερικά εμπόδια που πρέπει να θυμάστε. Όπως με το Cloud Functions, ο κώδικάς σας πρέπει να είναι γραμμένος με σχετικά απάτριδο τρόπο και πρέπει να ολοκληρώσει κάθε αίτημα σε περιορισμένο χρονικό διάστημα. Ωστόσο, το App Engine δεν πετάει όλα τα ικριώματα ούτε ξεχνά τα πάντα μεταξύ των αιτημάτων. Το App Engine ήταν ένα μεγάλο μέρος της επανάστασης χωρίς διακομιστές και παραμένει το πιο προσιτό σε εκείνους που διατηρούν ένα πόδι πίσω στη μέθοδο του παλιού σχολείου για τη δημιουργία της δικής τους στοίβας σε Python, PHP, Java, C # ή Go.

Λειτουργίες Microsoft Azure

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

Το μεγαλύτερο πλεονέκτημα που μπορεί να έχει η Microsoft μπορεί να είναι η συλλογή εφαρμογών του Office, τα προηγούμενα εκτελέσιμα επιτραπέζιων υπολογιστών που μεταβαίνουν αργά αλλά σίγουρα στο cloud. Πράγματι, μια λογιστική των εσόδων από το cloud έθεσε τη Microsoft μπροστά από την Amazon, εν μέρει με την προσθήκη ορισμένων από τα έσοδα του Office στην εφήμερη θέση του «cloud».

Ένα από τα καλύτερα παραδείγματα από την τεκμηρίωση των λειτουργιών Azure δείχνει πώς μπορεί να ενεργοποιηθεί μια λειτουργία cloud όταν κάποιος αποθηκεύει ένα υπολογιστικό φύλλο στο OneDrive. Ξαφνικά τα μικρά ξωτικά στο σύννεφο ζωντανεύουν και κάνουν πράγματα στο υπολογιστικό φύλλο. Αυτό είναι βέβαιο ότι πρόκειται για καταστήματα πληροφορικής που υποστηρίζουν ομάδες που λατρεύουν τα υπολογιστικά φύλλα Excel (ή άλλα έγγραφα του Office) Μπορούν να γράψουν Azure Functions για να κάνουν σχεδόν οτιδήποτε. Συχνά πιστεύουμε ότι η HTML και ο ιστός είναι η μόνη διεπαφή στο cloud, αλλά δεν υπάρχει λόγος για τον οποίο δεν μπορεί να γίνει μέσω μορφών εγγράφων όπως το Microsoft Word ή το Excel.