Переход от написания скриптов (то что мы делали ранее) к созданию полноценных сайтов, сопровождается необходимостью знакомиться с большим числом понятий и инструментов выходящих далеко за рамки языка. Взаимодействие с внешним миром вовлекает в себя знание операционных систем, в частности сетей, работу с регистраторами, хостингом, деплоем сайта. На собеседованиях веб-программистов часто задают вопрос "Что происходит после того как в адресной строке браузера набирается сайт www.google.com и нажимается enter?". Очень подробный ответ на этот вопрос доступен здесь. Спрашивающий в этот момент хочет услышать от вас ключевые понятия, связанные с веб-разработкой.

  1. Выполнение DNS-запроса для получения IP-адреса домена.
  2. Соединение с веб-сервером, находящемся по этому адресу на порту 443 (или 80) по TCP.
  3. Выполнение HTTP-запроса для получения содержимого сайта по указанному домену.
  4. Получение ответа и рендеринг содержимого во вкладке браузера.

Каждый из этих пунктов неявно подразумевает знание следующих тем:

  • Протокол HTTP. Понятие виртуальных хостов. Желательно понимание принципов работы HTTPS.
  • Принципы работы DNS.
  • Знание TCP/IP. Понятия: порт, маска, подсети. Модель OSI. Сетевые сокеты.
  • Веб-сервер. Что это такое, как работает и зачем нужен.

На Хекслете есть ответы на некоторые из этих вопросов, но большую часть материала придётся почерпнуть из сторонних источников (со временем мы будем добавлять его к себе например на https://guides.hexlet.io). Подавляющее большинство ответов на указанные темы можно (и нужно!) получить в книгах по операционным системам. В наших рекомендованных книгах есть все необходимое. Знание HTTP можно почерпнуть из соответствующего курса. Общее понимание DNS, хостинга, деплоя из курса Введение в веб-разработку. Остальное есть в дополнительных ссылках.

Очень рекомендую посмотреть наше публичное собеседование, где как раз поднимались эти вопросы.

Если говорить про саму разработку, то здесь также открывается целый пласт неизведанного. Фреймворки, микрофреймворки, роутинг, куки, сессии, безопасность, шаблонизация, взаимодействие с базой данных и многое другое. И даже когда вы научитесь готовить сайт, это ещё не конец. Сайт доступен пользователям только находясь на удалённом сервере, а значит в разработку включается понятие "деплой", то есть процесс разворачивания сайта на хостинге. Причём чтобы сайт развернуть, для начала нужно настроить удалённую машину (или машины) используя инструмент наподобие Ansible. Кстати сам хостинг бывает очень разный: IaaS (AWS), PaaS (Heroku), Shared Hosting (виртуальный хостинг), VPS/VDS.

Данный курс посвящён в первую очередь разработке сайтов с использованием микрофреймворков и темы указанные выше включает в себя лишь поверхностно (и то не все). Поэтому крайне рекомендуется выполнять задачи не только в среде Хекслета, но и локально, паралелльно выкатывая код на сервис подобный https://www.heroku.com/


Дополнительные материалы

  1. Что такое протокол HTTPS, и как он защищает вас в интернете
  2. Как работает DNS
  3. Что такое веб-сервер?
Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →