Parim viis taustaprogrammi veebiarenduse õppimiseks

Minu eelmises artiklis kirjeldati, kuidas saate frontendi arendusse asuda. Samuti arutati, kuidas esiotsa saab olla koht, mis on täidetud maamiinidega - astu valesse kohta ja sind valdavad JavaScripti ökosüsteemi paljud raamistikud.

Vaatame selles ajaveebiartiklis, kuidas pääsete back endi arendusse. Teel vastan mõnele kõige levinumale küsimusele, mida inimesed selle kohta mulle küsivad.

Mis on taustaprogrammi arendus?

Esiosa arendus hõlmab seda, mida kasutaja ekraanil näeb, kui avab teile kuuluva konkreetse URL-i. Isegi täiesti staatilises keskkonnas (ainult HTML / CSS-iga), kui keegi veebisaidi avab, peab mõni planeedi server vastama teile nende HTML- ja CSS-failidega.

See server on lihtsalt arvuti, täpselt nagu see, mida kasutate ise Interneti sirvimiseks. Kuid see on jõudluseks häälestatud ja sellel pole tarbetuid komponente, nagu hiir või klaviatuur, küljes. Ja see istub koos paljude muude arvutitega tõenäoliselt andmelaos.

Nende arvutite programmeerimist mingil erilisel viisil nimetatakse back end arenduseks .

Võite arvata, et taustaprogrammi arendust nimetatakse selliseks, mis see on, kuna see kulgeb kasutaja selja taga. Teie veebisaidi külastaja ei "kunagi" täielikult ligipääsu tagaküljele. Nad lihtsalt suhtlevad teie serveriga, kas otse sadamate kaudu väga piiratud juurdepääsu jaoks (näiteks HTML / CSS-failide edastamine) või isegi mitte - need on mattunud sügavale CDN-ide või tulemüüride alla (näiteks Cloudflare).

Nüüd, kui oleme toorelt aru saanud, mida taguotsade arendamine tähendab, võtame ette mõned tõelised küsimused.

Kas esiotsa programmeerimisalased teadmised on vajalikud taguotsa jaoks?

TLDR; Ei

Nagu eespool mainitud, hõlmab endas arendus arvuti planeerimist, mis asub arvatavasti teisel pool planeeti ja vastutab teie kasutajate arvutisse reageerimise eest.

Kui olete täiskohaga taustaprogrammi arendaja, ei pea te tegelikult hoolima sellest, mis toimub nende kasutajate brauserisse saadetud HTML-, CSS- ja JavaScripti failides. Selle asemel peate keskenduma rohkem serveri jõudlusele, serveri koodile ja läbilaskevõimele.

Mis läheb tagaosa arendusse?

Raamatute järgi võib öelda, et isik, kes kodeerib rakenduse, mis suudab vastata HTTP-päringutele, on taustarendaja.

Kuid tegelikkuses suudavad vahelehed mõnikord teha palju enamat kui lihtsalt serveriskriptide kirjutamine. Neil on teadmised vastupidiste puhverserverite (NGiNX / HAProxy) seadistamiseks, pakkimise võimaldamiseks ja saidi kiirendamiseks muudel viisidel ning tootmisdokkeri keskkonna seadistamiseks.

Tagatise arendajaks kvalifitseerumiseks ütleksin, et vajalikud minimaalsed oskused on järgmised:

  1. Hea teadmine programmeerimiskeelest, milles saate kirjutada HTTP-servereid. Näited: C #, Java, Node, PHP, Python jne (neid on palju!)
  2. Saate hostida cPaneli (traditsiooniline) või bashi terminali (pilvemajutus / traditsiooniline) abil
  3. Töötamine versioonihaldussüsteemidega (VCS) nagu git järkude haldamiseks ja juurutamiseks

Täpselt nagu igal mängul on minimaalsed ja soovitatud spetsifikatsioonid, on ka minu jaoks tagumiste arendajate jaoks soovitatavad spetsifikatsioonid (sh minimaalsed oskused):

  1. NGiNX staatiliste failivarade ja serveri haldamiseks
  2. Andmebaaside haldamise oskused (SQL / NoSQL)
  3. Taustaprogrammi turvalisus (turvalise ja kindla koodi kirjutamine, piiratud õigustega dokkide konteinerites rakenduste käitamine, kaitse DoS-rünnakute eest)
  4. Automaatne skaleerimine / koormuse tasakaalustamine

Hästi, liiga palju räägitakse sellest, mis toimub tagumise otsa arenduses. Kuidas aga selliseks saada?

Alustage miinimumnõuetest

Nagu ma ütlesin, on ka meie endi jaoks nagu mängude jaoks ka minimaalsed ja soovitatud nõuded. Miinimumnõuded koosnevad kolmest asjast:

Õpi taustaprogrammi keelt

Kui inimesed õpivad ise, pole neil tavaliselt meeskonda ega kedagi, kes oskaks esiotsa arendamist. Nad kõik on omaette. Nii peate vähemalt alguses lihtsalt ise veebisaite ja servereid looma.

Kuigi taustaprogrammeerimiskeeltel on palju valikuid ja ma ei suuda mõelda ühegi populaarse süsteemikeele peale, mis ei toeta HTTP-servereid kohe karbist. Sõlme valimise eelis on see, et teie JavaScripti oskused on üle kantavad tagumisse ossa.

Sellest hoolimata saate valida paljude keelte vahel, nagu Java, C ++, C #, Python, PHP jne.

Kuidas ühe valida, võite küsida. Vastus on sama, mis oli kasutajaliidese arendusartiklis: peate kõigepealt proovima ja nägema, kumb klõpsab teiega kõige paremini.

Sõlm on lihtne, kuna võib-olla olete juba esiotsa JS-i programmeerimise teinud. Kuid kui olete Pythoni või Java arendaja, võib teil neid hõlpsasti kätte saada. See sõltub täielikult teie erialast ja maitsest.

Lisateave hostimise haldamise kohta

Möödas on ajad, mil peate serverid käsitsi ostma ja oma kodus seadistama, Interneti-teenuse pakkujaga ühenduse looma, kõike seda ise tegema. See on pilvandmetöötluse ajastu. Nüüd on teie veebisaidi majutamisel peamiselt kaks võimalust:

  1. Otsitakse hallatud hostiservereid, nagu HostGator või GoDaddy.
  2. Piletimajutuse pakkujate (nt GCP, AWS või DigitalOcean) otsimine

Mis on nende kahe erinevus? Mõlemal juhul kuuluvad serverid vastavatele ettevõtetele ja neid haldavad nad. Kuid peamine erinevus on see, et hallatud majutus on GUI-sõbralikum, sisaldab rikkalikku tööriistakomplekti failisüsteemi nägemiseks, kasutamise jälgimiseks, oma ametlike domeenimeilide haldamiseks, failide üleslaadimiseks / allalaadimiseks oma serverist jne. Põhimõtteliselt on see seadistus inimestele, kellel on vähem tehnilisi oskusi.

Seetõttu ei soovita ma kogenud arendajatele hallatavaid saite nagu HostGator või GoDaddy. Siiski võib see olla hea platvorm vigade tegemiseks ja edasi õppimiseks peamiselt seetõttu, et teil on nende jaoks tavaliselt ettemakstud plaanid. Teil on ka asjade haldamiseks kena kasutajaliides, mis ei võimalda teil arveid kogemata üles lasta.

Kuid kui hakkate kiirust üles võtma, soovitan teil minna üle pilveteenuse pakkujale. See võtab cPanelilt ära kõik toredad tööriistad, mida kasutasite serverites failide ja kaustade haldamiseks. Kuid samal ajal esitab see teile väljakutse oma oskusi palju suurendada.

Täna pakuvad paljud pilveteenuse pakkujad ka korralikku tasuta prooviversiooni, et saaksite enne nende täielikku sisselülitamist nende platvormi proovida. Hostin oma arendajatele mõeldud veebisaiti - codedamn - DigitalOceanis ja leian, et see on tasakaalus. saidi keerukus ja omadused.

Selle lingi abil saate registreeruda DigitalOceanis ja saada tasuta 100 dollarit krediiti . DigitalOcean-i eksemplarid on nii odavad kui 5 dollarit kuus, nii et teil on sellel juhul umbes 20-kuuline lennurada, palju?

Igatahes saate valida mis tahes pilvepakkuja. Siis on oluline õppida serverit haldama ainult käsurea abil, sisestades selle sisse.

Lisateave versioonihaldussüsteemide kohta

Lisaks GIT-le VCS-ile on ka muid lahendusi. Kuid Git on kõige enam kasutatav ja arusaadavam.

Eraisikuna ei pruugi te seda kohe hinnata. Kuid saate aru, miks see on nii oluline, kui alustate projekti üheaegselt mitme funktsiooniga meeskonnas töötamist.

Git võimaldab teil hallata oma töövoogu kulude ja harude abil. Kulukohustused on nagu teie koodibaasi kontrollpunktid - need, kuhu saate alati tagasi pöörduda, kui te seda keerate.

Filiaalid on nagu teie projekti alternatiivsed reaalsused , kus võib juhtuda midagi hoopis muud. Neid alternatiivseid reaalsusi saab luua mis tahes ajahetkest ja neid saab igal ajal uuesti tagasi liita.

Kui need reaalsused saab ühilduvusega kokku liita, siis on hästi. Kuid kui on konflikt (näiteks kui olete ühes reaalsuses elus ja teises surnud), peate valiku tegema käsitsi. Muud muudatused saab automaatselt ühendada.

Git on ülihuvitav ja kui olete sellest aru saanud, soovite seda igas projektis kasutada. Saate hoida tõhusalt oma tööajalugu (see surub kokku ja salvestab ainult erinevuse toimingute vahel).

See võimaldab teil luua ka veebipõhiseid git-hoidlaid sellistele saitidele nagu GitHub, mis toimib teie veebisaidi keskse tõeallikana. Selliseid saite nagu GitHub saab konfigureerida spetsiaalsete veebikonksudega, mis võivad teie veebisaiti tegelikult värskendada iga kord, kui lisate uue kontrollpunkti (uus kohustus), ilma et peaksite kunagi ise serverisse minema ja seda ise värskendama.

Otsige soovitatud oskusi

Olen suur usku tegemise kaudu õppimisse. Ja parim viis midagi teha tuleneb vajadusest või huvist. Kui peate end miinimumnõuetega piisavalt heaks, on aeg omandada soovitatud oskused. See hõlmab kõiki eespool nimetatud tööriistu nagu Docker ja NGiNX.

DevOps on ka midagi, mis sobib super-kenasti back-end arendajatega. Võite proovida ja uurida TravisCI või CircleCI automatiseeritud ehituse juurutamiseks. Pidev integreerimine ja juurutamine (CI / CD) on teema, mis võib võtta veel terve blogipostituse, nii et ma ei hakka sellesse süvenema. Tegelikult säästab see pärast õigesti seadistamist teie jaoks naeruväärse hulga arendaja aega!

Seejärel tulevad andmebaasid, mille panin soovitatud oskustesse. Kuid teil on vaja andmebaase peaaegu kõigi rakenduste jaoks, mis hõlmavad mingisugust kasutaja loodud andmete püsivust.

Andmebaasidega on tavaliselt lihtne tööd alustada, kuid neid on keerulisem hooldada ja korralikult kohandada. Parim viis nutitelefoni kallal töötamise alustamiseks on kõik ühes serveris koos olla - teie rakenduse kood, vastupidised puhverserverid, andmebaas jne. Seejärel saate iga asjaga kursis olles lahutage see olemasolevast äriloogikast.

Seda tehes lubate arhitektuuri, mida saab väga skaleerida. Andmebaasitoimingutega intensiivsel rakendusel võib olla andmebaaside jaoks optimeeritud lahendus. Ja tiheda liiklusega saidil peaks olema hea CDN-mehhanism staatiliste varade mahalaadimiseks jne.

Järeldus

Õppida on nii palju, kuid see kõik on saavutatav, kui te ei loobu. Andke mulle teada, mida te sellest postitusest arvate minu twitteri ja Instagrami käepidemete kaudu. See tähendab minu jaoks palju, kui me seal ühendust võtame!

Samuti, kui olete huvitatud, saate checkout codedamn - arendajale keskendunud platvormi õppimistehnoloogiatele, näiteks taustaprogrammi arendamiseks! Ma isegi postitasin YT video teie enda lihtsa veebisaidi serveri 2 minutiga keerutamise kohta! Kontrollige seda ja andke mulle teada, mida arvate!

Rahu!