1. Введение в бэкенд: архитектура клиент-сервер и отличия от фронтенда
Введение в бэкенд: архитектура клиент-сервер и отличия от фронтенда
Когда вы открываете любимое приложение для доставки еды, листаете ленту социальной сети или оплачиваете покупку в интернет-магазине, вы видите лишь верхушку айсберга. Красивые кнопки, анимации и удобные формы — это зона ответственности фронтенда. Но вся магия — обработка платежей, поиск ближайшего курьера, хранение истории ваших заказов — происходит там, куда у обычного пользователя нет доступа. Это и есть бэкенд.
В этой статье мы разберем, как устроена «подкапотная» часть веб-разработки, как сервер общается с клиентом и почему без бэкенда интернет был бы просто набором статичных картинок.
Что такое бэкенд?
Бэкенд (Backend) — это программно-аппаратная часть сервиса, отвечающая за функционирование его внутренней логики, работу с данными и взаимодействие с внешними системами. Это всё то, что скрыто от глаз пользователя, но заставляет приложение работать.
Согласно surf.ru, если сравнить приложение с рестораном, то:
* Фронтенд — это зал для гостей: интерьер, меню, сервировка столов. * Бэкенд — это кухня: повара, заготовки, плиты и процессы приготовления. * База данных — это холодильник с продуктами.
Посетитель (пользователь) не видит, как жарится стейк, он получает лишь готовый результат. Но если на кухне (бэкенде) произойдет сбой, даже самый красивый зал (фронтенд) станет бесполезным.
Архитектура клиент-сервер
Основа работы современного веба — это клиент-серверная архитектура. Это модель взаимодействия, где нагрузка распределяется между поставщиком ресурса (сервером) и заказчиком услуги (клиентом).
Основные участники
> Клиент-серверная архитектура — это архитектура, в которой задания или сетевая нагрузка распределены между клиентами и серверами. > > practicum.yandex.ru
Цикл Запрос-Ответ (Request-Response)
Взаимодействие происходит по строгому алгоритму, напоминающему диалог:
Этот обмен данными происходит посредством протокола HTTP (HyperText Transfer Protocol).
Бэкенд vs Фронтенд: ключевые отличия
Хотя обе стороны работают над одним продуктом, их задачи и инструменты кардинально различаются. По данным itcodik.com, фронтенд отвечает за то, как сайт выглядит и ощущается, а бэкенд — за то, как он работает.
| Характеристика | Фронтенд (Client-side) | Бэкенд (Server-side) | | :--- | :--- | :--- | | Где выполняется код | В браузере пользователя | На удаленном сервере | | Что видит пользователь | Интерфейс, анимацию, контент | Ничего (только результат работы) | | Основные задачи | Визуализация, UX/UI, адаптивность | Бизнес-логика, работа с БД, безопасность, API | | Хранение данных | Временное (cookies, local storage) | Постоянное и надежное (Базы данных) | | Типичный стек | HTML, CSS, JavaScript, React/Vue | Python, Java, Go, PHP, Node.js, SQL |
Роль бэкенда: Бизнес-логика и вычисления
Одна из главных задач сервера — выполнение бизнес-логики. Это правила, по которым работает приложение. Клиент не должен заниматься сложными расчетами или принимать критически важные решения (например, о списании денег), так как код на стороне клиента можно подделать.
Рассмотрим пример интернет-магазина. Когда вы оформляете заказ, сервер должен рассчитать итоговую стоимость с учетом налогов и скидок. Математически это можно представить следующей формулой:
где — итоговая сумма к оплате, — количество уникальных товаров в корзине, — цена -го товара, — количество единиц -го товара, — ставка налога (в десятичном виде, например, 0.2 для 20%), — сумма скидки.
Сервер выполняет этот расчет, проверяет актуальность цен в базе данных (чтобы пользователь не подменил цену в браузере) и возвращает клиенту только итоговое число .
Как данные передаются между клиентом и сервером
Раньше серверы часто отдавали готовые HTML-страницы. Сегодня, в эпоху мобильных приложений и сложных веб-сервисов, бэкенд чаще всего работает как API (Application Programming Interface). Он отдает «сырые» данные, а клиент сам решает, как их нарисовать.
Самый популярный формат обмена данными — JSON (JavaScript Object Notation). Это текстовый формат, понятный и человеку, и машине.
Пример ответа сервера на запрос «Показать профиль пользователя»:
Фронтенд получает этот текст и подставляет alex_dev в заголовок профиля, а 1500.50 — в виджет кошелька.
Компоненты бэкенда
Чтобы серверная часть работала, обычно требуются три ключевых элемента:
Согласно developer.mozilla.org, независимо от выбранного языка или фреймворка, серверный код всегда выполняет схожие задачи: принимает запрос, взаимодействует с базой данных и отправляет ответ.
Итоги
* Бэкенд — это скрытая часть приложения, отвечающая за логику, данные и безопасность. Она работает на сервере, а не в браузере пользователя. * Клиент-серверная архитектура разделяет роли: клиент запрашивает информацию, сервер ее обрабатывает и возвращает. * Безопасность и надежность — приоритет бэкенда. Критические вычисления (как в формуле расчета стоимости) всегда выполняются на сервере, чтобы избежать подделки данных. * Обмен данными чаще всего происходит в формате JSON, что позволяет одному бэкенду обслуживать и веб-сайт, и мобильное приложение.