Μηδενική διακοπή λειτουργίας* Εφαρμογές Ιστού για ASP .NET Core 3.1

Μηδενική διακοπή λειτουργίας* Εφαρμογές Ιστού για ASP .NET Core 3.1

Januar 26, 2023 0 Von admin

Αυτή είναι η εικοστή έκτη από μια νέα σειρά αναρτήσεων στο ASP .NET Core 3.1 για το 2020. Σε αυτήν τη σειρά, καλύψαμε 26 θέματα σε διάστημα 26 εβδομάδων από τον Ιανουάριο έως τον Ιούνιο του 2020, με τίτλο ASP .NET Core AZ! Για να διαφοροποιηθεί από τη σειρά του 2019, η σειρά 2020 επικεντρώθηκε κυρίως σε μια αυξανόμενη ενιαία βάση κώδικα (NetLearner!) αντί για νέα άσχετα αποσπάσματα κώδικα.

Προηγούμενη ανάρτηση:

NetLearner στο GitHub:

Εάν έχετε φτάσει μέχρι εδώ σε αυτήν τη σειρά ASP .NET Core AZ, ελπίζουμε ότι έχετε μάθει για πολλά σημαντικά θέματα που σχετίζονται με την ανάπτυξη εφαρμογών web ASP .NET Core. Καθώς ολοκληρώνουμε αυτή τη σειρά με μια ματιά σε συμβουλές και κόλπα απόπειρα zero-downtime, αυτή η τελευταία ανάρτηση έχει τη δική της μίνι σειρά AF με γράμματα: ΕΝΑδιαθεσιμότητα, σιλήψη και επαναφορά, ντοI/CD, ρεκουλοχέρηδες απασχόλησης, μιF Core Migrations και φάeature σημαίες.

Ανάπτυξη σε κουλοχέρηδες Staging στην υπηρεσία AsuApp

ΣΗΜΕΙΩΣΗ: Αν και μπορεί να μην είναι δυνατή η 100% διαθεσιμότητα 24/7/365, μπορείτε να εξασφαλίσετε μια φιλική προς το χρήστη εμπειρία χωρίς (ή τουλάχιστον με ελάχιστες) διακοπές, ακολουθώντας έναν συνδυασμό των συμβουλών και των κόλπων που περιγράφονται παρακάτω. Αυτή η εγγραφή δεν προορίζεται να είναι ένας ολοκληρωμένος οδηγός. Μάλλον, είναι περισσότερο ένα περίγραμμα με αναφορές που μπορείτε να παρακολουθήσετε, για τα επόμενα βήματα.

Για να βελτιώσετε τη διαθεσιμότητα της εφαρμογής web ASP .NET Core που εκτελείται στο Azure, σκεφτείτε να εκτελέσετε την εφαρμογή σας σε πολλές περιοχές για HA (Υψηλή διαθεσιμότητα). Για να ελέγξετε την επισκεψιμότητα προς/από τον ιστότοπό σας, μπορείτε να χρησιμοποιήσετε Υπεύθυνος κυκλοφορίας για να κατευθύνετε την κυκλοφορία Ιστού σε μια αναμονή/δευτερεύουσα περιοχή, σε περίπτωση που η κύρια περιοχή δεν είναι διαθέσιμη.

Εξετάστε τις ακόλουθες 3 επιλογές κατά την εκτέλεση μιας εφαρμογής Ιστού σε πολλές περιοχές Azure. Σε αυτά τα σενάρια, η κύρια περιοχή είναι πάντα ενεργή και η δευτερεύουσα περιοχή μπορεί να είναι παθητική (ως ζεστή ή κρύα αναμονή) ή ενεργή. Όταν και τα δύο είναι ενεργά, τα αιτήματα Ιστού εξισορροπούνται μεταξύ των δύο περιοχών.

Επιλογές Πρωτοβάθμια Περιφέρεια Δευτεροβάθμια Περιφέρεια
ΕΝΑ Ενεργός Παθητική, Hot Standby
σι Ενεργός Παθητική, Ψυχρή Αναμονή
ντο Ενεργός Ενεργός

Για περισσότερες πληροφορίες σχετικά με την επίτευξη Υψηλής Διαθεσιμότητας (HA) σε πολλές περιοχές, ανατρέξτε στα επίσημα έγγραφα στη διεύθυνση:

Εάν εκτελείτε την εφαρμογή ιστού σας σε εικονική μηχανή (VM) αντί για υπηρεσία εφαρμογής Azure, μπορείτε επίσης να εξετάσετε το ενδεχόμενο Σετ Διαθεσιμότητας. Αυτό βοηθά στη δημιουργία πλεονασμού στην αρχιτεκτονική της εφαρμογής Web σας, όταν έχετε 2 ή περισσότερα εικονικά μηχανήματα σε ένα σύνολο διαθεσιμότητας. Για μεγαλύτερη ανθεκτικότητα, χρησιμοποιήστε Azure Load Balancer με τα VM σας για να εξισορροπήσετε την εισερχόμενη κίνηση. Ως εναλλακτική λύση στα σετ διαθεσιμότητας, μπορείτε επίσης να χρησιμοποιήσετε Ζώνες Διαθεσιμότητας για την αντιμετώπιση τυχόν αστοχιών σε ένα κέντρο δεδομένων.

Η Υπηρεσία Εφαρμογών του Azure σάς επιτρέπει δημιουργία αντιγράφων ασφαλείας και επαναφορά την εφαρμογή Ιστού σας, χρησιμοποιώντας το Azure Portal ή με Εντολές Azure CLI. Λάβετε υπόψη ότι αυτό απαιτεί η Υπηρεσία Εφαρμογής σας να βρίσκεται τουλάχιστον στο επίπεδο Standard ή Premium, καθώς δεν είναι διαθέσιμο στις βαθμίδες Δωρεάν/Κοινόχρηστο. Μπορείτε να δημιουργήσετε αντίγραφα ασφαλείας κατά παραγγελία όταν το επιθυμείτε ή να προγραμματίσετε τα αντίγραφά σας όπως απαιτείται. Εάν ο ιστότοπός σας πέσει, μπορείτε να επαναφέρετε γρήγορα το τελευταίο καλό αντίγραφο ασφαλείας για να ελαχιστοποιήσετε το χρόνο διακοπής λειτουργίας.

Υπηρεσία εφαρμογής: Αντίγραφα ασφαλείας

ΣΗΜΕΙΩΣΗ: Μπορείτε να χρησιμοποιήσετε τη νέα λειτουργία Στιγμιότυπα για να „Δημιουργήστε αυτόματα περιοδικά σημεία επαναφοράς της εφαρμογής σας“. Ωστόσο, αυτή η δυνατότητα είναι διαθέσιμη μόνο σε ένα Πρόγραμμα υπηρεσίας εφαρμογής Premium.

Εκτός από την ίδια την εφαρμογή, η διαδικασία δημιουργίας αντιγράφων ασφαλείας δημιουργεί επίσης αντίγραφα ασφαλείας της διαμόρφωσης της εφαρμογής Web, των περιεχομένων του αρχείου και της βάσης δεδομένων που είναι συνδεδεμένη με την εφαρμογή σας. Οι τύποι βάσεων δεδομένων περιλαμβάνουν SQL DB (γνωστός και ως SQL Server PaaS), MySQL και PostgreSQL. Σημειώστε ότι αυτά τα αντίγραφα ασφαλείας περιλαμβάνουν α πλήρης δημιουργία αντιγράφων ασφαλείας και όχι εφεδρικά αντίγραφα σταδιακά/δέλτα.

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

Δείγμα YAML στο Azure DevOps

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

Υποδοχές ανάπτυξης στην υπηρεσία εφαρμογής Azure
Υποδοχές ανάπτυξης στην υπηρεσία εφαρμογής Azure

Λάβετε υπόψη ότι οι θέσεις ανάπτυξης διατίθενται μόνο σε επίπεδα Standard, Premium ή Isolated App Service και όχι σε επίπεδα Free/Shared. Μπορείτε να συνδυάσετε τις θέσεις ανάπτυξης με τους αγωγούς CI/CD για να διασφαλίσετε ότι οι αυτοματοποιημένες αναπτύξεις σας καταλήγουν στις προβλεπόμενες υποδοχές.

Καλύψαμε το EF Core Migrations σε προηγούμενη ανάρτηση, που είναι ένας τρόπος αναβάθμισης της βάσης δεδομένων σας σε διάφορα περιβάλλοντα (συμπεριλαμβανομένης της παραγωγής). Αλλά περιμένετε, είναι ασφαλές να εκτελέσετε το EF Core Migrations σε περιβάλλον παραγωγής; Παρόλο που μπορείτε να χρησιμοποιήσετε αυτόματα δημιουργούμενες μετεγκαταστάσεις EF Core (γραμμένες σε C# ή εξαγόμενες ως SQL Scripts), μπορείτε επίσης να τροποποιήσετε τις μετεγκαταστάσεις σας για τις ανάγκες σας.

Θα συνιστούσα ανεπιφύλακτα να διαβάσετε Jon P SmithΣειρά δύο μερών σχετικά με το «Handling Entity Framework Core migrations database in production»:

Το τι θα αποφασίσετε να κάνετε εξαρτάται από εσάς (και την ομάδα σας). Θα πρότεινα να εξερευνήσετε τις διάφορες επιλογές που έχετε στη διάθεσή σας, για να διασφαλίσετε ότι θα ελαχιστοποιήσετε τυχόν διακοπές λειτουργίας για τους χρήστες σας. Για κάθε μη σπάζοντας Αλλάζει το DB, θα πρέπει να μπορείτε να μεταφέρετε το DB σας εύκολα. Ωστόσο, ο ιστότοπός σας μπορεί να είναι εκτός λειτουργίας λόγω συντήρησης για οποιαδήποτε σπάζοντας Αλλαγές DB.

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

Για να εγκαταστήσετε το πακέτο, μπορείτε να χρησιμοποιήσετε τα ακόλουθα dotnet εντολή:

>dotnet add package Microsoft.FeatureManagement --version 2.0.0

Εάν προτιμάτε την Κονσόλα Package Manager στο Visual Studio, μπορείτε επίσης να χρησιμοποιήσετε την ακόλουθη εντολή PowerShell:

>Install-Package Microsoft.FeatureManagement -Version 2.0.0

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