~/VibeHandbook

Инфраструктура

aws.amazon.com

Serverless

Что это

Serverless означает, что вы пишете отдельные функции, а облачный провайдер запускает их только тогда, когда что-то их вызывает — HTTP-запрос, загрузка файла, запланированный таймер. Серверы под капотом всё равно есть, но вы их никогда не видите и не управляете ими. Вы платите только за время, которое ваш код действительно работает, часто с точностью до миллисекунды.

Сильные стороны

  • Нет серверов, которые нужно выделять, патчить или поддерживать запущенными.
  • Автоматически масштабируется от нуля до тысяч одновременных запусков.
  • Оплата по факту использования; простаивающий код ничего не стоит.
  • Чисто интегрируется с облачными событиями (очереди, хранилище, базы данных).
  • Хорошо подходит для всплесковой или непредсказуемой нагрузки.

Компромиссы

  • Холодный старт: функция, которая давно не запускалась, может потребовать дополнительного времени на пробуждение.
  • Ограничения времени выполнения (часто несколько минут) исключают долгие задачи.
  • Затраты могут удивить при очень высоком, постоянном объёме по сравнению с обычным сервером.
  • Локальное тестирование и отладка сложнее, чем у обычного приложения.
  • Привязка к вендору — модель событий и API у каждого провайдера различаются.

Когда использовать

Выбирайте serverless для API, вебхуков, запланированных задач и событийно-ориентированных задач, где нагрузка неравномерна и вы предпочли бы не нянчиться с инфраструктурой. Он блестяще подходит для связующего кода между облачными сервисами.

Подходит для vibe coding

Serverless хорошо сочетается с разработкой под управлением ИИ, потому что единица работы — это одна самодостаточная функция, которую агенту легко сгенерировать, протестировать и развернуть. Фреймворки вроде AWS SAM, Serverless Framework и Vercel позволяют ИИ задать функцию, её триггер и права в одном конфигурационном файле. Совет: попросите агента явно задать разумный тайм-аут и размер памяти, а также свести зависимости к минимуму — меньше пакетов означает меньшие бандлы и более быстрые холодные старты.

# serverless.yml — функция AWS Lambda
service: my-api
provider:
  name: aws
  runtime: nodejs20.x
  timeout: 10
functions:
  hello:
    handler: handler.hello
    events:
      - httpApi:
          path: /hello
          method: get
# Развернуть стек
npx serverless deploy