Den bedste måde at lære backend webudvikling på

Min tidligere artikel beskrev, hvordan du kan komme i frontend-udvikling. Det diskuterede også, hvordan frontenden kan være et sted fyldt med landminer - gå på det forkerte sted, og du vil blive overvældet af de mange rammer for JavaScript-økosystemet.

Lad os i denne blogartikel se, hvordan du kan komme ind i back-end-udvikling. Undervejs vil jeg besvare nogle af de mest almindelige spørgsmål, som folk stiller mig om det.

Hvad er Backend Development?

Frontend-udvikling involverer, hvad en bruger ser på skærmen, når de åbner en bestemt URL, der ejes af dig. Selv i et helt statisk miljø (med kun HTML / CSS), når nogen åbner et websted, skal en server på planeten svare dig med disse HTML- og CSS-filer.

Denne server er bare en computer, ligesom den, du bruger dig selv til at surfe på internettet. Men det er blevet tunet til ydeevne og har ikke unødvendige komponenter som en mus eller et tastatur tilsluttet. Og det sidder med mange andre computere sandsynligvis i et datalager.

Programmering af disse computere på en særlig måde kaldes back-end-udvikling .

Du tror måske, at backend-udvikling kaldes hvad den er, fordi den løber bag brugerens ryg. En besøgende på dit websted "får aldrig rigtig" adgang til backenden fuldstændigt. De kommunikerer bare med din server, enten direkte gennem porte for meget begrænset adgang (som at overføre HTML / CSS-filer) eller ikke engang det - begravet dybt under CDN'er eller firewalls (som Cloudflare).

Nu hvor vi har en rå forståelse af, hvad back-end-udvikling betyder, lad os komme ind i nogle reelle spørgsmål.

Er frontend programmering viden påkrævet til backend?

TLDR; Ingen.

Back end-udvikling, som nævnt ovenfor, indebærer programmering af en computer, der sandsynligvis sidder på den anden side af planeten, der er ansvarlig for at reagere på, hvad dine brugere siger fra deres egne computere.

Hvis du er en fuldtids backend-udvikler, behøver du ikke rigtig være opmærksom på, hvad der foregår inde i de HTML-, CSS- og JavaScript-filer, du sender til brugerens browser. I stedet skal du fokusere mere på serverens ydeevne, serverkoden og kapacitet.

Hvad går der bagud-udvikling?

Når du går efter bøgerne, kan du sige, at en person, der koder et program, der kan svare på HTTP-anmodninger, er en back-end-udvikler.

Men i virkeligheden er back-end-udviklere undertiden i stand til at gøre meget mere end bare at skrive serverscript. De har viden til at oprette omvendte proxyservere (NGiNX / HAProxy), muliggøre komprimering og andre måder at fremskynde webstedet og oprette et produktionsdockermiljø.

For at kvalificere mig som en back-end-udvikler vil jeg sige, at de absolut nødvendige færdigheder er:

  1. God viden om et programmeringssprog, hvor du kan skrive HTTP-servere. Eksempler: C #, Java, Node, PHP, Python osv. (Der er mange!)
  2. Administrer at være vært ved hjælp af cPanel (traditionel) eller ved hjælp af bash terminal (cloud hosting / traditionel)
  3. Arbejde med versionskontrolsystemer (VCS) som git til styring og implementering af builds

Ligesom hvert spil leveres med minimums- og anbefalede specifikationer, for back-end-udviklere ville mine anbefalingsspecifikationer være (inklusive minimumskompetencer):

  1. NGiNX til statiske filaktiver og serveradministration
  2. Database Management færdigheder (SQL / NoSQL)
  3. Sikkerhed af backend (Skrivning af sikker og robust kode, kørsel af applikationer i dockercontainere med begrænsede rettigheder, beskyttelse mod DoS-angreb)
  4. Autoskalering / belastningsafbalancering

Okay, for meget at tale om, hvad der går ind i udviklingen af ​​bagenden. Men hvordan bliver du en?

Start med minimumskrav

Som jeg sagde, for back-enden, ligesom spil, har vi et sæt minimumskrav og anbefalede krav. Minimumskravene består af 3 ting:

Lær et programmeringssprog til backend

Når folk lærer af sig selv, har de normalt ikke et team eller nogen, der kan udvikle frontend. De er alle alene. Så du bliver ofte nødt til at oprette websider og servere helt alene, i det mindste i starten.

Selvom der er mange valgmuligheder for backend-programmeringssprog, og jeg kan ikke tænke på noget populært systemsprog, der ikke understøtter HTTP-servere ud af boksen. Fordelen ved at vælge Node er, at dine JavaScript-kompetencer i frontend er overførbare til backenden.

Ikke desto mindre kan du vælge mellem en række forskellige sprog som Java, C ++, C #, Python, PHP osv.

Hvordan vælger du en, kan du spørge. Svaret er det samme som det var i udviklingsartiklen i frontend: Du skal prøve alt i første omgang og se, hvilken der klikker bedst med dig.

Node er let, da du måske allerede har foretaget JS-programmering til frontend. Men hvis du er en Python- eller Java-udvikler, kan du måske finde dem lette at hente. Det afhænger af dit erhverv og smag fuldstændigt.

Lær om administration af hosting

Borte er de dage, hvor du bliver nødt til at købe servere manuelt og konfigurere dem i dit hjem, oprette forbindelse til din internetudbyder, gøre alt det der selv. Dette er en tid med cloud computing. Nu, når du er vært for dit websted, har du hovedsagelig to muligheder:

  1. Går efter managed hosting-servere som HostGator eller GoDaddy.
  2. Går efter cloud hosting-udbydere som GCP, AWS eller DigitalOcean.

Hvad er forskellen mellem de to? I begge tilfælde ejes og drives serverne af de respektive virksomheder. Men den største forskel er, at managed hosting er mere GUI-venlig, har et stort sæt værktøjer til at se filsystemet, overvåge brugen, administrere dine officielle domæne-e-mails, uploade / downloade filer fra din server osv. Det er dybest set en opsætning for folk med mindre tekniske færdigheder.

Af den grund anbefaler jeg ikke administrerede websteder som HostGator eller GoDaddy til erfarne udviklere. Alligevel kan det være en god platform at lave fejl og lære videre, primært fordi du normalt har forudbetalte planer for dem. Du har også en god brugergrænseflade til styring af ting, som ikke giver dig mulighed for ved et uheld at skyde dine regninger op.

Men når du begynder at få fart, anbefaler jeg, at du skifter til en skyudbyder. Dette fjerner alle de fine værktøjer fra cPanel, som du brugte til at administrere filer og mapper på servere. Men på samme tid vil det udfordre dig til at højne dine færdigheder meget.

I dag tilbyder mange cloududbydere også en anstændig gratis prøveperiode, så du faktisk kan prøve deres platform, inden du går fuldt ud. Jeg er vært for mit websted for udviklere - codedamn - på DigitalOcean og finder det at være i en sød balance mellem websteds kompleksitet og funktioner.

Du kan bruge dette link til at tilmelde dig DigitalOcean og få gratis $ 100 kreditter . DigitalOcean-forekomster er så billige som $ 5 om måneden, så du har en landingsbane på ca. 20 måneder i det tilfælde, meget, ikke?

Under alle omstændigheder kan du vælge en hvilken som helst skyudbyder. Så er det vigtigt at lære at administrere serveren ved hjælp af kun kommandolinjen ved at ssh'ing ind i den.

Lær om versionskontrolsystemer

Der er andre løsninger bortset fra Git til VCS. Men Git er den mest anvendte og enkleste at forstå.

Som person sætter du måske ikke pris på det med det samme. Men du forstår, hvorfor det er så vigtigt, i det øjeblik du begynder at arbejde i et team på flere funktioner samtidigt i dit projekt.

Git giver dig mulighed for at styre din arbejdsgang ved hjælp af forpligtelser og grene. Forpligtelser er som kontrolpunkter i din kodebase - dem, du altid kan vende tilbage til, hvis du skruer op.

Filialer er som alternative virkeligheder i dit projekt, hvor noget helt andet kan ske. Disse alternative virkeligheder kan oprettes fra ethvert tidspunkt og kan sammenflettes igen når som helst.

Hvis disse realiteter kan flettes sammen med kompatibilitet, så er det fint. Men hvis der er en konflikt (som om du lever i en virkelighed og død i en anden), skal du manuelt træffe et valg. Andre ændringer kan flettes automatisk.

Git er super interessant, og når du først hænger på det, vil du gerne bruge det i hvert projekt. Du kommer til at holde en historie med dit arbejde på en effektiv måde (det komprimerer og gemmer kun forskellen mellem forpligtelser).

Det giver dig også mulighed for at oprette online git-arkiver på websteder som GitHub, som fungerer som en central sandhedskilde for dit websted. Websteder som GitHub kan konfigureres med specielle webhooks, der faktisk kan opdatere dit websted, hver gang du tilføjer et nyt kontrolpunkt (en ny forpligtelse) uden at du nogensinde behøver at gå manuelt til serveren og opdatere det selv.

Gå efter anbefalede færdigheder

Jeg tror meget på at lære ved at gøre. Og den bedste måde at gøre noget på kommer af nødvendighed eller interesse. Når du først betragter dig selv som god nok med minimumskravene, er det tid til at tilegne dig de anbefalede færdigheder. Dette inkluderer alle de ovennævnte værktøjer som Docker og NGiNX.

DevOps er også noget, der passer super pænt sammen med back-end-udviklere. Du kan prøve at udforske TravisCI eller CircleCI til automatiserede build-implementeringer. Kontinuerlig integration og implementering (CI / CD) er et emne, der kan tage endnu et helt blogindlæg, så jeg kommer ikke ind på det. Når det først er konfigureret korrekt, sparer det dig latterligt meget udviklertid!

Derefter kommer databaser, som jeg placerede i anbefalede færdigheder. Men du har brug for databaser til stort set enhver applikation, der involverer en slags datapretention genereret af brugeren.

Databaser er normalt lette at begynde at arbejde med, men sværere at vedligeholde og tilpasse korrekt. Den bedste måde at begynde at arbejde på en backend tech stack er at have alt sammen på en enkelt server - koden til din applikation, de omvendte proxyservere, databasen osv. Når du bliver mere dygtig til hver ting, kan du afkoble det fra den eksisterende forretningslogik.

Ved at gøre dette aktiverer du en arkitektur, der kan skaleres meget. En database-intensiv applikation kunne have en optimeret løsning til databaser. Og et trafikbundet websted skal have en god CDN-mekanisme til at aflaste statiske aktiver osv.

Konklusion

Der er så meget at lære, men det hele kan opnås, hvis du ikke giver op. Fortæl mig, hvad du synes om dette indlæg gennem mine twitter- og Instagram- håndtag. Det betyder meget for mig, hvis vi forbinder derovre!

Også, hvis du er interesseret, checkout codedamn - en udviklerfokuseret platform til læringsteknologier som backend-udvikling! Jeg har endda sendt en YT-video om at spinde din egen enkle websideserver på 2 minutter! Tjek det ud og lad mig vide, hvad du synes!

Fred!