О целях и задачах web-разработки

newbie

Опубликован:  2018-12-27T07:54:39.955387Z
Отредактирован:  2019-01-07T12:59:51.198962Z

Прежде чем приступить к детальному описанию процесса разработки небольшого web-приложения в начальной его стадии, хотелось бы своими словами и в простых образах раскрыть цели и задачи, которые решает программист - разработчик web-проекта. Это поможет понять, куда и как двигаться и развиваться начинающему разработчику, если он решил посвятить своё время удивительному миру World Wide Web и разработке приложений для этого мира.

Очень многие начинающие считают, что web-разработчик разрабатывает ("пишет") сайты. Посыл верен только отчасти, потому что сайт сети Интернет - это всего лишь доменное имя в сети за которым прячется IP-адрес работающего и отвечающего на запросы клиентов сервера. Сайт может состоять из одной единственной страницы, которую отдаёт web-сервер по запросу к определённому доменному имени. Простой пример сайта - auriz.net на снимке экрана ниже.

czUk6ll5v7.png

Доменное имя auriz.net ссылается на IP-адрес сервера, который на запрос браузера отдаёт одну единственную страницу, содержащую короткий текст и пару гиперссылок. В самом классическом определении auriz.net уже является сайтом сети. Проблема такого сайта заключается в его скудном содержании, однообразии и невозможности изменять его содержание при помощи только браузера.

Как наполнить Интернет сайт контентом, не прибегая при этом к услугам администратора сервера? Ответ на этот вопрос достаточно неоднозначен, и именно ответ на этот вопрос во многом определяет цели и задачи web-программиста, потому что web-программист разрабатывает программы, которые позволяют в автоматизированном режиме управлять работой того или иного Интернет-сайта и изменять его содержание прямо в браузере. Совокупность таких программ обычно называют web-приложением. Перед тем, как с головой погрузиться в web-разработку, стоит детально разобраться, из чего же может состоять такое приложение, и с помощью каких инструментов его разрабатывают.

Любое web-приложение, как было отмечено ранее, - это в сути клиент-серверное решение, в рамках которого клиент и сервер взаимодействуют друг с другом по сети, по протоколу HTTP. Отсюда я делаю вполне резонный вывод: web-программист должен знать положения протокола HTTP и отчётливо представлять его работу - первый важный компонент в стеке знаний и навыков web-разработчика.

Наличие клиента и сервера подразумевает, что web-приложение может иметь код, работающий на клиенте, и код, работающий на сервере. Обычно эти две составляющие называют клиентской частью (или front end) и серверной частью (или back end). Обе составляющие необходимо рассмотреть детально и по отдельности. Начнём с клиентской части web-приложения.

Клиентами WWW, как правило, являются Интернет браузеры, что, впрочем, необязательно. Что делает клиент, когда пользователь вводит в адресную строку URL-адрес сайта и нажимает клавишу enter? Клиент в этом случае отправляет HTTP-запрос на сервер и ожидает ответ сервера. Сервер, получив запрос клиента, обрабатывает его и формирует соответствующий запросу ответ. Ответ сервера по определению протокола HTTP заключает в себе несколько составляющих, и в том числе текст ответа. Когда клиент получает ответ сервера, текст ответа подвергается разбору, и в зависимости от содержания этого текста клиент тем или иным образом отображает в своём окне запрошенную страницу сайта. Значит, текст ответа сервера - это цель и средоточие внимания web-разработчика. Текст ответа web-сервера в общем случае может содержать следующие виды кода:

  • HTML - гипертекстовая разметка, определяющая функциональные элементы страницы сайта;
  • CSS - таблицы стилей, определяющие внешний вид и размещение функциональных элементов страницы сайта;
  • JavaScript - исполняемые сценарии, определяющие поведенческую модель и реакцию функциональных элементов страницы сайта на действия пользователя.

Отсюда я делаю ещё один важный вывод: работая над клиентской частью web-приложения, программист разрабатывает, отлаживает и тестирует код, содержащий HTML, CSS и JavaScript фрагменты, а все три диалекта в совокупности являются вторым важным компонентом в стеке знаний и навыков web-разработчика.

Поскольку web в целом и frontend в частности предполагают некоторое множество повторяющихся практически в каждом проекте типовых задач, на свет появились прикладные библиотеки, которые дают возможность не повторять каждый раз разработку кода для решения типовых прикладных задач. Эти библиотеки, как правило, пишутся наиболее продвинутыми web-разработчиками, имеют открытый код и свободную лицензию, в среде разработчиков их обычно называют фреймворками. Использование таких библиотек даёт возможность значительно сократить время и трудоёмкость разработки. Для frontend существует комплексный фреймворк Bootstrap. Кроме этого, имеется большой набор фреймворков JavaScript под разные задачи, один из наиболее популярных и широко используемых - jQuery. Отсюда вывод: работая над клиентской частью web-приложения, программист очень часто использует сторонние библиотеки (Bootstrap, jQuery, Vue.js etc.), умение пользоваться этими библиотеками является третьим важным компонентом в стеке знаний и навыков web-разработчика.

Теперь рассмотрим работу сервера и серверной части web-приложения. Что делает сервер, когда получает запрос клиента? В самом общем случае, если не особо углубляться в детали, можно сказать, что сервер решает две основные задачи:

  1. Получая HTTP-запрос от клиента, сервер обрабатывает переданные клиентом данные заданным образом, упорядочивает их по заданной форме и сохраняет в хранилище на своём носителе данных, по результату проделанных манипуляций формирует HTTP-ответ и отдаёт его клиенту;
  2. Получая HTTP-запрос от клиента, сервер фильтрует из хранилища на своём носителе запрошенные клиентом данные, преобразует эти данные в необходимую клиенту форму, на основе этих данных формирует HTTP-ответ и отдаёт его клиенту.

Каждая из этих задач при ближайшем рассмотрении содержит в себе целый комплекс проблем, которые web-разработчик самоотверженно решает в процессе разработки своего приложения. Как правило, для разработки серверной части используются диалекты высокого уровня, можно перечислить некоторые из наиболее популярных: PHP, Ruby, Perl, JavaScript, Python, Python3 etc. Кроме этого, на сервере не обойтись без специализированных решений для сбора и хранения данных, так называемых баз данных. Отсюда следующий важный вывод: при разработке серверной части web-приложения программисту потребуются навыки работы с одним из языков программирования высокого уровня и решением для сбора и хранения данных - базой данных, что в совокупности составляет четвёртый важный компонент в стеке знаний и навыков web-разработчика.

Разработка серверной части приложения тоже предполагает некоторое множество повторяющихся практически в каждом проекте типовых прикладных задач, и для их решения тоже существуют сторонние библиотеки, которые значительно сокращают время и трудоёмкость разработки. Следующий важный вывод: работая над серверной частью web-приложения, программист так или иначе будет использовать сторонние библиотеки для решения типовых задач, которые необходимо знать и уметь использовать - ещё один важный компонент в стеке знаний и навыков web-разработчика.

На первый взгляд все перечисленные инструменты и их количество выглядят устрашающе, и совершенно не понятно, как это разнообразие собрать воедино и заставить решать поставленные задачи. Но не всё так плохо. Обычно первый учебный проект, выполненный в пошаговом режиме и с необходимыми объяснениями, снимает большинство вопросов начинающих и расставляет все составляющие web-разработки в закономерную логическую цепочку. Поэтому в ближайших выпусках блога я намерен показать практический пример разработки небольшого web-приложения с использованием Python3 в качестве серверного диалекта и других интересных инструментов из описанного выше стека. И начну я с создания проекта. Продолжение следует...

Метки:  web, frontend, backend
Комментарии: