Найкращий спосіб навчитися розробки веб-сайтів

У моїй попередній статті було описано, як можна зайнятися розробкою інтерфейсу. У ньому також обговорювалося, як фронт-енд може бути місцем, заповненим наземними мінами - крокуйте не в тому місці, і ви будете вражені багатьма структурами екосистеми JavaScript.

У цій статті в блозі давайте подивимось, як ви можете перейти на задній план розвитку. По дорозі я відповім на деякі найпоширеніші запитання, які мені задають люди.

Що таке Backend Development?

Розробка інтерфейсу передбачає те, що користувач бачить на екрані, коли відкриває певну URL-адресу, що належить вам. Навіть у абсолютно статичному середовищі (лише з HTML / CSS), коли хтось відкриває веб-сайт, якийсь сервер на планеті повинен відповісти вам цими файлами HTML і CSS.

Цей сервер - це просто комп’ютер, як і той, який ви використовуєте для перегляду Інтернету. Але він налаштований на продуктивність і не має зайвих компонентів, таких як миша або клавіатура. І він сидить з тоннами інших комп’ютерів, ймовірно, у сховищі даних.

Програмування цих комп’ютерів якимось особливим чином називається back end development .

Вам може здатися, що бекенд розробку називають такою, що вона є, оскільки вона працює за спиною користувача. Відвідувач вашого веб-сайту ніколи насправді не "отримує" доступ до задньої частини повністю. Вони просто спілкуються з вашим сервером, або безпосередньо через порти для дуже обмеженого доступу (наприклад, передача файлів HTML / CSS), або навіть не того - закопані глибоко під CDN або брандмауери (як Cloudflare).

Тепер, коли ми вже добре розуміємо, що означає задній розвиток, давайте розглянемо кілька реальних питань.

Чи потрібні знання програмування для інтерфейсу?

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 тощо.

Як вибрати один, можете запитати. Відповідь така ж, як і в статті про розробку інтерфейсу: ви повинні спробувати все спочатку і побачити, хто з вас натискає найкраще.

Вузол простий, оскільки ви, можливо, вже робили програмування JS для інтерфейсу. Але якщо ви розробник Python або Java, їх може бути легко підібрати. Це повністю залежить від вашої професії та смаку.

Дізнайтеся про управління хостингом

Пройшли ті часи, коли вам доведеться купувати сервери вручну та встановлювати їх у себе вдома, підключатись до свого провайдера, робити все це самостійно. Це ера хмарних обчислень. Зараз, розміщуючи веб-сайт, у вас є в основному 2 варіанти:

  1. Перехід на керовані сервери хостингу, такі як HostGator або GoDaddy
  2. Вибираємо хмарних провайдерів, таких як GCP, AWS або DigitalOcean.

Яка різниця між ними? В обох випадках сервери належать та експлуатуються відповідними компаніями. Але головна відмінність полягає в тому, що керований хостинг є більш зручним для графічного інтерфейсу, має багатий набір інструментів для перегляду файлової системи, моніторингу використання, управління офіційними електронними листами домену, завантаження / завантаження файлів з вашого сервера тощо. В основному це настройка для людей з меншими технічними навичками.

З цієї причини я не рекомендую керовані сайти, такі як HostGator або GoDaddy, досвідченим розробникам. Тим не менше, це може бути гарною платформою для помилок і вчитися на них, перш за все тому, що у вас, як правило, є передплачені плани для них. У вас також буде чудовий інтерфейс для управління речами, який не дозволяє випадково збивати рахунки.

Але коли ви починаєте набирати швидкість, я рекомендую вам перейти до хмарного провайдера. Це забирає всі приємні інструменти з cPanel, якими ви керували файлами та папками на серверах. Але в той же час це буде складно перед вами набагато підвищити свої вміння.

Сьогодні багато хмарних провайдерів також пропонують пристойну безкоштовну пробну версію, так що ви можете спробувати їх платформу до того, як увійти в систему. Я розміщую свій веб-сайт для розробників - codedamn - на DigitalOcean і вважаю, що він знаходиться на прекрасному балансі складність та особливості сайту.

Ви можете скористатися цим посиланням для реєстрації на DigitalOcean і отримати безкоштовні кредити в розмірі 100 доларів США . Екземпляри DigitalOcean коштують всього 5 доларів на місяць, тож у вас на цьому екземплярі близько 20 місяців, дуже добре, так?

У будь-якому випадку, ви можете вибрати будь-якого хмарного провайдера. Тоді важливо навчитися керувати сервером, використовуючи лише командний рядок, ssh'ing в нього.

Дізнайтеся про системи контролю версій

Крім Git для VCS існують інші рішення. Але Git є найбільш вживаним і найпростішим для розуміння.

Як людина, ви можете це не оцінити відразу. Але ви зрозумієте, чому це так важливо, коли ви починаєте працювати в команді над кількома функціями одночасно у своєму проекті.

Git дозволяє керувати робочим процесом за допомогою комітів та гілок. Комітети - це як контрольні точки у вашій кодовій базі - ті, до яких ви завжди можете повернутися, якщо зіпсуєте.

Філії - це як альтернативні реалії вашого проекту, де може статися щось зовсім інше. Ці альтернативні реалії можуть бути створені з будь-якого моменту часу і можуть бути об’єднані назад у будь-який час.

Якщо ці реальності можна об’єднати разом із сумісністю, то це нормально. Але якщо існує конфлікт (наприклад, якщо ти живий в одній реальності, а мертвий в іншій), то ти повинен зробити вибір вручну. Інші зміни можна об’єднати автоматично.

Git надзвичайно цікавий, і як тільки ви його звикнете, ви захочете використовувати його у кожному проекті. Ви можете ефективно вести історію своєї роботи (вона стискає та зберігає лише різницю між комітами).

Це також дозволяє створювати онлайн-сховища git на таких сайтах, як GitHub, який виступає центральним джерелом правди для вашого веб-сайту. Такі сайти, як GitHub, можна налаштувати за допомогою спеціальних веб-хуків, які можуть фактично оновлювати ваш веб-сайт щоразу, коли ви додаєте нову контрольну точку (нову коміту), і вам ніколи не потрібно вручну переходити на сервер та оновлювати його самостійно.

Перейдіть за рекомендованими навичками

Я дуже вірую в навчання на практиці. А найкращий спосіб щось зробити - це необхідність чи інтерес. Коли ви вважаєте себе достатньо хорошим з мінімальними вимогами, настав час набути рекомендованих навичок. Сюди входять усі такі інструменти, як Docker та NGiNX, згадані вище.

DevOps - це також те, що чудово вписується у розробників, що працюють на задній панелі. Ви можете спробувати дослідити TravisCI або CircleCI для автоматичного розгортання збірки. Безперервна інтеграція та розгортання (CI / CD) - це тема, яка може зайняти ще одне ціле повідомлення в блозі, тому я не буду в цьому розбиратися. Насправді, як тільки його правильно налаштувати, це заощадить вам смішну кількість часу розробника!

Потім з’являються бази даних, які я розмістив у рекомендованих навичках. Але вам знадобляться бази даних майже для будь-якого додатка, який передбачає певну стійкість даних, яку генерує користувач.

З базами даних, як правило, легко почати працювати, але їх важче підтримувати та правильно налаштовувати. Найкращий спосіб розпочати роботу над фоновим стеком - це мати все разом на одному сервері - код вашої програми, сервери зворотного проксі-сервера, базу даних тощо. Потім, коли ви стаєте більш досвідченим у кожній справі, ви можете відокремити його від існуючої бізнес-логіки.

Роблячи це, ви вмикаєте архітектуру, яка може бути масштабована. Інтенсивний додаток, що працює з базою даних, може мати оптимізоване рішення для баз даних. А веб-сайт з великим трафіком повинен мати хороший механізм CDN для розвантаження статичних активів тощо.

Висновок

Тут так багато чому навчитися, але це все можна досягти, якщо ти не здаєшся. Повідомте мене, що ви думаєте про цю публікацію через мої твіттери та Instagram . Для мене це буде багато значити, якщо ми зв’яжемось там!

Крім того, якщо ви зацікавлені, відвідайте codedamn - платформу, орієнтовану на розробників, для вивчення таких технологій, як розробка бекенда! Я навіть розмістив відео YT про закручування вашого власного простого веб-сервера за 2 хвилини! Перевірте це і дайте мені знати, що ви думаєте!

Мир!