Backend разработка — Введение в веб-разработку
Статические сайты, как правило, используются на сайтах визитках либо для документации. Для чего-то более серьезного уже нужен динамический сайт.
Что его характеризует?
Данные отделены от логики работы сайта и находятся в хранилище. Например, если на сайте есть раздел со статьями, то для вывода статьи существует ровно один обработчик (код, который отвечает за этот вывод), а данные при этом зависят от ссылки, по которой открыта статья. То есть в динамических сайтах однотипные страницы генерируются из одного места с подстановкой разных данных. В случае статического сайта, каждая ссылка была бы представлена физическим файлом с вбитым в него контентом.
- # Пример шаблона для генерации топика на хекслете (haml + ruby) .card .card-header %div = link_to user_path(@topic.creator.username), class: 'no-color' do %b= @topic.creator .card-block %div .hexlet-topic-content.hexlet-content-container %p= markdown2html(@topic.title) .mt-4 - @topic.comments.each do |comment| %div %hr.mb-3.hexlet-dashed .row .col-md-10 %b= comment.creator %div .hexlet-topic-content.hexlet-content-container %p= markdown2html(comment.body)
При создании сайта обычно делают специальный административный интерфейс, через который можно модифицировать эти данные. А операции по манипулированию сущностями называют CRUD — Create, Read, Update и Delete. Другими словами, для управления статьями в админке (жаргон) есть соответствующий круд. Кстати, распространено мнение, что большинство веб-разработчиков занимается, по большей части, созданием крудов.
Самыми распространенными решениями для хранения данных являются реляционные базы данных, такие как MySQL и PostgreSQL. Их использование подразумевает знание SQL — языка, который позволяет манипулировать этими данными внутри базы данных и получать их наружу.
-- Пример sql запроса SELECT id, name from 'users' where state = "active" ORDER BY id DESC LIMIT 20;
Для описания логики сайта и генерации HTML используется один из серверных языков программирования. Теоретически, для создания сайтов можно использовать почти любой язык, но так сложилось, что только некоторые из них популярны для веба:
- PHP
- JavaScript (и его производные Elm, TypeScript, ClojureScript)
- Ruby
- Python
- Erlang/Elixir
- Go
- Clojure
- Java/Kotlin/Scala
- C#
И хотя перечисленные выше языки могут сильно отличаться друг от друга, принципы, по которым строятся веб-приложения в них, совпадают.
Еще раз подчеркну то, что выполнение кода происходит только на сервере и скрыто от глаз пользователей. Все, что видно из браузера — это HTML документ, пришедший от сервера.
Ниже я попробую классифицировать способы разработки веб-приложений:
Конструкторы
Несмотря на то, что этот способ не требует программирования, его нельзя не упомянуть. На рынке представлены десятки конструкторов для создания сайтов без программирования, особенно популярны такие решения в e-commerce (интернет-магазины). Например, ecwid или setup.ru .
CMS
Content Management System — это программное решение, которое позволяет собрать сайт из уже готовых блоков. Расширяется такая система только с помощью плагинов, которых довольно много у популярных систем. В случае необходимости можно создать свой плагин. Некоторые из подобных систем платные, другие бесплатные. Например, WordPress относится к бесплатным, при этом является одной из самых качественных и популярных CMS в мире.
Такие системы особенно распространены в среде PHP. Существуют даже рейтинги , по которым можно ориентироваться. Этот рейтинг создан в первую очередь для бизнесменов, но его также полезно посмотреть для того, чтобы примерно оценить состояние дел на рынке.
Хотя использование CMS выглядит очень заманчивым, но так же, как и shared хостинг, для любой, более менее сложной системы, CMS будет больше мешать, чем помогать. Чаще их используют для типовых решений, например, каталога продуктов или сайта о компании. Системы, аналогичные booking.com или Яндекс невозможно построить на базе CMS.
Фреймворки
Основной способ разработки, используемый профессиональными разработчиками. Фреймворк — это каркас, который создан для программистов. Он предоставляет готовые решения для типичных задач веб-разработки, например маршрутизацию, интеграцию с хранилищем, шаблонизацию и многое другое. Фреймворки не навязывают конкретную структуру базы данных (в отличие от CMS), более того, они вообще не требуют её наличия. С другой стороны, у хороших фреймворков такое количество дополнений, что сайт с не самой простой логикой и возможностями можно запрограммировать (почти собрать) за очень короткий срок.
Фреймворк, который больше других повлиял на мир веб-разработки, называется Ruby on Rails. Другой Ruby-фреймворк, Sinatra, стал основателем направления микрофреймворков, которые теперь водятся в большом количестве в любом языке программирования. Они все похожи как братья близнецы, знаете принципы работы одного — легко сможете ориентироваться в остальных, даже на других языках.
# app.rb require 'sinatra' # get это функция соответствующая глаголу GET протокола HTTP get '/frank-says' do 'Put this in your pipe & smoke it!' end
== Sinatra (v1.4.8) has taken the stage on 4567 for development with backup from WEBrick curl http://localhost:4567/frank-says Put this in your pipe & smoke it!
Чистый язык (cамописное решение)
Такое встречается разве что в PHP. На самом деле нет ни одной причины (кроме отсутствия квалификации), по которой стоит выбирать разрабатывание сайта без использования, как минимум, фреймворков. А любой разговор о производительности должен начинаться только после прочтения optimization.guide .
Веб-сервер
Какой бы способ разработки вы ни выбрали, есть один элемент, без которого обойтись нельзя: веб-сервер. Веб-сервером называется специальная программа, которая принимает входящие http(s)-запросы, например, из браузера, запускает ваш код на выполнение и возвращает сформированный ответ. Веб-сервер может возвращать не только HTML-страницы, но также и другие ресурсы, такие как архивы, рисунки, видео. Одним из самых популярных решений на сегодняшний день является nginx .
Понимание работы веб-серверов крайне важно для любого веб-разработчика, оно включает в себя знание операционных систем, сетей и протоколов.
Сервисы
Backend разработка не ограничивается только самим сайтом. Сайт — это всего лишь вершина айсберга. Любой более-менее серьезный проект под капотом представляет собой множество подсистем (говорят, «сервисы» или «микросервисы»). Возьмите, к примеру, сайт booking.com , мировой лидер по бронированию отелей. Посмотрите на него внимательно, пройдитесь по ссылкам и попробуйте прикинуть, сколько программистов работает внутри. Думаю, что цифра вас удивит: программистов в Букинге больше 800. Отдельная команда занимается подсистемой нотификаций (email’ы, факсы), другая — биллингом, третья разрабатывает Backend для мобильного приложения, четвертая, собственно, мобильное приложение. И, скорее всего, мобильных команд несколько — каждая под свою платформу.
Как правило, в подобных проектах используются самые разные технологии. Часть внутренних команд не имеет никакого отношения к вебу, хотя весь продукт представляет собой в первую очередь веб-сайт.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Как работает backend?
Вообщем, есть желание создать собственный сайт.
С frontend вроде как разобрался, даже что-то наверстал.
И дальше никак не могу врубиться, знаю что пользователь посылает запрос, а сервер отвечает на него,
но как это связано с хостингами и яп?
Как я понимаю надо написать приложение, которое постоянно работает на арендованном сервере, и обрабатывает запросы.
Никак немогу найти обучающий материал к этому всему, потому что даже незнаю с чего начать и что искать.
- Вопрос задан более трёх лет назад
- 5372 просмотра
Комментировать
Решения вопроса 1
fullstack html developer
Можете начать с этого обучающего материала php.net/manual/ru/index.php
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Ответы на вопрос 4
V Sh. @JuniorNoobie
Сижу в поддержке, пишу мелкие проекты
Если очень вкратце, то:
1) Собственно, сервер (свой или выделенный, физический или виртуальный). Вы на нем царь и Бог. Сами ставите удобную для вас ОС (Linux, Windows Server или что-то еще). Сами разворачиваете службу (IIS, Apache и пр.), которая будет отвечать на запросы пользователей(обычно по портам 80/443 http/https, если речь о WEB’е) . Если у вас одиночный сервер, то запиливаете сюда же и базу данных по своему вкусу. Конфигурируете это все, настраиваете брандмауэр и еще всякую фигню. Когда сервер работает — вы публикуете свои сайты/приложения в папки (физические и виртуальные) службы (IIS, Apache).
2) Хостинги. То же самое, что и пункт 1: только всю работу по настройке (выбор платформы, БД и пр.) берет на себя провайдер, а вам предоставляет доступ (обычно через WEB-интерфейс, FTP и SSH) ТОЛЬКО на закрепленную за вами папку в службе (IIS, Apache) и ТОЛЬКО к вашей схеме/каталогу БД.
Это что касается размещения вашего приложения. Сама же работа довольно таки простая: Браузер шлет запрос серверу (для простоты рассмотрим GET HTTP по порту 80). Сервер принимает запрос через службу, которая денно и нощно прослушивает требуемый порт на наличие запросов. Получив запрос, служба парсит его, выделяет из заголовков нужную информацию (тип, кому предназначена, зачем вообще нужна) и перенаправляет далее. Уже зная какое приложение/сайт нужно запросу, запускается выполнение. В IIS, например, для этого используют так называемые Application Pools — выделенные мощности на сервере (обычно, память), внутри которых крутятся приложения/сайты и если сайт/приложение крашится, то кладет оно не всю службу IIS, а лишь свой пул. Ну и между пулами нельзя общаться — типа защита и все такое. Наконец-таки запрос доходит до самого сайта/приложения, где обрабатывается по логике, заложенной программистом.
По пути, естественно, может случаться всякое: не найдена страница — возвращаем 404, не авторизован пользователь (а в настройках службы/пула/приложения стоит, что неавторизованных шлем подальше) -401 ошибка и пр.
Backend-разработка на примере создания сайтов
Сложный высоконагруженный ресурс или простой сайт невозможно создать без бэкенд-разработки. Услуги специалистов бэкенд-разработки требуются для воплощения любой идеи цифрового продукта. За каждым интерфейсом стоит серверная часть, и именно за нее отвечает backend. О технологии и ее применении можно прочитать подробнее по ссылке.
В статье объясняем принцип работы веб-ресурсов и разбираем инструменты backend-разработки.
Как взаимодействует сайт с серверной частью
Сайт, на котором пользователь может взаимодействовать с системой, содержит в себе две части: клиентскую и серверную.
Все, что отражено в браузере на странице — это frontend. Пользовательская часть отвечает за то, чтобы посетитель легко ориентировался на сайте и смог достигнуть цели: оформить заявку, совершить покупку или выполнить другую операцию.
Когда посетитель совершает какие-либо действия на сайте, бэкенду отправляет запрос на сервер. При получении запроса сервер обрабатывает информацию и формирует ответ. Данные передаются системе и пользователей видит на экране результат своих действий. Бэкенд-разработка отвечает за эту часть работы системы.
Он скрыт от пользователей, но на нем лежит много задач: работоспособность и правильное функционирование ресурса, а также логика сайта. Доступ к бэкенду закрыт для посетителей: управлять им могут разработчики и администраторы портала.
Чтобы сайт правильно функционировал, фронтенд и бэкенд должны слаженно работать. Этим и занимается backend-разработка.
Бэкенд-разработка: инструменты создания
Специалистам по backend-разработке нужно знать хотя бы один язык программирования. Обычно для этих целей выбирают универсальный PHP — он лучше всего подходит для создания сайтов. Еще, чтобы работать с серверной частью, нужно уметь пользоваться базами данных.
Ниже приведен список инструментов, из которых может состоять стек для бэкенд-разработки:
- Языки программирования: PHP, Java, C#, JavaScript, Python, Go.
- Фреймворки: .NET, Lavarel, Django, Flask, ExpressJS и Ruby on Rails.
- Системы управления базами данных: PostgreSQL, MySQL
Бэкенд — это залог безопасного и производительного портала. Пользователи быстро закроют вкладку с сайтом, который будет медленно или нелогично работать. Перед созданием программного продукта важно проанализировать задачи и подобрать оптимальные технологии для проекта. Чтобы выбрать разработчика, который создаст качественное программное обеспечение, важно изучить кейсы на сайте компании, найти эти продукты и протестировать их работу.
Реклама
Рекламодатель: yusmpgroup.ru
Бэкендер. Гайд по профессии
Веб-разработка, если упростить, состоит из двух частей — фронтенда и бэкенда. Фронтенд — видимая пользователю часть сайта, картинки, тексты и кнопки. Бэкенд — код, который работает на серверах и обрабатывает запросы пользователей после нажатия на эти кнопки.
То есть фронтендеры пишут код, который работает в браузере у пользователя, а бэкендеры — тот, что выполняется на серверах. И если про фронтенд более-менее понятно: он оживляет интерфейсы, добавляет анимации и всю другую красоту, то давайте разбираться, зачем вообще нужен серверный код.
Что такое бэкенд
Серверного кода не видно — это самое главное, что нужно понять. Если фронтендер может положить в портфолио сайт и будет виден результат его работы, то результат работы бэкендера в том, что сайт вообще работает и откликается на запросы.
Серверный код выполняет основную работу — даёт пользователям ту информацию, за которой пришли и попросили. Чаще всего бэкендеры пишут код, который связывает фронтенд и базу данных.
Фронтенд — это продавец-консультант в Икее, к которому вы пришли и попросили шкаф, а бэкенд — кладовщик, который принесёт ваш шкаф со склада.
Взять даже эту статью: откуда сайт знает, какого числа была опубликована эта статья, сколько у неё просмотров, какие заголовки и откуда брать картинки? Вся эта информация хранится на сервере. Бэкенд-разработчики Академии сделали так, чтобы всю эту информацию можно было сохранить и получить в нужный момент, а фронтендеры — чтобы вы увидели эту страницу такой, как я задумал.
Что делает бэкендер
Если совсем коротко: пишет серверный код, работает с базами данных, пишет API, создаёт библиотеки. Работает с компонентами системы, у которых нет интерфейсов.
Решает задачи. И чем лучше он это делает, тем больше его зарплата и ценность для компании. Код — только один из способов решения. В этом разработчику помогают язык программирования, веб-стандарты, шаблоны проектирования и лучшие практики, наработанные годами опыта других программистов.
Пишет код. Это основная задача бэкенд-разработчика, которая занимает больше всего рабочего времени. При этом есть достаточно большой выбор, на каком языке писать. Например, Python — очень лёгкий для освоения, а PHP — самый популярный серверный язык. Можно писать бэкенд даже на JavaScript в связке с Node.js, Perl или Ruby. Но это не самый простой путь.
Код, чаще всего, обрабатывает разные запросы. Звучит скучно, но запросов может быть тьма.
- На загрузку динамического и статического контента. Любая страница любого сайта — как раз такой контент. Вот эта, например, динамическая, потому что все тексты и картинки хранятся в базе данных, и страница собирается «на лету» с помощью языка PHP.
- На хранение информации в базе данных. Например, сохранить комментарий, отправленный пользователем, или результат в онлайн-игре.
- На получение информации из базы. Например, загрузить комментарии под постом или подтянуть картинку в статью.
- На удаление информации. Например, удалить комментарий.
- На проведение сложных действий с хранимой информацией. Например, обработать комментарий перед сохранением и удалить из него нецензурщину. Или одним запросом исправить во всех оставленных комментариях слово «Цветочек» на «Ириска».
Что нужно знать бэкенд-разработчику
Новичку нужны не все эти знания и навыки, но чем больше вы знаете, тем больше шансы найти хорошую работу.
Программирование. Нужно знать синтаксис языка и основные конструкции, понимать логику работы. Знать, как применять шаблоны проектирования, алгоритмы и структуры данных.
Базы данных. Как писать запросы и организовывать базы в MySQL, Postgres или NoSQL. Ну или в других системах управления базами данных — тут зависит от конкретной компании. Важно знать, что основные принципы всё равно похожи.
Как работает веб. Два самых важных слова — HTTP и HTTPS.
Веб-серверы. Как настроить Apache или Nginx.
API. Как устроены JSON, REST и XML и как с их помощью эффективнее передавать информацию.
Аутентификация. Как организовать сессии, хранить куки, заводить токены и ключи. Как работает Oauth.
Безопасность. Как избежать CSRF, XSS, SQL-инъекций.
Масштабирование. Как устроены асинхронные запросы и кэширование.
Серверное администрирование. Как настроить Windows, Linux, Mac OS. В больших компаниях этим занимаются отдельные администраторы, но в небольших студиях бывает нужно хотя бы представлять, как это сделать.
Бэкенд — большая и интересная часть веба, которую не видно снаружи, потому что всё внимание пользователей приковано к фронтенду — красивым интерфейсам, анимациям и современной вёрстке. Но работа бэкендеров важная, сложная и интересная, за это так много людей выбирают именно это направление, а не фронтенд.
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.