Най-добрият начин да научите Backend уеб разработка

Предишната ми статия описва как можете да влезете във фронтенд разработка. Той също така обсъди как предният край може да бъде място, изпълнено с наземни мини - стъпвайте на грешното място и ще бъдете затрупани от многото рамки на екосистемата на JavaScript.

В тази статия в блога нека да видим как можете да влезете в разработването отзад. По пътя ще отговоря на някои от най-често срещаните въпроси, които хората ми задават за това.

Какво е Backend разработка?

Разработката отпред включва това, което потребителят вижда на екрана, когато отвори конкретен URL, притежаван от вас. Дори в напълно статична среда (само с HTML / CSS), когато някой отвори уебсайт, някой сървър на планетата трябва да ви отговори с тези HTML и CSS файлове.

Този сървър е просто компютър, точно като този, който използвате сами за сърфиране в интернет. Но той е настроен за производителност и няма прикачени ненужни компоненти като мишка или клавиатура. И той седи с тонове други компютри, вероятно в склад за данни.

Програмирането на тези компютри по някакъв специален начин се нарича back end разработка .

Може би си мислите, че бекенд разработката се нарича това, което е, защото тече зад гърба на потребителя. Посетителят на вашия уебсайт никога наистина не „влиза“ напълно в задната част. Те просто комуникират с вашия сървър или директно през портове за много ограничен достъп (като прехвърляне на HTML / CSS файлове) или дори не това - заровени дълбоко под CDN или защитни стени (като Cloudflare).

Сега, когато имаме грубо разбиране за това какво означава back end развитие, нека да влезем в някои реални въпроси.

Необходими ли са познания за програмиране отпред за задния край?

TLDR; Не.

Разработването отзад, както беше споменато по-горе, включва програмирането на компютър, който вероятно седи от другата страна на планетата, отговорен за реакцията на това, което потребителите казват от собствените си компютри.

Ако сте на пълен работен ден разработчик, не е нужно наистина да се интересувате какво се случва в тези HTML, CSS и JavaScript файлове, които изпращате до браузъра на потребителя. Вместо това трябва да се съсредоточите повече върху производителността на сървъра, кода на сървъра и производителността.

Какво влиза в развитието отзад?

Е, като разглеждате книгите, може да кажете, че човек, който кодира приложение, което може да отговори на HTTP заявки, е разработчик отзад.

Но в действителност, понякога разработчиците от задната част са в състояние да направят много повече от просто писане на сървърни скриптове. Те притежават знанията за настройване на обратни прокси сървъри (NGiNX / HAProxy), разрешаване на компресиране и други начини за ускоряване на сайта и настройване на производствена среда на докер.

За да се класирам за разработчик на заден план, бих казал, че минималните умения, от които се нуждаете, са:

  1. Добри познания за език за програмиране, на който можете да пишете HTTP сървъри. Примери: C #, Java, Node, PHP, Python и др. (Има много!)
  2. Управлявайте да хоствате с помощта на cPanel (традиционен) или с помощта на bash терминал (облачен хостинг / традиционен)
  3. Работа със системи за контрол на версиите (VCS) като git за управление и внедряване на компилации

Точно както всяка игра се предлага с минимални и препоръчителни спецификации, за разработчиците от задната част моите препоръки ще бъдат (включително минималните умения):

  1. NGiNX за статични файлови активи и управление на сървъра
  2. Умения за управление на база данни (SQL / NoSQL)
  3. Сигурност на бекенда (Писане на безопасен и надежден код, стартиране на приложения в докер контейнери с ограничени привилегии, защита срещу DoS атаки)
  4. Автомащабиране / балансиране на натоварването

Добре, прекалено много говорим за това, което влиза в развитието отзад. Но как да станеш такъв?

Започнете с минимални изисквания

Както казах, за задната част, точно като игрите, имаме набор от минимални изисквания и препоръчителни изисквания. Минималните изисквания се състоят от 3 неща:

Научете бекенд език за програмиране

Когато хората се учат сами, те обикновено нямат екип или някой, който може да направи разработка отпред. Всички са сами. Така че често ще трябва да създавате уеб страници и сървъри сами, поне в началото.

Въпреки че има много възможности за избор на езици за програмиране отзад и не мога да се сетя за нито един популярен системен език, който да не поддържа HTTP сървъри. Предимството при избора на Node е, че вашите умения за JavaScript от предния край са преносими към задния край.

Въпреки това можете да избирате от различни езици като Java, C ++, C #, Python, PHP и т.н.

Как да изберете такъв, може да попитате. Отговорът е същият, както беше в статията за разработка отпред: първо трябва да опитате всичко и да видите кой щраква най-добре с вас.

Node е лесен, тъй като може би вече сте направили JS програмиране за предния край. Но ако сте разработчик на Python или Java, може да намерите тези, които лесно можете да вземете. Зависи от вашата професия и вкус напълно.

Научете за управлението на хостинг

Отминаха дните, когато ще трябва ръчно да купувате сървъри и да ги настройвате в дома си, да се свързвате с вашия доставчик на интернет услуги, да правите всичко това сами. Това е ерата на облачните изчисления. Сега, когато хоствате уебсайта си, имате главно 2 възможности:

  1. Отивате за управлявани хостинг сървъри като HostGator или GoDaddy.
  2. Отивате за доставчици на хостинг в облак като GCP, AWS или DigitalOcean.

Каква е разликата между двете? И в двата случая сървърите се притежават и управляват от съответните компании. Но основната разлика е, че управляваният хостинг е по-удобен за GUI, има богат набор от инструменти за преглед на файловата система, наблюдение на използването, управление на имейлите на официалния ви домейн, качване / изтегляне на файлове от вашия сървър и т.н. По принцип това е настройка за хора с по-малко технически умения.

Поради тази причина не препоръчвам управлявани сайтове като HostGator или GoDaddy за опитни разработчици. И все пак може да е добра платформа за грешки и учене, преди всичко защото обикновено имате предплатени планове за тях. Ще имате и приятен потребителски интерфейс за управление на нещата, който не ви позволява случайно да изстреляте сметките си.

Но когато започнете да набирате скорост, препоръчвам ви да преминете към доставчик на облак. Това отнема всички хубави инструменти от cPanel, които сте използвали за управление на файлове и папки на сървъри. Но в същото време ще ви предизвика да повишите уменията си много.

Днес много доставчици на облак предлагат и приличен безплатен пробен период, така че всъщност да можете да изпробвате тяхната платформа, преди да влезете пълноценно. Аз хоствам уебсайта си за разработчици - codedamn - на DigitalOcean и откривам, че е в сладък баланс от сложност и характеристики на сайта.

Можете да използвате тази връзка, за да се регистрирате в DigitalOcean и да получите безплатни кредити от $ 100 . Екземплярите на DigitalOcean са толкова евтини, колкото 5 долара на месец, така че имате писта от около 20 месеца на този екземпляр, много, а?

Както и да е, можете да изберете всеки доставчик на облак. Тогава е важно да се научите да управлявате сървъра, като използвате само командния ред, като влезете в него.

Научете за системите за контрол на версиите

Освен Git за VCS има и други решения. Но Git е най-използваният и най-простият за разбиране.

Като физическо лице може да не го оцените веднага. Но ще разберете защо е толкова важно в момента, в който започнете да работите или в екип по множество функции едновременно във вашия проект.

Git ви позволява да управлявате работния си процес, като използвате комити и клонове. Ангажиментите са като контролни точки във вашата кодова база - тези, към които винаги можете да се върнете, ако объркате.

Клоновете са като алтернативни реалности на вашия проект, където може да се случи нещо съвсем различно. Тези алтернативни реалности могат да бъдат създадени от всеки момент във времето и могат да бъдат обединени обратно по всяко време.

Ако тези реалности могат да се обединят заедно със съвместимостта, тогава е добре. Но ако има конфликт (като ако сте жив в една реалност и мъртъв в друга), тогава трябва ръчно да направите избор. Други промени могат да бъдат обединени автоматично.

Git е супер интересен и след като го разберете, ще искате да го използвате във всеки проект. Можете да водите по ефективен начин историята на работата си (тя компресира и съхранява само разликата между ангажиментите).

Също така ви позволява да създавате онлайн git хранилища на сайтове като GitHub, който действа като централен източник на истина за вашия уеб сайт. Сайтове като GitHub могат да бъдат конфигурирани със специални уеб куки, които всъщност могат да актуализират уебсайта ви, когато добавяте нова контролна точка (нов ангажимент), без изобщо да се налага ръчно да отивате на сървъра и да го актуализирате сами.

Вземете препоръчани умения

Аз съм голям вярващ в ученето чрез работа. И най-добрият начин да направите нещо идва от необходимост или интерес. След като се смятате за достатъчно добър с минималните изисквания, е време да придобиете препоръчаните умения. Това включва всички посочени по-горе инструменти като Docker и NGiNX.

DevOps също е нещо, което се вписва супер добре с разработчиците от задната част. Можете да опитате и да изследвате TravisCI или CircleCI за автоматизирано внедряване на компилация. Непрекъснатата интеграция и внедряване (CI / CD) е тема, която може да отнеме още една цяла публикация в блога, така че няма да навлизам в това. Всъщност, след като бъде настроен правилно, ще ви спести нелепо време за разработчици!

След това идват бази данни, които поставих в препоръчани умения. Но ще ви трябват бази данни за почти всяко приложение, което включва някакъв вид постоянство на данни, генериран от потребителя.

Базите данни обикновено са лесни за започване на работа, но са по-трудни за поддържане и настройка правилно. Най-добрият начин да започнете да работите върху back stack технологичен стек е да имате всичко заедно на един сървър - кодът на вашето приложение, обратните прокси сървъри, базата данни и т.н. След това, когато станете по-опитни във всяко нещо, можете да отделете го от съществуващата бизнес логика.

Правейки това, вие активирате архитектура, която може да бъде силно мащабирана. Интензивно приложение, работещо с база данни, може да има оптимизирано решение за бази данни. А сайтът с голям трафик трябва да има добър CDN механизъм за разтоварване на статични активи и т.н.

Заключение

Има толкова много за научаване, но всичко това е постижимо, ако не се откажете. Кажете ми какво мислите за тази публикация чрез моите дръжки в Twitter и Instagram . Ще ми означава много, ако се свържем там!

Освен това, ако се интересувате, разгледайте codedamn - платформа, ориентирана към разработчици за обучителни технологии като бекенд разработка! Дори публикувах YT видео за завъртане на вашия собствен сървър за уебсайт за 2 минути! Проверете това и ми кажете какво мислите!

Мир!