Краткое введение в web-разработку

Jazz

Опубликован:  2023-06-21T11:27:03.341920Z
Отредактирован:  2023-06-21T11:27:03.341920Z
Статус:  публичный
18
0
0

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


Web-разработка - занятие достаточно увлекательное и поглощающее всё свободное время увлекающегося, и в сути своей является дисциплиной комплексной и многоуровневой. Чтобы качественно и продуктивно заниматься web-разработкой даже на уровне хобби, придётся очень многому научиться, во многом разобраться и самостоятельно исследовать сразу несколько очень ёмких и вместительных сфер деятельности. Начнём с азов. Для начала попробуем ответить на вопрос, как устроен web, что там нужно разрабатывать, и с чего следует начать обучение.

Как устроен web

Все мы ходим в Интернет, посещаем различные сайты, но редко задумываемся, а что происходит с той стороны экрана нашего монитора, когда мы открываем браузер, вводим в его адресную строку адрес желанного сайта и нажимаем клавишу Enter на клавиатуре компьютера. А с той стороны экрана происходит очень много интересного.

Наш браузер, получив из своей адресной строки URL-адрес, находит в сети сервер, который обслуживает этот URL, и отправляет на этот сервер некоторый пакет данных. Web-разработчики в своём узком профессиональном кругу называют этот пакет данных запросом (английским словом request).

Сервер сети - это компьютер, на котором установлено соответствующее программное обеспечение, и который постоянно включен и 24/7 слушает сеть на определённом порту. Сервер может получать запросы одновременно от множества подключающихся к нему компьютеров обычных пользователей сети. Эти компьютеры отправляют запросы на сервер совершенно определённой программой, чаще всего это Интернет браузеры, но не обязательно. Программу, которая отправляет запрос на сервер, принято называть клиентом. Наш привычный браузер, например Chrome, или Opera - это web-клиент.

Сервер, получив запрос от клиента, обрабатывает его определённым образом, анализирует полученные в запросе данные, обрабатывает их, преобразует в соответствии с заданными его программным обеспечением алгоритмами и из полученных в результате такой обработки данных формирует ответ, а затем посылает этот ответ назад клиенту.

Запрос, который отправляет клиент, и ответ, который в результате обработки этого запроса возвращает клиенту сервер, представляют из себя определённым образом упорядоченный код, состоящий из нескольких ключевых элементов. Форма, состав и содержание запроса клиента и ответа сервера определяются соглашением, которое обычно называют протоколом. То есть, клиент (браузер) взаимодействует с сервером (установленной на сервере программой) по какому-то определённом протоколу. Для web протоколом взаимодействия клиента и сервера является HTTP-протокол.

Итак, мы выяснили первую важную деталь. Web - это взаимодействие клиента и сервера по протоколу HTTP. И первое, с чем нужно познакомиться при изучении web-разработки, - это HTTP-протокол.

Frontend

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

Контент в современном web - это всегда код, а Content-Type в заголовке ответа сервера указывает клиенту, как этот код интерпретировать и отображать. Этот код может быть html-страницей, файлом, объектом JSON, простым текстом и так далее. Для каждого случая браузер совершает заданные для этого типа данных действия.

Контент, а вернее код контента, который вернул клиенту сервер, и который клиент перед отображением на экран обрабатывает и в некоторых случаях исполняет, в узком кругу web-разработчиков называют клиентским кодом или фронтендом (анл. frontend). Про этот код обычно говорят, что он исполняется на стороне клиента.

Таким образом, мы выяснили вторую важную деталь. Чтобы качественно программировать web нужно детально и со всех сторон изучить браузер, тонкости его работы и инструменты, которыми он располагает. Аббревиатуры, которые вы вероятно уже слышали, а именно, HTML, CSS, JavaScript Client Side, во многом определяют работу браузера, и являются повседневными инструментами web-разработчика.

Backend

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

  1. На сервере установлена специальная программа, её назвают http-сервером, эта программа слушает заданный порт сети, воспринимает запросы клиентов, клиентов бывает много, и в зависимости от URL адреса, на который пришел запрос, транслирует этот запрос другой программе, которую обычно называют web-приложением.

  2. Web-приложение, получив запрос от http-сервера, определяет указанный в запросе URL адрес, обрабатывает параметры этого адреса, находит в своей карте URL адресов одну из своих подпрограмм, привязанную к данному адресу, и передаёт ей полученный от http-сервера запрос.

  3. Подпрограмма web-приложения обрабатывает полученный запрос, исполняет заложенные в неё web-программистом алгоритмы, собирает, фильтрует и обрабатывает данные из определённых в этих алгоритмах источников, преобразует эти данные, на их основе формирует ответ и отдаёт этот ответ обратно http-серверу. Не сложно догадаться, что одна из составляющих сгенерированного этой подпрограммой ответа - это код который будет обработан и исполнен уже на стороне клиента.

  4. Http-сервер транслирует полученные от web-приложения данные клиенту. Всё, взаимодействие клиента и сервера состоялось.

Самые популярные на сегодня http-сервера, это Nginx и Apache, большинство серверов современного Интернета использую одну из этих программ. Эти программы разрабатываются централизованно и поддерживаются своими сообществами.

Работающее на сервере web-приложение, обслуживающее конкретный сайт или сервис, обычно называют серверным кодом, или кодом, который исполняется на стороне сервера, или бэкэндом (англ. backend).

Таким образом, мы выяснили третью важную деталь. Чтобы качественно программировать web, необходимо качественно овладеть всеми использующимися на бэкэнде конкретного web-приложения инструментами.

Web-приложение

Фронтэнд и бэкэнд - это неотъемлемые составляющие web-приложения. При этом фронтэнд, хоть и исполняется на стороне клиента, формируется на стороне сервера и является составляющей ответа сервера. Разрабатывающих web-приложение программистов обычно называют web-разработчиками, а процесс - web-разработкой.

Поскольку у web-приложения есть бэкэнд и фронтэнд, web-программист может иметь одну из трёх специализаций:

  • frontend программист;

  • backend программист;

  • full-stack программист.

Не сложно догадаться, что первые разрабатывают клиентский код, вторые - серверный, а третьи умеют и клиентский, и серверный код.

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

Основу web-приложения может составлять код написанный на одном из следующих языков программирования: PHP, Ruby, Perl, Python, JavaScript, Java, Rust, С++ и даже C. Конкретное web-приложение, как правило, на бэкэнде использует один из перечисленных ЯП.

Кроме серверного языка программирования, бэкэнду обычно нужны средства для сбора, хранения, представления и интерпретации данных. Ну и естественно, чтобы качественно разрабатывать web, нужно владеть хотябы одним из перечисленных языков программирования и уметь обращаться с хранилищами данных (базами данных).

Web разработка как хобби

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

Тем не менее, многие молодые люди последнее время очень стремятся в web-разработку, движимые желанием быть востребованными и хорошо зарабатывать. Увы, они не знают, что такая мотивация не работает, и в большинстве случаев становятся добычей для разного рода продавцов различных IT-курсов и тренингов, которые обычно никак не приближают их к заветной цели.

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

Выводы и умозаключения

  1. Web - взаимодействие клиента и сервера по протоколу HTTP, а web-приложение - это программа, которая детально описывает такое взаимодействие для конкретного сервиса сети.

  2. Web-разработка - дисциплина комплексная и требует значительного объёма теоретических знаний и практических навыков разработки, отладки и тестирования программного кода, на качественное изучение web-разработки потребуется много времени и сил.

  3. Web-приложение заключает в себе две неотъемлемых составляющих: бэкэнд и фронтенд. Бэкэнд - это код исполняемый на стороне сервера, а фронтенд - на стороне клиента.

  4. Основой web-приложения является программный код, написанный на одном из языков программирования, наиболее часто бэкэнд современного web пишут на PHP, Python и JavaScript.

Метки:  web, server, browser, frontend, backend, http, selfish