Webdev

Backend / API

Backend и API

High-load сервисы, REST/GraphQL API, интеграции. Python, Go, FastAPI.

Быстрые отказоустойчивые сервисы на Go. Микросервисы, очереди, кэширование, мониторинг.

Стоимость

250 000 — 2 000 000 ₽

Сроки

1–4 месяца

Типовые задачи

Что реально попадает в работу

01

API для мобильного приложения

Ситуация. Есть продукт в App Store / Google Play, но бэкенд — legacy на PHP с хрупкими эндпоинтами, 3–4 секунды отклика на профиле пользователя.

Решение. Django + DRF с типизированными сериализаторами и пагинацией. Оптимизация N+1, select_related/prefetch_related, кэш тяжёлых ответов в Redis. Метрики, чтобы видеть p95/p99.

02

Интеграционный слой

Ситуация. Компания использует 1С, amoCRM, Битрикс24, SMS-шлюз, банк-клиент — данные синхронизируются руками раз в сутки, ошибки ловятся постфактум.

Решение. FastAPI-хаб с очередями в Celery и чёткими контрактами. Идемпотентность, ретраи, dead-letter queue, алерты в Telegram/Slack при сбоях. Логи и трассировки в Sentry.

03

Real-time и события

Ситуация. Нужны мгновенные уведомления, онлайн-статусы, кабинет с обновлением данных без перезагрузки — WebSocket/Server-Sent Events.

Решение. Django Channels или FastAPI + WebSocket. Redis pub/sub для фанаута, JWT для авторизации подключений. Для масштабирования — отдельный процесс на uvicorn за Nginx.

04

ETL и тяжёлые пайплайны

Ситуация. Данные приходят из нескольких источников, нужна ночная обработка и выгрузка отчётов. Cron-скрипты на проде ломаются, долго и молча.

Решение. Celery + Beat для расписания, отдельные воркеры для тяжёлых задач. Прогресс-трекинг, алерты на фейлы, хранение артефактов в S3. При большом объёме — переход на Airflow/Dagster.

Процесс

Как я веду проект от брифа до релиза

  1. 01

    Аудит и контракты

    Смотрю существующий код или техзадание, фиксирую сценарии и SLA. Пишу OpenAPI / GraphQL-схему как основу для согласования с фронтом.

    3–5 дней

  2. 02

    Архитектура и нагрузочная модель

    Схема данных, план кэшей, очереди, план индексов. Прикидываю ожидаемый RPS и p95, выбираю стек осознанно, а не по инерции.

    1 неделя

  3. 03

    Итеративная реализация

    Спринты по 2 недели, каждый заканчивается рабочим эндпоинтом с тестами (unit + integration) и замерами производительности. Staging с данными, приближенными к бою.

    1–3 месяца

  4. 04

    Интеграции и устойчивость

    Подключаем внешние системы, накрываем ретраями, идемпотентностью, circuit breaker. Прогоны на нагрузке, профилирование, оптимизация горячих путей.

    2–4 недели

  5. 05

    Деплой и сопровождение

    Деплой с zero-downtime (blue-green или rolling), мониторинг (Prometheus/Grafana + Sentry), runbook для инцидентов. 3 месяца гарантии на код.

    1 неделя + 3 месяца поддержки

Архитектура

Архитектура высоконагруженного backend

Горячие пути отделены от тяжёлых. Синхронные ответы приходят от API за миллисекунды, медленная работа уезжает в очередь и возвращается событиями. Кэш перед PostgreSQL ловит 70–90% повторяющихся запросов.

Клиентыweb · mobile · integrationsREST · GraphQL · WebSocketNginx / GatewayTLS · rate-limit · WAFмаршрутизацияAPI-сервисыDjango + DRFFastAPI (hot paths)Кэш и сессииRedisОчереди · ВоркерыCelery · Redis brokerPostgreSQL (primary)транзакции · JSONBиндексы под запросыPostgreSQL (replica)read-onlyотчёты · выгрузкиObservabilitySentry · PrometheusGrafana · алерты

Детали

Django и FastAPI одновременно — это не противоречие

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

FastAPI — для горячих эндпоинтов, где критичны латентность и async-IO: вебхуки, стриминг, интеграции с внешними API. Оба живут в одном приложении рядом: FastAPI импортирует Django-модели через ORM, разделяется только по процессам.

Почему Celery, а не «просто запустить скрипт»

Как только появляется «отправь email», «сгенерируй PDF» или «синхронизируй с 1С» — в запросе это делать нельзя: пользователь не должен ждать 4 секунды из-за SMTP-таймаута. Celery берёт задачу в очередь, воркер обрабатывает её асинхронно, запрос возвращается мгновенно.

Плюс: ретраи (три попытки с экспоненциальной задержкой), dead-letter queue для сбойных задач, прогресс и результаты в Redis. Cron-скрипт ничего из этого не даёт — он либо работает, либо молча умирает в 3 часа ночи.

Когда GraphQL, а когда REST

REST — когда клиент фиксированный (мобилка, партнёр по интеграции) и ответы стабильные. Простой, кэшируется через HTTP, понятен любому разработчику за 10 минут.

GraphQL — когда клиентов много и они запрашивают разные срезы данных. Дашборд тянет 40 полей, мобилка 5 — оба делают один запрос без over-fetching. Из минусов: сложнее кэш и rate-limiting, нужна дисциплина с N+1 (DataLoader обязателен).

Где разворачивается

Инфраструктура и хранение данных

Платформы

  • VPS (Hetzner, Selectel, Timeweb) — от 1 500 ₽/мес
  • AWS / GCP — managed PostgreSQL + autoscaling API
  • Яндекс.Облако — когда нужна российская юрисдикция и ФЗ-152
  • Kubernetes — при 5+ микросервисах и multi-env

Базы и хранилища

  • PostgreSQL 15+ — основное хранилище
  • Redis — кеш, сессии, брокер очередей
  • ClickHouse — логи событий и аналитика
  • S3 / MinIO — артефакты фоновых задач, медиа

Стек и платформу выбираем после замеров ожидаемой нагрузки. Overkill-инфраструктура на этапе запуска сжигает бюджет без пользы.

Вопросы и ответы

Что обычно спрашивают

Сколько стоит backend под проект?
Простой REST API для мобильного приложения — от 300 тыс. ₽ (1–2 месяца). Интеграционный слой с очередями и повторами — 700 тыс. — 1,5 млн ₽ (2–3 месяца). Высоконагруженный сервис с SLA и мониторингом — от 1,5 млн ₽ (3–5 месяцев).
Почему Python, а не Node.js или Go?
Python — лучший выбор для CRUD + интеграции + фоновая обработка благодаря зрелой экосистеме (Django, Celery, pandas, requests). Для горячих путей поднимаем FastAPI или отдельный Go-сервис. Я не религиозен насчёт языка — выбираю по задаче.
Что с нагрузочным тестированием?
Прогон через k6 или Locust на staging с продакшн-подобными данными. Замеряем p50/p95/p99 и RPS до и после оптимизаций. Результаты фиксируем в отчёте — есть объективное подтверждение, что SLA держится.
Как обеспечивается безопасность API?
JWT или OAuth2 для авторизации, rate-limiting на уровне Nginx, валидация входа через сериализаторы/Pydantic, защита от SQL-injection через ORM, HTTPS обязательно, секреты в переменных окружения. Для критичных систем — WAF и 2FA.
Делаете ли миграцию с существующего бэкенда?
Да — типичная задача. Пишем новое API рядом, параллелим трафик через feature flags или blue-green, постепенно переключаем эндпоинты. Старое отключаем, когда новое работает стабильно. Без даунтайма.
Как передаётся проект?
Репозиторий (GitHub/GitLab), документация по API (OpenAPI/GraphQL schema), runbook для инцидентов, доступы к инфраструктуре. Онбординг для твоей команды — 2–3 часа созвонов. После передачи остаюсь на 3 месяца по гарантии.

Обсудим задачу

Расскажи — отвечу за сутки

Заявка придёт с пометкой о странице — сразу буду понимать контекст запроса.

Отвечу в течение 24 часов.