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

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

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

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

Ας ξεκινήσουμε με την Τετάρτη.

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

windows Server - τα ίδια Windows, αλλά σε παραλλαγή διακομιστή. Ορισμένες λειτουργίες που είναι διαθέσιμες στην έκδοση πελάτη (κανονική) των Windows δεν υπάρχει εδώ, για παράδειγμα, ορισμένες υπηρεσίες συλλογής στατιστικών στοιχείων και παρόμοιου λογισμικού, αλλά υπάρχει ένα σύνολο βοηθητικών προγραμμάτων για τη διαχείριση δικτύου, βασικό λογισμικό για την ανάπτυξη διακομιστών (web, ftp, ...). Γενικά, ο Windows Server μοιάζει με τα κανονικά Windows, τα quacks με τα κανονικά Windows, ωστόσο, κοστίζει 2 φορές περισσότερο από τον κανονικό του. Ωστόσο, δεδομένου ότι πιθανότατα θα αναπτύξετε την εφαρμογή σε έναν αποκλειστικό/εικονικό διακομιστή, το τελικό κόστος για εσάς, αν και μπορεί να αυξηθεί, δεν είναι κρίσιμο. Δεδομένου ότι η πλατφόρμα Windows καταλαμβάνει μια συντριπτική θέση στην αγορά καταναλωτικών λειτουργικών συστημάτων, η έκδοση διακομιστή της θα είναι η πιο οικεία στους περισσότερους χρήστες.

Unix- παρόμοιο σύστημα. Η παραδοσιακή εργασία σε αυτά τα συστήματα δεν απαιτεί την παρουσία μιας γνώριμης γραφικής διεπαφής, προσφέροντας στον χρήστη μόνο μια κονσόλα ως στοιχείο ελέγχου. Για έναν άπειρο χρήστη, η εργασία σε αυτήν τη μορφή μπορεί να είναι δύσκολη, ακριβώς ποιο είναι το κόστος της έξοδο από ένα πρόγραμμα επεξεργασίας κειμένου που είναι αρκετά δημοφιλές στα δεδομένα ζωτικότητα, μια ερώτηση που σχετίζεται με αυτό έχει ήδη λάβει περισσότερες από 6 εκατομμύρια προβολές σε 1.8 χρόνια. Οι κύριες διανομές (εκδόσεις) αυτής της οικογένειας είναι: Debian - μια δημοφιλής διανομή, οι εκδόσεις πακέτων σε αυτό επικεντρώνονται κυρίως στο LTS (Μακροπρόθεσμη υποστήριξη – υποστήριξη για μεγάλο χρονικό διάστημα), η οποία εκφράζεται σε αρκετά υψηλή αξιοπιστία και σταθερότητα του συστήματος και των πακέτων. Ubuntu – περιέχει διανομές όλων των πακέτων στις πιο πρόσφατες εκδόσεις τους, οι οποίες ενδέχεται να επηρεάσουν τη σταθερότητα, αλλά σας επιτρέπουν να χρησιμοποιήσετε τη λειτουργικότητα που συνοδεύει τις νέες εκδόσεις. Red Hat Enterprise Linux – OS, τοποθετημένο για εμπορική χρήση, πληρώνεται, ωστόσο, περιλαμβάνει υποστήριξη από προμηθευτές λογισμικού, ορισμένα ιδιόκτητα πακέτα και πακέτα προγραμμάτων οδήγησης. CentOS - ανοιχτού κώδικα μια παραλλαγή του Red Hat Enterprise Linux, που χαρακτηρίζεται από την απουσία ιδιόκτητων πακέτων και υποστήριξης.

Για όσους μόλις αρχίζουν να κατακτούν αυτόν τον τομέα, η σύστασή μου θα ήταν τα συστήματα windows ServerΉ Ubuntu. Αν λάβουμε υπόψη τα Windows, τότε αυτή είναι κυρίως η εξοικείωση του συστήματος, Ubuntu – περισσότερη ανοχή στις ενημερώσεις και με τη σειρά του, για παράδειγμα, λιγότερα προβλήματα κατά την έναρξη έργων σε τεχνολογίες που απαιτούν νέες εκδόσεις.

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

Η επόμενη σημαντική απόφαση θα είναι η τοποθέτηση της εφαρμογής σας και ο διακομιστής για αυτήν. Αυτή τη στιγμή, οι πιο συνηθισμένοι είναι 3 τρόποι:

  • Η φιλοξενία (διατήρηση) ενός διακομιστή μόνος σας είναι η πιο φιλική προς τον προϋπολογισμό επιλογή, αλλά θα πρέπει να παραγγείλετε μια στατική IP από τον πάροχο σας, ώστε ο πόρος σας να μην αλλάξει τη διεύθυνσή του με την πάροδο του χρόνου.
  • Ενοικιάστε έναν αποκλειστικό διακομιστή (VDS) – και διαχειριστείτε τον ανεξάρτητα και κλιμακώστε τα φορτία
  • Πληρώστε (συχνά σας δίνουν την ευκαιρία να δοκιμάσετε τη λειτουργικότητα της πλατφόρμας δωρεάν) για μια συνδρομή σε κάποιο cloud hosting, όπου το μοντέλο πληρωμής για τους πόρους που χρησιμοποιούνται είναι αρκετά κοινό. Οι πιο εξέχοντες εκπρόσωποι αυτής της κατεύθυνσης: Amazon AWS (χαρίζουν ένα δωρεάν έτος χρήσης των υπηρεσιών, αλλά με μηνιαίο όριο), Google Cloud (δίνουν 300 $ στον λογαριασμό, τα οποία μπορούν να δαπανηθούν κατά τη διάρκεια του έτους σε υπηρεσίες φιλοξενίας cloud) , Yandex.Cloud (δίνουν 4000 ρούβλια . για 2 μήνες), Microsoft Azure (παρέχουν δωρεάν πρόσβαση σε δημοφιλείς υπηρεσίες για ένα χρόνο, + 12 ρούβλια για οποιεσδήποτε υπηρεσίες για ένα μήνα). Έτσι, μπορείτε να δοκιμάσετε οποιονδήποτε από αυτούς τους παρόχους χωρίς να ξοδέψετε ούτε μια δεκάρα, αλλά να πάρετε μια κατά προσέγγιση γνώμη σχετικά με την ποιότητα και το επίπεδο της παρεχόμενης υπηρεσίας.

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

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

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

Σε γενικές γραμμές, η υποδομή διακομιστή μοιάζει με αυτό: έχουμε έναν λεγόμενο "ενορχηστρωτή" ("ενορχήστρωση" είναι η διαδικασία διαχείρισης πολλών παρουσιών διακομιστή), ο οποίος διαχειρίζεται τις περιβαλλοντικές αλλαγές σε μια παρουσία διακομιστή, ένα κοντέινερ εικονικοποίησης (προαιρετικό, αλλά αρκετά χρησιμοποιείται συχνά), το οποίο σας επιτρέπει να διαιρέσετε την εφαρμογή σε απομονωμένα λογικά επίπεδα και λογισμικό συνεχούς ενοποίησης—επιτρέποντας ενημερώσεις στον φιλοξενούμενο κώδικα μέσω "σεναρίων".

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

Το επόμενο βήμα είναι η εικονικοποίηση σε επίπεδο λειτουργικού συστήματος. Στις μέρες μας έχει γίνει ευρέως διαδεδομένη η έννοια του «dockerization», η οποία προέρχεται από το εργαλείο Λιμενεργάτης, το οποίο παρέχει τη λειτουργικότητα των κοντέινερ που είναι απομονωμένα μεταξύ τους, αλλά εκκινούνται στο πλαίσιο ενός λειτουργικού συστήματος. Τι σημαίνει αυτό: σε καθένα από αυτά τα κοντέινερ μπορείτε να εκτελέσετε μια εφαρμογή ή ακόμα και ένα σύνολο εφαρμογών, οι οποίες θα πιστεύουν ότι είναι οι μόνες σε ολόκληρο το λειτουργικό σύστημα, χωρίς καν να υποψιάζονται την ύπαρξη κάποιου άλλου σε αυτό το μηχάνημα. Αυτή η λειτουργία είναι πολύ χρήσιμη για την εκκίνηση πανομοιότυπων εφαρμογών διαφορετικών εκδόσεων ή απλών εφαρμογών σε διένεξη, καθώς και για τη διαίρεση τμημάτων μιας εφαρμογής σε επίπεδα. Αυτό το επίπεδο cast μπορεί αργότερα να γραφτεί σε μια εικόνα, η οποία μπορεί να χρησιμοποιηθεί, για παράδειγμα, για την ανάπτυξη μιας εφαρμογής. Δηλαδή, εγκαθιστώντας αυτήν την εικόνα και αναπτύσσοντας τα κοντέινερ που περιέχει, αποκτάτε ένα έτοιμο περιβάλλον για την εκτέλεση της εφαρμογής σας! Στα πρώτα βήματα, μπορείτε να χρησιμοποιήσετε αυτό το εργαλείο τόσο για ενημερωτικούς σκοπούς όσο και για να έχετε πολύ πραγματικά οφέλη διαιρώντας τη λογική της εφαρμογής σε διαφορετικά επίπεδα. Αλλά αξίζει να πούμε εδώ ότι δεν χρειάζονται όλοι δέσμευση, και όχι πάντα. Η Dockerization δικαιολογείται σε περιπτώσεις όπου η εφαρμογή είναι «κατακερματισμένη», χωρισμένη σε μικρά μέρη, το καθένα υπεύθυνο για το δικό του έργο, τη λεγόμενη «αρχιτεκτονική μικροϋπηρεσιών».

Επιπλέον, εκτός από την παροχή του περιβάλλοντος, πρέπει να διασφαλίσουμε την κατάλληλη ανάπτυξη της εφαρμογής, η οποία περιλαμβάνει κάθε είδους μετασχηματισμούς κώδικα, εγκατάσταση βιβλιοθηκών και πακέτων που σχετίζονται με εφαρμογές, δοκιμές εκτέλεσης, ειδοποιήσεις σχετικά με αυτές τις λειτουργίες κ.λπ. Εδώ πρέπει να δώσουμε προσοχή σε μια τέτοια έννοια όπως η "Συνεχής Ένταξη" (CI – Συνεχής Ένταξη). Τα κύρια εργαλεία σε αυτόν τον τομέα αυτή τη στιγμή είναι το Jenkins (το λογισμικό CI γραμμένο σε Java μπορεί να φαίνεται λίγο περίπλοκο στην αρχή), Travis CI (γραμμένο σε Ruby, υποκειμενικό, κάπως πιο απλό Τζένκινς, ωστόσο, απαιτούνται ακόμη κάποιες γνώσεις στον τομέα της διαμόρφωσης ανάπτυξης), Gitlab CI (γραμμένο στο Ruby and Go).

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

Ας ξεκινήσουμε με τα βασικά: Backend (backend) – τμήμα διακομιστή. Η επιλογή της γλώσσας, του συνόλου των βασικών λειτουργιών και της προκαθορισμένης δομής (πλαίσιο) εδώ καθορίζεται κυρίως από προσωπικές προτιμήσεις, αλλά, ωστόσο, αξίζει να αναφερθεί προς εξέταση (η γνώμη του συγγραφέα για τις γλώσσες είναι αρκετά υποκειμενική, αν και με ισχυρισμό σε μια αμερόληπτη περιγραφή):

  • Η Python είναι μια αρκετά φιλική γλώσσα για έναν άπειρο χρήστη, συγχωρεί κάποια λάθη, αλλά μπορεί επίσης να είναι αρκετά αυστηρή με τον προγραμματιστή για να μην κάνει τίποτα κακό. Ήδη μια αρκετά ώριμη και ουσιαστική γλώσσα, που εμφανίστηκε το 1991.
  • Go - μια γλώσσα από την Google, είναι επίσης αρκετά φιλική και βολική, είναι αρκετά εύκολο να μεταγλωττίσετε και να αποκτήσετε ένα εκτελέσιμο αρχείο σε οποιαδήποτε πλατφόρμα. Μπορεί να είναι απλό και ευχάριστο, ή μπορεί να είναι περίπλοκο και σοβαρό. Φρέσκο ​​και νέο, εμφανίστηκε σχετικά πρόσφατα, το 2009.
  • Το Rust είναι λίγο μεγαλύτερο από τον προηγούμενο συνάδελφό του, που κυκλοφόρησε το 2006, αλλά είναι ακόμα αρκετά νέος σε σύγκριση με τους συνομηλίκους του. Απευθύνεται σε πιο έμπειρους προγραμματιστές, αν και εξακολουθεί να προσπαθεί να λύσει πολλές εργασίες χαμηλού επιπέδου για τον προγραμματιστή.
  • Η Java είναι βετεράνος της εμπορικής ανάπτυξης, που εισήχθη το 1995 και είναι μια από τις πιο συχνά χρησιμοποιούμενες γλώσσες στην ανάπτυξη εταιρικών εφαρμογών σήμερα. Με τις βασικές του ιδέες και τη βαριά ρύθμιση, ο χρόνος εκτέλεσης μπορεί να γίνει αρκετά δύσκολος για έναν αρχάριο.
  • Το ASP.net είναι μια πλατφόρμα ανάπτυξης εφαρμογών που κυκλοφόρησε από τη Microsoft. Για τη γραφή λειτουργιών, χρησιμοποιείται κυρίως η γλώσσα C# (προφέρεται C Sharp), η οποία εμφανίστηκε το 2000. Η πολυπλοκότητά του είναι συγκρίσιμη με το επίπεδο μεταξύ Java και Rust.
  • Η PHP, που αρχικά χρησιμοποιήθηκε για προεπεξεργασία HTML, επί του παρόντος, αν και κατέχει την απόλυτη ηγετική θέση στην αγορά γλωσσών, υπάρχει μια τάση προς μείωση της χρήσης. Έχει χαμηλό όριο εισόδου και ευκολία στη σύνταξη κώδικα, αλλά ταυτόχρονα, κατά την ανάπτυξη αρκετά μεγάλων εφαρμογών, η λειτουργικότητα της γλώσσας μπορεί να μην είναι αρκετή.

Λοιπόν, το τελευταίο μέρος της εφαρμογής μας - το πιο απτό για τον χρήστη - frontend (frontend) – είναι το πρόσωπο της εφαρμογής σας· με αυτό το τμήμα αλληλεπιδρά άμεσα ο χρήστης.

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

  • Το ReactJS δεν είναι ένα πλαίσιο, αλλά μια βιβλιοθήκη. Στην πραγματικότητα, το πλαίσιο διαφέρει από τον περήφανο τίτλο του μόνο λόγω της απουσίας ορισμένων λειτουργιών "out of the box" και της ανάγκης να τις εγκαταστήσετε με μη αυτόματο τρόπο. Έτσι, υπάρχουν αρκετές παραλλαγές της «προετοιμασίας» αυτής της βιβλιοθήκης, διαμορφώνοντας μοναδικά πλαίσια. Μπορεί να είναι λίγο δύσκολο για έναν αρχάριο, λόγω κάποιων βασικών αρχών και αρκετά επιθετικής ρύθμισης του περιβάλλοντος κατασκευής. Ωστόσο, για γρήγορη εκκίνηση, μπορείτε να χρησιμοποιήσετε το πακέτο «create-react-app».
  • Το VueJS είναι ένα πλαίσιο για τη δημιουργία διεπαφών χρήστη. Από αυτήν την τριάδα, δικαιωματικά παίρνει τον τίτλο του πιο φιλικού προς τον χρήστη πλαισίου· για την ανάπτυξη στο Vue, το εμπόδιο εισόδου είναι χαμηλότερο από αυτό των άλλων αναφερόμενων αδελφών. Επιπλέον, είναι ο νεότερος ανάμεσά τους.
  • Το Angular θεωρείται το πιο περίπλοκο από αυτά τα πλαίσια, το μόνο που απαιτεί TypeScript (πρόσθετο για γλώσσα Javascript). Συχνά χρησιμοποιείται για τη δημιουργία μεγάλων εταιρικών εφαρμογών.

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

Πηγή: www.habr.com

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