API Gateway и BFF на собеседовании системного аналитика
Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.
Содержание:
Зачем спрашивают на собесе SA
API Gateway / BFF — стандартные паттерны микросервисной архитектуры. На собесе SA: «зачем gateway», «отличие BFF», «aggregation на gateway или клиенте».
API Gateway: что это
Единая точка входа для клиентов в микросервисную систему.
[Mobile]
[Web] ──→ [API Gateway] ──→ [User Service]
[Partner] ──→ [Order Service]
──→ [Payment Service]Функции:
- Routing. Куда направить запрос (
/users/*→ User Service). - Authentication. Проверка JWT / OAuth.
- Authorization. Application-level permissions (с RBAC).
- Rate limiting. Защита от abuse.
- Caching. Кеширование частых ответов.
- Logging / metrics. Централизованно.
- Request/response transformation. Адаптация форматов.
- Aggregation. Иногда — собрать ответ из нескольких сервисов.
Плюсы:
- Единая точка для cross-cutting concerns.
- Backends не знают про auth.
- Клиенты не знают про микросервисную внутрянку.
Минусы:
- Single point of failure (если без HA).
- Bottleneck производительности.
- Сложность синхронизации с backend changes.
BFF: Backend for Frontend
Отдельный backend под каждый тип клиента (Mobile, Web, Smart TV, Partner).
[Mobile] ──→ [Mobile BFF] ──→ [User Svc, Order Svc, ...]
[Web] ──→ [Web BFF] ──→ [User Svc, Order Svc, ...]
[Partner] ──→ [Partner API] ──→ [User Svc, Order Svc, ...]Функции:
- Aggregation (один BFF call → несколько backend calls).
- Адаптация формата под клиента (mobile хочет минимум данных).
- Client-specific business logic.
- UI-driven endpoints.
Плюсы:
- Каждый клиент получает свой optimized API.
- Mobile-команда контролирует Mobile BFF.
- Можно делать heavy aggregation без перегрузки общего gateway.
Минусы:
- Дублирование между BFF.
- Overhead на содержание нескольких BFF.
Различие
| API Gateway | BFF | |
|---|---|---|
| Цель | Один entry point | Один backend per клиент |
| Cross-cutting (auth, rate limit) | Да | Нет (или дублируется) |
| Aggregation | Иногда | Да |
| Client-specific logic | Минимально | Да |
| Tooling | Kong, Traefik, AWS API GW | Custom (Node.js, Go) |
| Команда владелец | Platform team | Frontend team |
Часто комбинируют:
Client → API Gateway (auth, rate limit) → BFF (aggregation, client-specific) → Backend servicesКогда что выбирать
API Gateway:
- Внешние API для клиентов (B2B / public).
- Много микросервисов с общими cross-cutting concerns.
- Любая микросервисная архитектура — gateway must-have.
BFF:
- Несколько типов клиентов с разными нуждами (mobile vs web).
- Backend сильно фрагментирован, frontend хочет один endpoint.
- Frontend-команда хочет владеть API contract'ом.
Только один нужен:
- Маленькая команда, один frontend → можно ограничиться API Gateway.
- Простая монолит / single backend → ничего не нужно.
Tools
Gateway:
- Kong — open source, plugin ecosystem.
- Traefik — k8s-native.
- NGINX — basic gateway.
- AWS API Gateway — managed.
- Apigee (Google) — enterprise.
- Tyk — open source / cloud.
BFF:
- Custom Node.js / Go / Python service.
- GraphQL Gateway (Apollo Server, Hasura).
Частые ошибки
Бизнес-логика на API Gateway. Gateway — техническая прослойка. Бизнес-правила в backend services.
Один BFF на всё. Нивелирует плюс. Каждый client → свой BFF.
Gateway без HA. SPOF. Минимум 2-3 instances + load balancer.
Перенесение auth логики в каждый сервис. Дубль работы. Auth — на gateway, services доверяют claim'ам.
Не лимитировать rate. DDoS / abuse. Rate limit на gateway — must.
Не кешировать. Простые GET-запросы повторяются — cache на gateway даёт х10 throughput.
Связанные темы
- Монолит vs микросервисы на собесе SA
- REST API на собесе SA
- OAuth 2.1 flows для SA
- Идемпотентность API для SA
- Подготовка к собесу системного аналитика
FAQ
Service Mesh vs API Gateway?
Service Mesh (Istio, Linkerd) — service-to-service communication внутри cluster (mTLS, retries, circuit breaker). Gateway — external-to-service. Часто оба вместе.
GraphQL заменяет BFF?
Может быть BFF (Apollo Federation). GraphQL endpoint умеет агрегировать backends.
Это официальная информация?
Нет. Статья основана на материалах microservices.io, Sam Newman «Building Microservices».
Тренируйте системный анализ — откройте тренажёр с 1500+ вопросами для собесов.