Ο καλύτερος τρόπος για να μάθετε την ανάπτυξη Web Backend

Το προηγούμενο άρθρο μου περιέγραψε πώς μπορείτε να μπείτε στην ανάπτυξη frontend. Συζήτησε επίσης πώς το μπροστινό μέρος μπορεί να είναι ένα μέρος γεμάτο νάρκες ξηράς - βήμα σε λάθος μέρος και θα συγκλονιστείτε από τα πολλά πλαίσια του οικοσυστήματος JavaScript.

Σε αυτό το άρθρο ιστολογίου, ας δούμε πώς μπορείτε να μπείτε στην ανάπτυξη back-end. Στην πορεία, θα απαντήσω σε μερικές από τις πιο συχνές ερωτήσεις που με ρωτούν οι άνθρωποι γι 'αυτό.

Τι είναι το Backend Development;

Η ανάπτυξη διεπαφών περιλαμβάνει αυτό που βλέπει ένας χρήστης στην οθόνη όταν ανοίγει μια συγκεκριμένη διεύθυνση URL που σας ανήκει. Ακόμα και σε ένα εντελώς στατικό περιβάλλον (με μόνο HTML / CSS), όταν κάποιος ανοίγει έναν ιστότοπο, κάποιος διακομιστής στον πλανήτη πρέπει να σας απαντήσει με αυτά τα αρχεία HTML και CSS.

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

Ο προγραμματισμός αυτών των υπολογιστών με κάποιο ειδικό τρόπο ονομάζεται back end development .

Μπορεί να πιστεύετε ότι η ανάπτυξη backend ονομάζεται αυτό που συμβαίνει επειδή τρέχει πίσω από την πλάτη του χρήστη. Ένας επισκέπτης στον ιστότοπό σας ποτέ δεν "έχει πρόσβαση" πλήρως στο πίσω μέρος. Απλώς επικοινωνούν με τον διακομιστή σας, είτε απευθείας μέσω θυρών για πολύ περιορισμένη πρόσβαση (όπως μεταφορά αρχείων HTML / CSS) είτε όχι ακόμη - που έχουν καταδυθεί βαθιά κάτω από CDN ή τείχη προστασίας (όπως Cloudflare)

Τώρα που έχουμε μια αρχική κατανόηση του τι σημαίνει ανάπτυξη back end, ας πάρουμε μερικές πραγματικές ερωτήσεις.

Απαιτείται γνώση προγραμματισμού front end για το back end;

TLDR; Οχι.

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

Εάν είστε προγραμματιστής backend πλήρους απασχόλησης, δεν χρειάζεται να ανησυχείτε για το τι συμβαίνει σε αυτά τα αρχεία HTML, CSS και JavaScript που στέλνετε στο πρόγραμμα περιήγησης του χρήστη. Αντ 'αυτού, πρέπει να εστιάσετε περισσότερο στην απόδοση του διακομιστή, στον κώδικα του διακομιστή και στην απόδοση.

Τι πηγαίνει στην ανάπτυξη back-end;

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

Αλλά στην πραγματικότητα, μερικές φορές οι προγραμματιστές back-end είναι σε θέση να κάνουν πολύ περισσότερα από το να γράφουν σενάρια διακομιστή. Έχουν τη γνώση να δημιουργήσουν διακομιστές αντίστροφης μεσολάβησης (NGiNX / HAProxy), να επιτρέψουν τη συμπίεση και άλλους τρόπους για την επιτάχυνση του ιστότοπου και να δημιουργήσουν ένα περιβάλλον παραγωγής λιμένων.

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

  1. Καλή γνώση σχετικά με μια γλώσσα προγραμματισμού στην οποία μπορείτε να γράψετε διακομιστές HTTP. Παραδείγματα: C #, Java, Node, PHP, Python κ.λπ. (υπάρχουν πολλά!)
  2. Διαχείριση φιλοξενίας χρησιμοποιώντας cPanel (παραδοσιακό) ή χρησιμοποιώντας τερματικό bash (cloud hosting / παραδοσιακό)
  3. Εργασία με Συστήματα Ελέγχου Έκδοσης (VCS) όπως το git για τη διαχείριση και την ανάπτυξη εκδόσεων

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

  1. NGiNX για στοιχεία στατικών αρχείων και διαχείριση διακομιστή
  2. Δεξιότητες διαχείρισης βάσεων δεδομένων (SQL / NoSQL)
  3. Ασφάλεια backend (Σύνταξη ασφαλούς και ισχυρού κώδικα, εκτέλεση εφαρμογών σε κοντέινερ με περιορισμένα προνόμια, προστασία έναντι επιθέσεων DoS)
  4. Αυτόματη κλιμάκωση / Εξισορρόπηση φορτίου

Εντάξει, μιλάμε πάρα πολύ για το τι πηγαίνει στην ανάπτυξη back-end. Αλλά πώς γίνεσαι ένα;

Ξεκινήστε με τις ελάχιστες απαιτήσεις

Όπως είπα, για το πίσω μέρος, όπως και τα παιχνίδια, έχουμε ένα σύνολο ελάχιστων απαιτήσεων και προτεινόμενων απαιτήσεων. Οι ελάχιστες απαιτήσεις αποτελούνται από 3 πράγματα:

Μάθετε μια γλώσσα προγραμματισμού backend

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

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

Ωστόσο, μπορείτε να επιλέξετε από μια ποικιλία γλωσσών όπως Java, C ++, C #, Python, PHP κ.λπ.

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

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

Μάθετε σχετικά με τη διαχείριση της φιλοξενίας

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

  1. Πηγαίνοντας για διαχειριζόμενους διακομιστές φιλοξενίας όπως το HostGator ή το GoDaddy.
  2. Πηγαίνοντας για παρόχους φιλοξενίας cloud όπως GCP, AWS ή DigitalOcean.

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

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

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

Σήμερα, πολλοί πάροχοι cloud προσφέρουν επίσης μια αξιοπρεπή δωρεάν δοκιμή, έτσι ώστε να μπορείτε να δοκιμάσετε πραγματικά την πλατφόρμα τους πριν μπείτε πλήρως. Φιλοξενώ τον ιστότοπό μου για προγραμματιστές - codedamn - στο DigitalOcean και το βρίσκω να βρίσκεται σε μια γλυκιά ισορροπία πολυπλοκότητα και χαρακτηριστικά του ιστότοπου.

Μπορείτε να χρησιμοποιήσετε αυτόν τον σύνδεσμο για να εγγραφείτε στο DigitalOcean και να λάβετε δωρεάν 100 μονάδες . Οι παρουσίες DigitalOcean είναι τόσο φθηνές όσο 5 $ το μήνα, οπότε έχετε ένα διάδρομο περίπου 20 μηνών σε αυτήν την περίπτωση, πολύ, ε;

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

Μάθετε για τα Συστήματα Ελέγχου Έκδοσης

Υπάρχουν και άλλες λύσεις εκτός από το Git για VCS. Αλλά το Git είναι το πιο χρησιμοποιημένο και απλούστερο να κατανοηθεί.

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

Το Git σάς επιτρέπει να διαχειριστείτε τη ροή εργασίας σας χρησιμοποιώντας δεσμεύσεις και κλάδους. Οι δεσμεύσεις είναι σαν σημεία ελέγχου στη βάση κωδικών σας - αυτά στα οποία μπορείτε πάντα να επαναφέρετε εάν κάνετε βλάβη.

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

Εάν αυτές οι πραγματικότητες μπορούν να συγχωνευτούν με συμβατότητα, τότε είναι εντάξει. Αλλά αν υπάρχει μια σύγκρουση (όπως εάν είστε ζωντανός σε μια πραγματικότητα και νεκρός σε άλλη), τότε πρέπει να κάνετε χειροκίνητα μια επιλογή. Άλλες αλλαγές μπορούν να συγχωνευτούν αυτόματα.

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

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

Πηγαίνετε για προτεινόμενες δεξιότητες

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

Το DevOps είναι επίσης κάτι που ταιριάζει εξαιρετικά με τους προγραμματιστές back end. Θα μπορούσατε να δοκιμάσετε και να εξερευνήσετε το TravisCI ή το CircleCI για αυτόματες αναπτύξεις. Η συνεχής ενσωμάτωση και ανάπτυξη (CI / CD) είναι ένα θέμα που θα μπορούσε να πάρει μια άλλη ολόκληρη ανάρτηση ιστολογίου, οπότε δεν θα μπω σε αυτό. Στην πραγματικότητα, μόλις ρυθμιστεί σωστά, θα εξοικονομήσετε έναν γελοίο χρόνο προγραμματιστή!

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

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

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

συμπέρασμα

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

Επίσης, εάν σας ενδιαφέρει, checkout codedamn - μια πλατφόρμα που εστιάζει στον προγραμματιστή για την εκμάθηση τεχνολογιών όπως η ανάπτυξη backend! Δημοσίευσα ακόμη και ένα βίντεο YT για την περιστροφή του δικού σας απλού διακομιστή ιστότοπου σε 2 λεπτά! Ελέγξτε το και πείτε μου τη γνώμη σας!

Ειρήνη!