advanced

Cloud Run

Деплойте контейнеры на managed serverless-платформу с масштабированием по запросам, сохраняя HTTP и переносимость контейнера.

Cloud Run — контейнерные HTTP-сервисы и jobs на полностью managed-платформе. Вы деплоите тот же Docker-образ, что локально; GCP масштабирует инстансы по concurrency запросов, поддерживает свои домены и из коробки связывается с IAM и Cloud Logging.

					apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: api
spec:
  template:
    spec:
      containers:
        - image: gcr.io/project/api:1.4.0
          ports:
            - containerPort: 8080
          env:
            - name: NODE_ENV
              value: production
          resources:
            limits:
              memory: 512Mi
              cpu: '1'
				

| Параметр | Назначение | |----------|------------| | Concurrency | Запросов на инстанс до scale-out | | Min instances | Меньше cold start, но плата за простой | | CPU always allocated | Удобнее для фоновой работы в контейнере |

Node.js API слушает `PORT`, обрабатывает `SIGTERM`, сессии и upload — во внешних хранилищах.

На интервью: Cloud Run vs Cloud Functions vs GKE; cold start и min instances; stateless-дизайн; IAM invoker; таймауты запросов.

Типовые ошибки: WebSocket или long-lived соединения без отдельного дизайна; запись на локальный диск; тяжёлый образ тормозит cold start; нет проверки готовности при старте.

Компромисс — простота эксплуатации и оплата за запросы против меньшего контроля над сетью, tuning нод и нестандартным runtime.

Чеклист:

  • Неизменяемый образ на каждую revision.
  • Сессии, кэш и upload — снаружи контейнера.
  • Осознанно задайте concurrency, memory и timeout.
  • Min instances — только там, где SLO по latency того требует.