Backend vs frontend
Тема дорожной карты · Backend разработчик
Разграничение бэкенда и фронтенда — фундаментальное различие в веб-разработке между серверным кодом, обрабатывающим данные и реализующим бизнес-логику, и клиентским кодом, отображающим пользовательский интерфейс и управляющим взаимодействием с пользователем. Фронтенд выполняется в браузере, строится на HTML, CSS и JavaScript-фреймворках вроде React, Vue или Angular и взаимодействует с бэкендом через REST API, GraphQL-запросы или WebSocket-соединения. Бэкенд выполняется на сервере (или в serverless-функции) и отвечает за аутентификацию (JWT, OAuth 2.0, сессионные куки), бизнес-логику, хранение данных в PostgreSQL, MySQL или SQLite, кеширование через Redis и асинхронную обработку посредством очередей сообщений Kafka или RabbitMQ. Бэкенд-разработчики работают с языками и средами исполнения Node.js (Express.js, Fastify), Python (Django, FastAPI), Java (Spring Boot), Go (gin, echo) или Rust, разворачивая сервисы в Docker-контейнерах под управлением Kubernetes с CI/CD-пайплайнами, автоматизирующими сборку, тестирование и выпуск. Понимание границы бэкенда и фронтенда необходимо для проектирования чистых API по спецификациям OpenAPI, корректной настройки CORS-заголовков и выбора правильного места для валидации, авторизации и ограничения частоты запросов.
Как это работает
Backend vs frontend строится на client-server модели: backend экспонирует API (HTTP, gRPC, GraphQL или message-based), который зовут клиенты. Сервер — это процесс на хосте, слушающий порт, принимающий соединения, гоняющий бизнес-логику и читающий/пишущий хранилище. Современные backend'ы — stateless процессы; состояние живёт в БД, кешах, object storage; это позволяет масштабироваться горизонтально, добавляя реплики за балансировщиком. 12-Factor App — канонический baseline для cloud-native backend.
Когда применять
Стройте backend, когда нужно общее состояние между клиентами (multi-user приложения, persistence), границы доверия (нельзя слать секреты в клиент) или тяжёлый compute, который клиент не потянет. Пропустите backend для чистых статичных сайтов (Astro, Hugo, plain HTML) — CDN достаточно. Для realtime multi-user фич (чат, коллаборация) — стек с WebSocket / SSE (Node, Elixir, Go, Phoenix).
Типичные ошибки
Ловушки Backend vs frontend: "backend" внутри frontend (чувствительная логика в клиентском JS — видна в DevTools); over-engineering с первого дня (микросервисы для приложения на 100 юзеров); игнор 12-Factor (захардкоженный конфиг, состояние на ФС, нет graceful shutdown) — потом платите при контейнеризации; выбор стека по тренду, а не по сильным сторонам команды. Начинайте монолитом с чёткими границами модулей; разделяйте при необходимости.