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

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

Εσφαλμένες αντιλήψεις σχετικά με τις τεχνολογίες χωρίς διακομιστή

Πολλοί άνθρωποι πιστεύουν ότι η επεξεργασία δεδομένων χωρίς διακομιστή και χωρίς διακομιστή (Λειτουργεί ως Υπηρεσία, FaaS) είναι σχεδόν το ίδιο πράγμα. Αυτό σημαίνει ότι η διαφορά δεν είναι πολύ μεγάλη και αξίζει να παρουσιάσετε ένα νέο προϊόν. Αν και το AWS Lambda ήταν ένα από τα αστέρια της ανόδου της τεχνολογίας χωρίς διακομιστές και ένα από τα πιο δημοφιλή στοιχεία της αρχιτεκτονικής χωρίς διακομιστή, υπάρχουν περισσότερα σε αυτήν την αρχιτεκτονική από το FaaS.

Η βασική αρχή της λειτουργίας χωρίς διακομιστή είναι ότι δεν χρειάζεται να ανησυχείτε για τη διαχείριση ή την κλιμάκωση της υποδομής σας· πληρώνετε μόνο για ό,τι χρησιμοποιείτε. Πολλές υπηρεσίες πληρούν αυτά τα κριτήρια - AWS DynamoDB, S3, SNS ή SQS, Graphcool, Auth0, Now, Netlify, Firebase και πολλές άλλες. Γενικά, χωρίς διακομιστή σημαίνει χρήση όλων των δυνατοτήτων του cloud computing χωρίς την ανάγκη διαχείρισης και βελτιστοποίησης της υποδομής για λόγους κλιμάκωσης. Σημαίνει επίσης ότι η ασφάλεια σε επίπεδο υποδομής δεν είναι πλέον το πρόβλημά σας, κάτι που είναι τεράστιο όφελος δεδομένης της δυσκολίας και της πολυπλοκότητας της τήρησης των προτύπων ασφαλείας. Τέλος, δεν χρειάζεται να αγοράσετε την υποδομή που σας παρέχεται.

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

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

Μερικοί άνθρωποι μπερδεύονται από την εξάρτηση από τον προμηθευτή κατά την ανάπτυξη εφαρμογών cloud. Το ίδιο ισχύει και με τις τεχνολογίες χωρίς διακομιστή, και αυτό είναι απίθανο να είναι αποτέλεσμα λανθασμένης αντίληψης. Σύμφωνα με την εμπειρία μας, η δημιουργία εφαρμογών χωρίς διακομιστές σε AWS, σε συνδυασμό με την ικανότητα του AWS Lambda να συγκεντρώνει άλλες υπηρεσίες AWS, είναι μέρος αυτού που κάνει τις αρχιτεκτονικές χωρίς διακομιστή τόσο σπουδαίες. Αυτό είναι ένα καλό παράδειγμα συνέργειας, όταν το αποτέλεσμα ενός συνδυασμού είναι μεγαλύτερο από απλώς το άθροισμα των μερών του. Η προσπάθεια αποφυγής του κλειδώματος του προμηθευτή μπορεί να οδηγήσει σε ακόμη περισσότερα προβλήματα. Όταν εργάζεστε με κοντέινερ, είναι πιο εύκολο να διαχειριστείτε το δικό σας επίπεδο αφαίρεσης μεταξύ παρόχων cloud. Αλλά όταν πρόκειται για λύσεις χωρίς διακομιστή, η προσπάθεια δεν θα αποδώσει, ειδικά αν λάβετε υπόψη εξαρχής τη σχέση κόστους-αποτελεσματικότητας. Φροντίστε να μάθετε πώς οι πωλητές παρέχουν υπηρεσίες. Ορισμένες εξειδικευμένες υπηρεσίες βασίζονται σε σημεία ενοποίησης με άλλους προμηθευτές και ενδέχεται να παρέχουν συνδεσιμότητα plug-and-play εκτός συσκευασίας. Είναι πιο εύκολο να παρέχετε μια κλήση Lambda από ένα τελικό σημείο API πύλης παρά να μεταφέρετε το αίτημα σε κάποιο κοντέινερ ή παρουσία EC2. Το Graphcool επιτρέπει την εύκολη διαμόρφωση χρησιμοποιώντας το Auth0, κάτι που είναι ευκολότερο από τη χρήση εργαλείων ελέγχου ταυτότητας τρίτων.

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

Σκεφτείτε:

  • Ποιες υπηρεσίες χρειάζεστε και γιατί.
  • Ποιες υπηρεσίες παρέχουν οι πάροχοι cloud και πώς μπορείτε να τις συνδυάσετε χρησιμοποιώντας τη λύση FaaS που έχετε επιλέξει.
  • Ποιες γλώσσες προγραμματισμού υποστηρίζονται (δυναμικά ή στατικά πληκτρολογημένα, μεταγλωττισμένα ή ερμηνευμένα, ποια είναι τα σημεία αναφοράς, ποια είναι η απόδοση ψυχρής εκκίνησης, ποιο είναι το οικοσύστημα ανοιχτού κώδικα κ.λπ.).
  • Ποιες είναι οι απαιτήσεις ασφαλείας σας (SLA, 2FA, OAuth, HTTPS, SSL, κ.λπ.).
  • Πώς να διαχειριστείτε τους κύκλους ανάπτυξης CI/CD και λογισμικού.
  • Ποιες λύσεις υποδομής ως κώδικα μπορείτε να επωφεληθείτε;

Εάν επεκτείνετε μια υπάρχουσα εφαρμογή και προσθέτετε σταδιακά λειτουργίες χωρίς διακομιστή, αυτό μπορεί να περιορίσει κάπως τις διαθέσιμες δυνατότητες. Ωστόσο, σχεδόν όλες οι τεχνολογίες χωρίς διακομιστή παρέχουν κάποιο είδος API (μέσω REST ή ουράς μηνυμάτων) που σας επιτρέπει να δημιουργείτε επεκτάσεις ανεξάρτητα από τον πυρήνα της εφαρμογής και με εύκολη ενσωμάτωση. Αναζητήστε υπηρεσίες με σαφή API, καλή τεκμηρίωση και ισχυρή κοινότητα και δεν μπορείτε να κάνετε λάθος. Η ευκολία ενσωμάτωσης μπορεί συχνά να είναι μια βασική μέτρηση και είναι πιθανότατα ένας από τους κύριους λόγους για τους οποίους το AWS ήταν επιτυχημένο από τότε που κυκλοφόρησε το Lambda το 2015.

Πότε είναι χρήσιμο το χωρίς διακομιστή;

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

Χάρη στην εξοικονόμηση κόστους και την ευκολία κλιμάκωσης, οι λύσεις χωρίς διακομιστή είναι εξίσου εφαρμόσιμες τόσο σε εσωτερικά όσο και σε εξωτερικά συστήματα, μέχρι και μια εφαρμογή web με κοινό πολλών εκατομμυρίων δολαρίων. Οι λογαριασμοί επιμετρώνται σε σεντ και όχι σε ευρώ. Η ενοικίαση του απλούστερου στιγμιότυπου AWS EC2 (t1.micro) για ένα μήνα θα κοστίσει 15 €, ακόμα κι αν δεν κάνετε τίποτα με αυτό (ποιος έχει ξεχάσει ποτέ να το απενεργοποιήσει;!). Συγκριτικά, για να επιτύχετε αυτό το επίπεδο δαπανών για την ίδια χρονική περίοδο, θα χρειαστεί να εκτελέσετε ένα Lambda 512 MB για 1 δευτερόλεπτο περίπου 3 εκατομμύρια φορές. Και αν δεν χρησιμοποιήσετε αυτήν τη δυνατότητα, δεν πληρώνετε τίποτα.

Δεδομένου ότι η λειτουργία χωρίς διακομιστές βασίζεται κυρίως σε συμβάντα, είναι αρκετά εύκολο να προσθέσετε υποδομή χωρίς διακομιστή σε συστήματα παλαιού τύπου. Για παράδειγμα, χρησιμοποιώντας τα AWS S3, Lambda και Kinesis, μπορείτε να δημιουργήσετε μια υπηρεσία ανάλυσης για ένα παλαιού τύπου σύστημα λιανικής που μπορεί να λαμβάνει δεδομένα μέσω ενός API.

Οι περισσότερες πλατφόρμες χωρίς διακομιστή υποστηρίζουν πολλές γλώσσες. Τις περισσότερες φορές αυτά είναι τα Python, JavaScript, C#, Java και Go. Συνήθως, όλες οι γλώσσες δεν έχουν περιορισμούς στη χρήση βιβλιοθηκών, επομένως μπορείτε να χρησιμοποιήσετε τις αγαπημένες σας βιβλιοθήκες ανοιχτού κώδικα. Ωστόσο, συνιστάται να μην χρησιμοποιείτε υπερβολικά τις εξαρτήσεις, ώστε οι λειτουργίες σας να αποδίδουν βέλτιστα και να μην ακυρώνουν τα οφέλη της τεράστιας επεκτασιμότητας των εφαρμογών σας χωρίς διακομιστή. Όσο περισσότερες συσκευασίες πρέπει να φορτωθούν στο δοχείο, τόσο περισσότερο θα διαρκέσει η κρύα εκκίνηση.

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

Αν και το AWS κυκλοφόρησε Βάση δεδομένων SQL χωρίς διακομιστή Aurora χωρίς διακομιστήΩστόσο, οι βάσεις δεδομένων SQL δεν είναι ιδανικές για αυτόν τον τύπο χρήσης επειδή βασίζονται σε συνδέσεις για την εκτέλεση συναλλαγών, κάτι που μπορεί γρήγορα να γίνει εμπόδιο όταν υπάρχει μεγάλη κίνηση στο AWS Lambda. Ναι, οι προγραμματιστές βελτιώνουν συνεχώς το Aurora χωρίς διακομιστή και θα πρέπει να πειραματιστείτε με αυτό, αλλά σήμερα λύσεις NoSQL όπως DynamoDB. Ωστόσο, δεν υπάρχει αμφιβολία ότι αυτή η κατάσταση θα αλλάξει πολύ σύντομα.

Η εργαλειοθήκη επιβάλλει επίσης πολλούς περιορισμούς, ειδικά στον τομέα των τοπικών δοκιμών. Αν και υπάρχουν λύσεις όπως το Docker-Lambda, το DynamoDB Local και το LocalStack, απαιτούν επίπονη δουλειά και σημαντικό όγκο διαμόρφωσης. Ωστόσο, όλα αυτά τα έργα αναπτύσσονται ενεργά, επομένως είναι θέμα χρόνου να φτάσουν τα εργαλεία στο επίπεδο που χρειαζόμαστε.

Ο αντίκτυπος των τεχνολογιών χωρίς διακομιστή στον κύκλο ανάπτυξης

Δεδομένου ότι η υποδομή σας είναι απλώς διαμόρφωση, μπορείτε να ορίσετε και να αναπτύξετε κώδικα χρησιμοποιώντας σενάρια, όπως σενάρια κελύφους. Ή μπορείτε να καταφύγετε σε λύσεις κλάσης configuration-as-code όπως AWS CloudFormation. Αν και αυτή η υπηρεσία δεν παρέχει διαμόρφωση για όλες τις περιοχές, σας επιτρέπει να ορίσετε συγκεκριμένους πόρους για χρήση ως συναρτήσεις Lambda. Δηλαδή, όπου το CloudFormation αποτυγχάνει, μπορείτε να γράψετε τον δικό σας πόρο (συνάρτηση Lambda) που θα καλύψει αυτό το κενό. Με αυτόν τον τρόπο μπορείτε να κάνετε οτιδήποτε, ακόμη και να διαμορφώσετε εξαρτήσεις εκτός του περιβάλλοντος AWS σας.

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

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

Υπάρχουν πολύ ισχυρά εργαλεία παρακολούθησης και ορατότητας όπως τα Epsagon, Thundra, Dashbird και IOPipe. Σας επιτρέπουν να παρακολουθείτε την τρέχουσα κατάσταση εφαρμογών χωρίς διακομιστή, να παρέχετε αρχεία καταγραφής και ίχνη, να καταγράφετε μετρήσεις απόδοσης και αρχιτεκτονικά σημεία συμφόρησης, να πραγματοποιείτε ανάλυση και πρόβλεψη κόστους και πολλά άλλα. Όχι μόνο δίνουν στους μηχανικούς, τους προγραμματιστές και τους αρχιτέκτονες του DevOps μια ολοκληρωμένη εικόνα της απόδοσης της εφαρμογής, αλλά επιτρέπουν επίσης στους διαχειριστές να αποκτήσουν ορατότητα σε πραγματικό χρόνο, δευτερόλεπτο σε δαπάνη πόρων και πρόβλεψη κόστους. Είναι πολύ πιο δύσκολο να οργανωθεί αυτό με μια διαχειριζόμενη υποδομή.

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

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

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

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

Δεν υπάρχει συγκεκριμένος τρόπος δημιουργίας εφαρμογών χωρίς διακομιστή. Καθώς και ένα σύνολο υπηρεσιών για αυτήν την εργασία. Ο ηγέτης μεταξύ των ισχυρών λύσεων χωρίς διακομιστή σήμερα είναι το AWS, αλλά δώστε προσοχή Google Cloud, Zeit и Firebase. Εάν χρησιμοποιείτε AWS, τότε μπορούμε να σας προτείνουμε ως προσέγγιση για τη συλλογή εφαρμογών Μοντέλο εφαρμογής χωρίς διακομιστή (SAM), ειδικά όταν χρησιμοποιείτε C#, επειδή το Visual Studio έχει εξαιρετικά εργαλεία. Το SAM CLI μπορεί να κάνει ό,τι μπορεί να κάνει το Visual Studio, έτσι δεν θα χάσετε τίποτα εάν μεταβείτε σε διαφορετικό IDE ή πρόγραμμα επεξεργασίας κειμένου. Φυσικά, το SAM λειτουργεί και με άλλες γλώσσες.

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

Για τοπικές δοκιμές, τα εργαλεία ανοιχτού κώδικα Docker-Lambda, Serverless Local, DynamoDB Local και LocalStack είναι κατάλληλα. Οι τεχνολογίες χωρίς διακομιστή βρίσκονται ακόμα σε πρώιμο στάδιο ανάπτυξης, όπως και τα εργαλεία για αυτές, επομένως θα πρέπει να εργαστείτε σκληρά όταν ρυθμίζετε πολύπλοκα σενάρια δοκιμών. Ωστόσο, η απλή ανάπτυξη της στοίβας στο περιβάλλον και η δοκιμή της εκεί αποδεικνύεται απίστευτα φθηνή. Και δεν χρειάζεται να δημιουργήσετε ένα ακριβές τοπικό αντίγραφο των περιβαλλόντων σας στο cloud.

Χρησιμοποιήστε AWS Lambda Layers για να μειώσετε τα μεγέθη των αναπτυγμένων πακέτων και να επιταχύνετε τους χρόνους φόρτωσης.

Χρησιμοποιήστε τις σωστές γλώσσες προγραμματισμού για συγκεκριμένες εργασίες. Οι διαφορετικές γλώσσες έχουν τα δικά τους πλεονεκτήματα και μειονεκτήματα. Υπάρχουν πολλά σημεία αναφοράς, αλλά η JavaScript, η Python και η C# (.NET Core 2.1+) είναι οι ηγέτες όσον αφορά την απόδοση AWS Lambda. Η AWS Lambda παρουσίασε πρόσφατα ένα Runtime API που σας επιτρέπει να καθορίσετε την επιθυμητή γλώσσα και το περιβάλλον χρόνου εκτέλεσης, επομένως πειραματιστείτε.

Διατηρήστε μικρά μεγέθη πακέτων ανάπτυξης. Όσο μικρότερα είναι τόσο πιο γρήγορα φορτώνονται. Αποφύγετε τη χρήση μεγάλων βιβλιοθηκών, ειδικά αν χρησιμοποιείτε μερικές λειτουργίες από αυτές. Εάν προγραμματίζετε σε JavaScript, χρησιμοποιήστε εργαλεία δημιουργίας όπως το Webpack για να βελτιστοποιήσετε την κατασκευή σας και να συμπεριλάβετε μόνο αυτά που πραγματικά χρειάζεστε. Το .NET Core 3.0 περιλαμβάνει QuickJit και Tiered Compilation, που βελτιώνουν την απόδοση και βοηθούν πολύ στις κρύες εκκινήσεις.

Η εξάρτηση των λειτουργιών χωρίς διακομιστή από συμβάντα μπορεί να δυσκολέψει αρχικά τον συντονισμό της επιχειρηματικής λογικής. Οι ουρές μηνυμάτων και οι μηχανές κατάστασης μπορεί να είναι απίστευτα χρήσιμες από αυτή την άποψη. Οι συναρτήσεις λάμδα μπορούν να καλούν η μία την άλλη, αλλά κάντε αυτό μόνο εάν δεν περιμένετε απόκριση ("φωτιά και ξεχάστε") - δεν θέλετε να χρεωθείτε για την αναμονή για την ολοκλήρωση μιας άλλης λειτουργίας. Οι ουρές μηνυμάτων είναι χρήσιμες για την απομόνωση τμημάτων επιχειρηματικής λογικής, τη διαχείριση των σημείων συμφόρησης εφαρμογών και την επεξεργασία συναλλαγών (χρησιμοποιώντας ουρές FIFO). Οι συναρτήσεις AWS Lambda μπορούν να αντιστοιχιστούν σε ουρές SQS ως ουρές κολλημένων μηνυμάτων που παρακολουθούν αποτυχημένα μηνύματα για μεταγενέστερη ανάλυση. Οι AWS Step Functions (state machines) είναι πολύ χρήσιμες για τη διαχείριση πολύπλοκων διεργασιών που απαιτούν αλυσίδα λειτουργιών. Αντί μια συνάρτηση Lambda να καλεί μια άλλη συνάρτηση, οι συναρτήσεις Step μπορούν να συντονίσουν τις μεταβάσεις καταστάσεων, να περάσουν δεδομένα μεταξύ συναρτήσεων και να διαχειριστούν την καθολική κατάσταση των συναρτήσεων. Αυτό σας επιτρέπει να ορίσετε συνθήκες επανάληψης δοκιμής ή τι πρέπει να κάνετε όταν παρουσιαστεί ένα συγκεκριμένο σφάλμα - ένα πολύ ισχυρό εργαλείο υπό ορισμένες συνθήκες.

Συμπέρασμα

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

Πηγή: www.habr.com

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