advanced

Cloud Functions

Event-driven функции с managed triggers, короткими окнами выполнения, IAM, cold start и версиями деплоя.

Cloud Functions — короткие event-driven обработчики на Node.js по HTTP, Pub/Sub, Cloud Storage или Firestore. Gen 2 опирается на Cloud Run: есть concurrency и более длинные таймауты при модели деплоя «функция».

					import functions from '@google-cloud/functions-framework';

functions.http('webhook', async (req, res) => {
  const eventId = req.get('x-event-id');
  if (!eventId) {
    res.status(400).send('missing event id');
    return;
  }
  await processWebhook(req.body, { eventId });
  res.status(204).send();
});
				

| Триггер | Типичный кейс FullStack | |---------|-------------------------| | HTTP | Webhook'и и лёгкие API | | Pub/Sub | Async workers на доменные события | | Storage | Обработка файла после upload пользователя |

Обработчики должны быть идемпотентными, укладываться в timeout; тяжёлую работу — в очереди или Cloud Run.

На интервью: Functions vs Cloud Run; cold start; идемпотентность при at-least-once; IAM invoker; секреты через Secret Manager.

Типовые ошибки: долгий CPU в одном вызове; in-memory состояние между вызовами; секреты в логах; бесконечные retry на «ядовитых» сообщениях.

Компромисс — быстрый event-glue против жёстких лимитов runtime и слабого локального паритета для сложных сервисов.

Чеклист:

  • Идемпотентные stateless handlers.
  • Длинные job'ы — в Pub/Sub или Cloud Run jobs.
  • IAM только на нужные триггеры и service account.
  • Секреты из Secret Manager, не из env в репозитории.