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 в репозитории.