REST API из маленьких деплоябельных функций
Функция на срез поверхности — маршруты без обновления всего API целиком.
Нагрузка и где ломается
Тяжесть монолита
Большие приложения смешивают несвязанные маршруты — при сбое дольше понять, какой кусок кода виноват.
Масштабировать весь бинарник под одну горячую точку входа — лишняя память.
Где костыли не спасают
Распыление микросервисов
Слишком много репоз и пайплайнов тоже больно — нужна середина.
Как помогает Inquir
Функция на группу маршрутов
Группируйте маршруты, которые меняются вместе; критичные поверхности держите маленькими.
Аутентификацию по возможности на уровне API-Gateway.
Что получаете
Гигиена API
Rate limits
Защита общих зависимостей от злоупотреблений.
CORS
Явная конфигурация для браузерных клиентов.
Версионирование
Префиксы путей до ломающих изменений.
Что делать дальше
Как выставлять REST API из функций Inquir
Карта ресурсов
Существительные и единый формат ошибок.
Реализовать хендлеры
Валидация входа на границе.
Нагрузочный тест
Параллелизм по маршруту, не только суммарный RPS.
Пример кода
Помощник JSON-ошибок
Единые ошибки упрощают клиентские SDK.
export function jsonError(status, code, message) { return { statusCode: status, body: JSON.stringify({ error: { code, message } }) }; }
Когда подходит
Когда подходит
Когда это уместно
- Внутренние API
- Интеграции с партнёрами
- Поверхности B2B с несколькими клиентами
Когда лучше не трогать
- Монолит на фреймворке уже работает и команда совсем маленькая
FAQ
Вопросы и ответы
Можно ли поднять GraphQL на одной функции?
Да — одна функция может держать схему; лимиты API-Gateway и cold/warm start по-прежнему на вашей стороне.
Насколько дробить REST-функции?
Группируйте то, что деплоится и падает вместе; каждый путь отдельно — шум ops.
Где ключи API и JWT?
По возможности проверка на API-Gateway, чтобы хендлеры получали уже проверенный контекст.