Как создать backend для сайта
Перейти к содержимому

Как создать backend для сайта

  • автор:

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. В больших компаниях этим занимаются отдельные администраторы, но в небольших студиях бывает нужно хотя бы представлять, как это сделать.

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

«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *