Ir al contenido

Investigación: Comunicación entre Servicios en Cloud Run para Multi-Agent Systems

Comunicación entre Servicios en Cloud Run: Investigación Completa

Sección titulada «Comunicación entre Servicios en Cloud Run: Investigación Completa»

Fecha: 2026-04-05 Objetivo: Determinar qué recomienda Google para comunicación entre servicios Cloud Run, especialmente en contexto de agentes AI multi-agent.


1. ¿Recomienda Google shared filesystem (GCS FUSE / Filestore) para comunicación entre servicios?

Sección titulada «1. ¿Recomienda Google shared filesystem (GCS FUSE / Filestore) para comunicación entre servicios?»

NO. Google no recomienda shared filesystem para comunicación inter-servicio. Las docs de GCS FUSE y NFS volume mounts se enfocan exclusivamente en dar acceso a storage persistente a servicios individuales, nunca como mecanismo de comunicación entre servicios.

Evidencia concreta:

  • La doc de Cloud Storage FUSE dice explícitamente: “Cloud Storage FUSE does not provide concurrency control for multiple writes (file locking) to the same file. When multiple writes try to replace a file, the last write wins and all previous writes are lost.” Fuente: Cloud Run Cloud Storage volume mounts
  • GCS FUSE “is not a fully POSIX-compliant file system” y tiene “much higher latency than a local file system” Fuente: Cloud Storage FUSE overview
  • NFS mounts en Cloud Run “does not support NFS locking” Fuente: NFS volume mounts
  • En la arquitectura multi-agent de Google Cloud Architecture Center, no hay ninguna mención de shared filesystem para comunicación entre agentes Fuente: Multi-agent AI system

2. ¿Qué recomienda Google para pasar datos entre servicios Cloud Run?

Sección titulada «2. ¿Qué recomienda Google para pasar datos entre servicios Cloud Run?»

Google recomienda tres patrones, en orden de preferencia según el caso:

a) HTTP/gRPC directo (síncrono)

  • Cloud Run services exponen endpoints HTTPS estables (*.run.app)
  • Soporta HTTP/2 y gRPC end-to-end
  • Autenticación via IAM + ID tokens (service-to-service auth)
  • Fuente: Cloud Run overview

b) Pub/Sub push (asíncrono)

  • Mensajes publicados a un topic se entregan automáticamente via HTTP POST al endpoint del servicio
  • Retry automático basado en HTTP status codes
  • Autenticación built-in con service accounts
  • Fuente: Pub/Sub push

c) Cloud Tasks / Eventarc / Workflows (orquestación)

  • Cloud Tasks para ejecución asíncrona confiable
  • Eventarc para triggering basado en eventos (Storage, Firestore, etc.)
  • Workflows para orquestar invocaciones entre servicios
  • Fuente: Cloud Run overview

3. ¿Cuáles son los tradeoffs de performance GCS FUSE vs HTTP message passing?

Sección titulada «3. ¿Cuáles son los tradeoffs de performance GCS FUSE vs HTTP message passing?»
AspectoGCS FUSEHTTP directo entre servicios
Latencia”Much higher latency than a local file system” — operaciones de metadata son “expensive and slow”Latencia de red intra-región (sub-ms a pocos ms)
ThroughputDegradado con archivos pequeños secuenciales; optimizado solo para archivos grandes con parallel downloadsAlto throughput con connection pooling
ConcurrenciaSin file locking; “last write wins”Manejo nativo de concurrencia HTTP
Cold startAgrega latencia al cold start (mount timeout 30s)Sin impacto adicional
ConsistenciaEventual; writes simultáneos pueden causar ESTALE errorsRequest-response atómico
MemoriaConsume memoria del container: 32MB stat cache + 64MB por archivo en escritura streamingMínimo overhead
CostoStorage GCS + API calls (list, get, put)Solo compute Cloud Run (ingress es gratis)

Dato clave de performance de GCS FUSE:

  • Flat buckets: 5,000 read requests/sec, 1,000 write requests/sec iniciales
  • Hierarchical namespace buckets: 40,000 read requests/sec, 8,000 write requests/sec
  • Streaming writes: ~64MB de memoria por archivo abierto
  • Fuente: Cloud Storage FUSE performance

4. Para multi-agent AI systems, ¿cuál es el patrón recomendado?

Sección titulada «4. Para multi-agent AI systems, ¿cuál es el patrón recomendado?»

A2A Protocol sobre HTTP/HTTPS. Google tiene documentación oficial explícita:

“To facilitate communication between agents, use Agent2Agent (A2A) protocol with ADK, which is an open standard protocol that enables AI agents to communicate and collaborate across different platforms and frameworks, regardless of their underlying technologies.”Multi-agent AI system, Cloud Architecture Center

La arquitectura oficial de Google para multi-agent systems tiene estos componentes:

  1. A2A Protocol — comunicación entre agentes (JSON-RPC 2.0 sobre HTTPS o gRPC)
  2. MCP — acceso de agentes a tools/servicios externos
  3. Cloud Run — runtime serverless para cada agente
  4. Vertex AI — modelos de AI (Gemini)
  5. AlloyDB / Memorystore / Firestore — estado persistente (NO filesystem compartido)

El patrón de estado es explícito:

“Stateless agent applications with externalized state management enable horizontal scaling because any instance serves any request.”Choose agentic AI architecture components

Para persistencia de estado entre agentes:

  • Short-term memory: Memorystore for Redis, Firestore, Cloud SQL
  • Long-term memory: Memory Bank, Firestore
  • Task state: AlloyDB + A2A TaskStore
  • NO shared filesystem

5. ¿Existen guías de Google Cloud que aborden específicamente agent-to-agent communication?

Sección titulada «5. ¿Existen guías de Google Cloud que aborden específicamente agent-to-agent communication?»

Sí, hay documentación oficial extensa:

  1. Multi-agent AI system in Google Cloud — guía de arquitectura completa

  2. Single-agent AI system using ADK and Cloud Run — deployment pattern

  3. Choose your agentic AI architecture components — decision guide

  4. Deploy A2A agents to Cloud Run — tutorial de deployment

  5. A2A Protocol Specification v0.3 — spec completa del protocolo

  6. Getting Started with A2A: Purchasing Concierge Codelab


Detalle Técnico: A2A Protocol como Patrón de Comunicación

Sección titulada «Detalle Técnico: A2A Protocol como Patrón de Comunicación»
  • JSON-RPC 2.0 sobre HTTP (default)
  • gRPC con Protocol Buffers (v0.3+)
  • HTTP+JSON/REST como alternativa
  • TLS 1.2+ obligatorio en producción
  1. Blocking (default): operación espera hasta estado terminal
  2. Non-blocking (return_immediately: true): retorna inmediatamente con task in-progress
  3. Streaming (SendStreamingMessage): SSE para actualizaciones en tiempo real
  4. Push notifications: webhooks para escenarios desconectados
  • Datos pasan via Message objects con Parts (texto, archivos, structured data)
  • NO hay shared storage en el protocolo A2A — todo es message passing
  • Artifacts representan outputs generados, compuestos de Parts
  • File exchange via URLs o referencias estructuradas, no filesystem compartido
  • Cada agente publica un Agent Card en /.well-known/agent-card.json
  • Describe: nombre, capabilities, endpoint, security schemes
  • API keys, OAuth 2.0, OpenID Connect
  • En Cloud Run: IAM-based auth con --no-allow-unauthenticated

El Anti-Pattern: Shared Database/Filesystem para Comunicación

Sección titulada «El Anti-Pattern: Shared Database/Filesystem para Comunicación»

La industria completa de microservices considera el shared database/filesystem como anti-pattern para comunicación inter-servicio:

“Shared databases risk becoming performance bottlenecks that encourage close-coupling and create a single point of failure.”

Problemas específicos:

  1. Coupling — servicios dependen de un schema/estructura compartida
  2. Bottleneck — punto único de contención
  3. No contracts — sin interfaz explícita entre servicios
  4. Scaling — filesystem compartido no escala horizontalmente
  5. Consistency — GCS FUSE no tiene file locking, “last write wins”

Alternativas correctas según best practices:

  • API/HTTP para comunicación síncrona
  • Message queues (Pub/Sub) para comunicación asíncrona
  • Event-driven para desacoplamiento
  • Database-per-service para persistencia propia

Cuándo SÍ Usar GCS FUSE / Filestore en Cloud Run

Sección titulada «Cuándo SÍ Usar GCS FUSE / Filestore en Cloud Run»

GCS FUSE y NFS sí tienen usos válidos, pero no para comunicación:

Uso válidoEjemplo
Cargar modelos MLMontar bucket con model weights en startup
Acceso a datasetsLeer datos de training/inference desde GCS
Archivos de configuraciónConfigs compartidas read-only
Output de batch jobsEscribir resultados de procesamiento batch
Media processingLeer/escribir archivos multimedia

Para el video de 7 agentes ADK en Cloud Run: GCS FUSE no es el patrón correcto para comunicación entre agentes. A2A protocol sobre HTTP es el patrón oficial de Google.


El stack recomendado por Google para multi-agent AI en Cloud Run:

┌─────────────────────────────────────────────┐
│ Frontend │
│ (Cloud Run service) │
└──────────────────┬──────────────────────────┘
│ HTTP/A2A
┌──────────────────▼──────────────────────────┐
│ Coordinator Agent │
│ (Cloud Run + ADK + A2A) │
└──┬───────┬───────┬───────┬──────────────────┘
│ A2A │ A2A │ A2A │ A2A
┌──▼──┐ ┌──▼──┐ ┌──▼──┐ ┌──▼──┐
│Agent│ │Agent│ │Agent│ │Agent│ ← cada uno es
│ 1 │ │ 2 │ │ 3 │ │ N │ Cloud Run service
└──┬──┘ └──┬──┘ └──┬──┘ └──┬──┘ independiente
│ │ │ │
│ MCP │ MCP │ MCP │ MCP
┌──▼───────▼───────▼───────▼──────────────────┐
│ Tools / External Services │
│ (APIs, DBs, Cloud Storage, etc.) │
└─────────────────────────────────────────────┘
Estado: Memorystore/Firestore/AlloyDB (NO filesystem)
Comunicación: A2A Protocol (HTTP/JSON-RPC 2.0)

  1. Cloud Run Cloud Storage volume mounts
  2. Cloud Run NFS volume mounts
  3. Cloud Run overview
  4. Cloud Storage FUSE overview
  5. Cloud Storage FUSE performance tuning
  6. Cloud Run Pub/Sub push
  7. Cloud Run networking best practices
  8. Multi-agent AI system — Cloud Architecture Center
  9. Single-agent AI system using ADK and Cloud Run
  10. Choose agentic AI architecture components
  11. Deploy A2A agents to Cloud Run
  12. Host A2A agents on Cloud Run
  13. A2A Protocol Specification v0.3
  14. A2A Getting Started Codelab
  15. Cloud Run service-to-service auth