Najbolji način da se nauči razvoj web stranica

Moj prethodni članak opisao je kako možete ući u frontend razvoj. Također se raspravljalo o tome kako prednji kraj može biti mjesto ispunjeno nagaznim minama - zakoračite na pogrešno mjesto i bit ćete preplavljeni mnogim okvirima JavaScript ekosustava.

U ovom članku na blogu, pogledajmo kako možete ući u back end razvoj. Usput ću odgovoriti na neka od najčešćih pitanja koja mi ljudi postavljaju o tome.

Što je Backend razvoj?

Razvoj fronta uključuje ono što korisnik vidi na zaslonu kada otvori određeni URL u vašem vlasništvu. Čak i u potpuno statičnom okruženju (sa samo HTML / CSS), kada netko otvori web stranicu, neki poslužitelj na planetu mora vam odgovoriti tim HTML i CSS datotekama.

Taj je poslužitelj samo računalo, baš kao i onaj koji sami koristite za pregledavanje interneta. No, podešen je za izvedbu i nema priključene nepotrebne komponente poput miša ili tipkovnice. I sjedi s tonama drugih računala vjerojatno u skladištu podataka.

Programiranje tih računala na neki poseban način naziva se back end razvojem .

Možda mislite da se pozadinski razvoj naziva onim što jest jer se odvija iza korisnikovih leđa. Posjetitelj vaše web stranice nikada zapravo u potpunosti "ne pristupa" stražnjem dijelu. Oni samo komuniciraju s vašim poslužiteljem, bilo izravno kroz priključke za vrlo ograničen pristup (poput prijenosa HTML / CSS datoteka) ili čak ni to - zakopani duboko ispod CDN-a ili vatrozida (poput Cloudflare-a).

Sad kad smo siroko razumjeli što znači back end razvoj, uđimo u neka stvarna pitanja.

Je li potrebno znanje o programiranju za pozadinu?

TLDR; Ne.

Razvoj stražnjih krajeva, kao što je gore spomenuto, uključuje programiranje računala koje vjerojatno sjedi na drugoj strani planeta i odgovorno je na ono što vaši korisnici govore sa svojih računala.

Ako ste stalni razvojni programer, zapravo vam nije potrebno brinuti se što se događa unutar tih HTML, CSS i JavaScript datoteka koje šaljete u korisnikov preglednik. Umjesto toga, morate se više usredotočiti na izvedbu poslužitelja, kod poslužitelja i protok.

Što ide u back end razvoj?

Pa, pregledavajući knjige, možete reći da je osoba koja kodira aplikaciju koja može odgovoriti na HTTP zahtjeve back-end programer.

Ali u stvarnosti, ponekad back end programeri mogu učiniti mnogo više od pukog pisanja skripti poslužitelja. Oni imaju znanje za postavljanje obrnutih proxy poslužitelja (NGiNX / HAProxy), omogućavanje kompresije i druge načine za ubrzavanje web stranice te postavljanje proizvodnog okruženja dockera.

Da biste se kvalificirali za back end programera, rekao bih da su najmanje potrebne vještine potrebne:

  1. Dobro znanje o programskom jeziku na kojem možete pisati HTTP poslužitelje. Primjeri: C #, Java, Node, PHP, Python itd. (Ima ih mnogo!)
  2. Upravljajte hostiranjem pomoću cPanela (tradicionalni) ili pomoću bash terminala (cloud hosting / tradicionalni)
  3. Rad sa sustavima za kontrolu verzija (VCS) poput gita za upravljanje i postavljanje gradnji

Kao što svaka igra dolazi s minimalnim i preporučenim specifikacijama, i za back end programere moje preporučne specifikacije bile bi (uključujući minimalne vještine):

  1. NGiNX za statičke datoteke i upravljanje poslužiteljem
  2. Vještine upravljanja bazom podataka (SQL / NoSQL)
  3. Sigurnost pozadine (pisanje sigurnog i robusnog koda, pokretanje aplikacija u spremnicima dockera s ograničenim privilegijama, zaštita od DoS napada)
  4. Autoskaliranje / uravnoteženje opterećenja

U redu, previše pričamo o tome što ide u back end razvoj. Ali kako to postati?

Počnite s minimalnim zahtjevima

Kao što sam rekao, za pozadinu, baš kao i igre, imamo set minimalnih zahtjeva i preporučenih zahtjeva. Minimalni se zahtjevi sastoje od 3 stvari:

Naučite pozadinski programski jezik

Kad ljudi uče sami, obično nemaju tim ili nekoga tko može raditi na front end razvoju. Svi su sami. Stoga ćete često morati sami stvarati web stranice i poslužitelje, barem na početku.

Iako postoji mnogo izbora za pozadinske programske jezike, i ne mogu se sjetiti niti jednog popularnog sistemskog jezika koji ne podržava HTTP poslužitelje. Prednost odabira Node-a je u tome što se vaše JavaScript sposobnosti JavaScript mogu prenijeti na back-end.

Bez obzira na to, možete birati između različitih jezika kao što su Java, C ++, C #, Python, PHP itd.

Kako možete odabrati jedan, možda ćete pitati. Odgovor je isti kao i u prednjem razvojnom članku: u početku morate sve isprobati i vidjeti koji će s vama najbolje kliknuti.

Čvor je jednostavan jer ste možda već radili JS programiranje za prednji kraj. Ali ako ste programer za Python ili Java, možda ćete ih lako pronaći. Ovisi o vašoj profesiji i ukusu u potpunosti.

Saznajte više o upravljanju hostingom

Prošla su vremena kada ćete morati ručno kupiti poslužitelje i postaviti ih u svom domu, povezati se sa svojim ISP-om, sve te stvari obaviti sami. Ovo je doba računalstva u oblaku. Sada, prilikom hostinga vaše web stranice, imate uglavnom 2 mogućnosti:

  1. Idete za upravljane hosting servere poput HostGator ili GoDaddy.
  2. Idete za pružatelje usluga hostinga u oblaku poput GCP, AWS ili DigitalOcean.

Koja je razlika između njih dvoje? U oba slučaja, poslužitelji su u vlasništvu i njima upravljaju odgovarajuće tvrtke. Ali glavna je razlika u tome što je upravljani hosting više prilagođen grafičkom sučelju, ima bogat set alata za gledanje datotečnog sustava, praćenje upotrebe, upravljanje službenom e-poštom službene domene, prijenos / preuzimanje datoteka s vašeg poslužitelja itd. To je u osnovi postavka za ljude s manje tehničkih vještina.

Iz tog razloga ne preporučujem upravljane web lokacije poput HostGator ili GoDaddy za iskusne programere. Ipak, možda je dobra platforma za griješenje i učenje na njima, prvenstveno zato što za njih obično imate pretplaćene planove. Imat ćete i lijepo korisničko sučelje za upravljanje stvarima, koje vam ne dopušta da slučajno pucate u svoje račune.

Ali kad počnete ubrzavati, preporučujem da se prebacite na pružatelja usluga u oblaku. Ovo oduzima sve lijepe alate s cPanela koje ste koristili za upravljanje datotekama i mapama na poslužiteljima. Ali istodobno, izazvat će vas da puno povisite svoje vještine.

Danas i mnogi pružatelji usluga u oblaku nude pristojnu besplatnu probnu verziju, tako da možete isprobati njihovu platformu prije nego što postanete puni. Ja hostiram svoje web mjesto za programere - codedamn - na DigitalOcean i smatram da je na slatkom bilansu složenost stranice i značajke.

Ovu vezu možete koristiti za prijavu na DigitalOcean i dobiti besplatne kredite od 100 USD . Primjeri DigitalOcean jeftini su čak 5 dolara mjesečno, tako da imate pistu od oko 20 mjeseci na toj instanci, sjajno, ha?

U svakom slučaju, možete odabrati bilo kojeg pružatelja usluga u oblaku. Tada je važno naučiti upravljati poslužiteljem koristeći samo naredbeni redak ubacujući se u njega.

Saznajte više o sustavima za kontrolu verzija

Osim Gita za VCS postoje i druga rješenja. Ali Git je najčešće korišten i najjednostavniji za razumijevanje.

Kao pojedinac, možda to nećete odmah cijeniti. Ali shvatit ćete zašto je to toliko važno čim započnete raditi u timu na više značajki istovremeno u vašem projektu.

Git vam omogućuje upravljanje vašim tijekom rada pomoću predavanja i grananja. Urezi su poput kontrolnih točaka u vašoj bazi kodova - onih na koje se uvijek možete vratiti ako zabrljate.

Podružnice su poput alternativne stvarnosti vašeg projekta, gdje bi se moglo dogoditi nešto sasvim drugo. Te se alternativne stvarnosti mogu stvoriti iz bilo kojeg trenutka i mogu se ponovno spojiti u bilo kojem trenutku.

Ako se te stvarnosti mogu spojiti zajedno s kompatibilnošću, onda je to u redu. Ali ako postoji sukob (poput ako ste živi u jednoj stvarnosti, a mrtvi u drugoj), tada morate ručno odabrati. Ostale promjene mogu se automatski spojiti.

Git je super zanimljiv, a kad ga se jednom priviknete, poželjet ćete ga koristiti u svakom projektu. Povijest svog rada morate voditi na učinkovit način (ona komprimira i pohranjuje samo razliku između obveza).

Omogućuje vam i stvaranje mrežnih git spremišta na web mjestima poput GitHub-a, koji djeluje kao središnji izvor istine za vaše web mjesto. Stranice poput GitHub-a mogu se konfigurirati pomoću posebnih web-kuka koje zapravo mogu ažurirati vašu web-lokaciju svaki put kada dodate novu kontrolnu točku (novo urezivanje), a da nikada ne morate ručno ići na poslužitelj i sami ga ažurirati.

Idite na preporučene vještine

Veliko vjerujem u učenju radeći. A najbolji način da nešto učinite proizlazi iz potrebe ili interesa. Jednom kada se smatrate dovoljno dobrim s minimalnim zahtjevima, vrijeme je da steknete preporučene vještine. To uključuje sve gore spomenute alate poput Dockera i NGiNX-a.

DevOps je također nešto što se super uklapa u back end programere. Možete pokušati istražiti TravisCI ili CircleCI za automatizirane implementacije gradnje. Neprekidna integracija i postavljanje (CI / CD) tema je koja bi mogla potrajati još jedan cijeli post na blogu, pa neću ulaziti u to. Zapravo, nakon što se pravilno postavi, uštedjet ćete smiješnu količinu vremena za programere!

Zatim dolaze baze podataka koje sam smjestio u preporučene vještine. Ali trebat će vam baze podataka za gotovo svaku aplikaciju koja uključuje neku vrstu trajnosti podataka koju generira korisnik.

S bazama podataka obično je lako započeti rad, ali ih je teže održavati i ispravno podešavati. Najbolji način da započnete raditi na pozadinskom tehnološkom steku je da imate sve skupa na jednom poslužitelju - kod vaše aplikacije, obrnute proxy poslužitelje, bazu podataka itd. Tada, kad postanete vještiji u svakoj stvari, odvojite ga od postojeće poslovne logike.

Čineći to, omogućavate arhitekturu koja se može jako prilagoditi. Intenzivna aplikacija koja radi s bazom podataka mogla bi imati optimizirano rješenje za baze podataka. A web mjesta povezana s velikim prometom trebala bi imati dobar CDN mehanizam za iskrcavanje statičke imovine itd.

Zaključak

Toliko se toga može naučiti, ali sve je to dostižno ako ne odustanete. Javite mi što mislite o ovom postu putem mojih twitter-a i Instagrama . Puno će mi značiti ako se tamo povežemo!

Također, ako ste zainteresirani, naručite codedamn - platformu usmjerenu na programere za učenje tehnologija poput pozadinskog razvoja! Čak sam objavio YT video o vrtnji vašeg vlastitog jednostavnog web poslužitelja u 2 minute! Pogledajte to i javite mi što mislite!

Mir!