Backend — серверная часть цифрового продукта: она принимает запросы, применяет правила, работает с данными и внешними сервисами, а затем возвращает результат. Пользователь обычно не видит этот процесс, но именно он стоит за отправкой формы, входом в аккаунт и оплатой заказа.

Как устроен путь от кнопки до результата

Веб-приложение обычно включает клиентскую часть (frontend) и серверную часть (backend). Frontend показывает интерфейс и отправляет запросы. Backend проверяет входные данные и права доступа, выполняет бизнес-логику, обращается к хранилищам или внешним системам и формирует ответ.

flowchart LR
    A["Пользователь"] --> B["Frontend"]
    B --> C["HTTP API"]
    C --> D["Backend"]
    D --> E["База данных"]
    D --> F["Внешние сервисы"]
    D --> G["Файловое хранилище"]

Аналогия: frontend похож на витрину магазина, а backend объединяет склад, кассу, учёт и обработку доставки. Покупатель видит витрину, хотя выполнение заказа требует нескольких внутренних процессов.

📌
Backend не обязан быть одним приложением на одном компьютере. Он может состоять из нескольких сервисов, функций, очередей и хранилищ, распределённых по управляемой облачной инфраструктуре.

Основные части backend

Серверное приложение и среда выполнения

Серверное приложение принимает запросы, а словом «сервер» часто называют и инфраструктуру, где оно выполняется. Код можно разместить на виртуальном сервере (VPS), в контейнере или в управляемой среде функций.

Например, приложение на Node.js может создать HTTP-сервер, получить объект запроса и сформировать ответ. Во время операций ввода-вывода оно может обращаться к сети, базе данных и файловой системе. Это описано в официальном введении в Node.js.

База данных и другие хранилища

Backend хранит пользователей, заказы, контент и настройки в системах, выбранных под структуру данных и характер нагрузки:

  • Реляционные базы (PostgreSQL, MySQL) организуют данные в таблицах и поддерживают связи между ними.
  • Документные базы (MongoDB) хранят записи как документы с гибкой структурой.
  • Хранилища «ключ — значение» (Redis) подходят для кеша, сессий и быстрых временных данных. Redis также может участвовать в реализации очередей, но очередь сообщений и база этого типа — разные архитектурные роли.
  • Объектные хранилища используют для файлов, изображений и резервных копий.

API для запросов между системами

API (Application Programming Interface, программный интерфейс) задаёт правила, по которым frontend или другой сервис обращается к backend.

Распространённые варианты:

  • REST использует HTTP-адреса, методы вроде GET, POST, PUT, PATCH и DELETE, а также коды состояния ответа.
  • GraphQL позволяет клиенту перечислить нужные поля в запросе. Спецификация определяет язык запросов, систему типов и правила выполнения, но не требует конкретного языка программирования, системы хранения или единственного HTTP-адреса для всех реализаций. Подробности приведены в спецификации GraphQL.

Webhook решает другую задачу: система отправляет HTTP-запрос получателю при наступлении события. Например, платёжный сервис может сообщить магазину об изменении статуса платежа. Подробнее: Webhook простыми словами.

Бизнес-логика

Бизнес-логика описывает правила продукта: как рассчитать цену со скидкой, кто может изменить заказ, когда отправить уведомление и при каких условиях сменить статус. Эти правила должны выполняться на доверенной серверной стороне, а не только в браузере пользователя.

Интеграции

Backend связывается с платёжными системами, CRM, почтовыми сервисами, мессенджерами и облачными хранилищами. Для исходящих действий он вызывает чужой API. Для входящих событий принимает webhook или сообщения из очереди.

Что происходит после действий пользователя

Действие пользователяВозможная работа backendПроверяемый результат
Нажал «Оплатить»Создал заказ, запросил платёжную сессию, принял и проверил уведомление платёжного сервисаСтатус заказа соответствует подтверждённому статусу платежа
Отправил формуПроверил поля, сохранил обращение, поставил уведомление и передачу в CRM в очередьОбращение получило идентификатор, а повторная отправка не создала нежелательные дубли
Открыл страницу блогаПолучил контент из CMS или базы данных и вернул данные либо готовый HTMLКлиент получил успешный HTTP-ответ и актуальную версию страницы
Загрузил файлПроверил тип и размер, сохранил объект, записал метаданныеФайл доступен только пользователям с нужными правами
Вошёл в аккаунтПроверил пароль по защищённому хешу, применил ограничения входа, создал сессию или подписанный токен доступаЗащищённый запрос проходит с действующими учётными данными и отклоняется без них

Эталонный шаблон обработки запроса

Конкретная реализация зависит от стека, но надёжный обработчик обычно проходит одну и ту же последовательность:

  1. Принимает запрос и присваивает ему идентификатор для трассировки.
  2. Проверяет формат, размер и обязательные поля входных данных.
  3. Устанавливает личность пользователя и проверяет его полномочия.
  4. Выполняет бизнес-правило и фиксирует изменение данных.
  5. Передаёт долгие или фоновые операции в очередь, если их не нужно завершать до ответа.
  6. Возвращает понятный HTTP-код и минимально необходимый результат.
  7. Записывает технические события без паролей, токенов и лишних персональных данных.

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

Backend в автоматизациях

Backend используется и без пользовательского сайта. Процесс может запускаться по расписанию, входящему событию или сообщению из очереди. Примеры:

  • агент обрабатывает новые записи в контентной базе;
  • сценарий ежедневно собирает аналитику;
  • бот принимает заявки и передаёт их в CRM;
  • обработчик webhook запускает следующий этап процесса.

Low-code-платформа тоже выполняет серверную работу, хотя управление вынесено в визуальный редактор. В Make, например, сценарий описан как последовательность модулей, передающих и преобразующих данные между приложениями; базовая модель показана в официальном руководстве Make.

Когда подходят функции и low-code

Управляемые функции удобны для HTTP-обработчиков, API-маршрутов и webhook. По документации Vercel Functions, платформа запускает функцию для входящего запроса, автоматически масштабирует число активных экземпляров и может уменьшать его до нуля при отсутствии трафика.

⚖️
Отсутствие управления сервером не означает отсутствия ограничений. До выбора платформы проверьте время процессора, память, длительность выполнения, размеры запросов, число внешних обращений, модель масштабирования и стоимость.

Нагрузка сама по себе не задаёт универсальную границу между low-code, функциями и собственным сервером. Возможности зависят от тарифа, характера вычислений и лимитов конкретной платформы. Например, на странице лимитов Cloudflare Workers по состоянию на 8 сентября 2026 года отдельно указаны число запросов, процессорное время, память, длительность и число подзапросов. Эти параметры нужно оценивать отдельно, а не по одному порогу «запросов в минуту».

Low-code обычно удобен, когда:

  • процесс можно выразить доступными триггерами и модулями;
  • объём операций укладывается в лимиты и бюджет;
  • допустимы возможности платформы по обработке ошибок и наблюдаемости;
  • готовые коннекторы поддерживают нужную авторизацию и данные.

Кастомный backend становится оправданным, когда требуется сложная доменная логика, особый протокол, строгий контроль доступа, предсказуемая обработка больших объёмов или архитектура, которую выбранная платформа не поддерживает.

Практичный путь: сначала опишите требования и измеримые ограничения. Затем выберите самый простой вариант, который их выполняет, и заранее определите признаки будущей миграции.

Чеклист быстрой проверки backend

Понятно, какие операции выполняет frontend, а какие доверены backend
Для каждого запроса определены допустимые входные данные и HTTP-ответы
Известно, где хранятся основные данные, файлы и резервные копии
Аутентификация и авторизация проверяются раздельно
Секреты не находятся в клиентском коде и журналах
Повторный запрос не создаёт нежелательные дубли
Ошибки внешних сервисов обрабатываются с ограниченными повторами
Долгие операции вынесены из синхронного ответа, где это необходимо
Логи содержат идентификатор запроса, а мониторинг отслеживает ошибки и задержки
Лимиты инфраструктуры проверены по актуальной документации
Восстановление из резервной копии проверяется, а не только декларируется
Граница между low-code и кастомным кодом основана на требованиях и измерениях

Источники


Следующий шаг

Если вы выбираете между low-code, управляемыми функциями и кастомным backend, полезно обсудить требования, ограничения и стоимость перехода заранее.

Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov