Cloud Run: Despliegue de Contenedores Serverless en Google Cloud
Clase 25 de 48 • Entrenamiento de Google Cloud Platform
Resumen
¿Qué es Cloud Run y por qué es importante para el desarrollo?
Cloud Run es un servicio que permite desplegar aplicaciones en contenedores y operarlas en un entorno serverless. Esto implica que los desarrolladores pueden centrarse solo en escribir código sin preocuparse sobre cómo gestionar la infraestructura o dónde se está ejecutando su aplicación. Cloud Run es especialmente relevante porque combina la flexibilidad de los contenedores con la simplicidad de las soluciones serverless, permitiendo un desarrollo ágil y eficiente.
¿Cómo se relaciona Cloud Run con Kubernetes?
Kubernetes es fundamental para orquestar contenedores y ejecutar cargas de trabajo. Mientras Kubernetes proporciona una abstracción de la infraestructura y APIs declarativas para gestionar cada componente, Cloud Run aporta una capa adicional que facilita la implementación de soluciones serverless sobre Kubernetes. Aquí están algunos aspectos clave:
- Extensión de funcionalidades: Kubernetes puede ser personalizado a través de controladores nuevos, lo que permite automatizar y controlar despliegues de manera personalizada.
- Reducción del trabajo para desarrolladores: Con Cloud Run, los desarrolladores no necesitan preocuparse por gestionar nodos o escalar la infraestructura, ya que se busca la simplicidad del serverless.
- Compatibilidad con contenedores: Cloud Run permite definir el entorno de ejecución directamente con un Dockerfile, lo que se traduce en mayor flexibilidad en el uso de diferentes lenguajes y librerías.
¿Cómo funciona Cloud Run sobre KNative?
KNative es una colección de APIs que permite gestionar eventos y conectar servicios a estos. Sobre KNative, Cloud Run permite desplegar contenedores que actúan bajo un paradigma serverless. La capa de KNative se encarga de:
- Escuchar solicitudes HTTP: Actúa generando listeners que esperan peticiones, las procesan y luego cierran el contenedor.
- Escalado automático: Permite que los contenedores escalen a cero cuando no hay tráfico, reduciendo costos innecesarios y maximizando la eficiencia.
- Concurrencia: Cloud Run soporta múltiples solicitudes simultáneas en un solo contenedor, algo que mejora la eficiencia y reduce la latencia en servicios.
¿Qué diferencia a Cloud Run de otras soluciones como Cloud Functions?
Existen varias diferencias fundamentales entre Cloud Run y otras plataformas como Cloud Functions:
- Capacidad de definir runtime: En Cloud Run no estás limitado a un conjunto de runtimes predefinidos por el proveedor. Puedes configurar el entorno usando cualquier definición de Dockerfile.
- Concurrencia: A diferencia de otros servicios serverless que procesan una sola solicitud a la vez, Cloud Run maneja varias peticiones en un único contenedor, lo cual optimiza el uso de recursos.
- Modelo de costes: Cloud Run cobra según el uso real de los recursos por fracciones de 100 milisegundos, ofreciendo flexibilidad económica.
¿Cómo se integra Cloud Run con herramientas de CICD?
Cloud Run es altamente compatible con diferentes pipelines de CICD, permitiendo una integración fluida con herramientas populares. Algunos pasos básicos para su integración son:
- Construcción de Docker: Se debe compilar el contenedor empleando Docker y almacenar la imagen generada en un container registry.
- Despliegue con gcloud: Una vez almacenada la imagen, el despliegue se realiza mediante el comando
gcloud run deploy
, integrando el proceso en sistemas de CICD como Jenkins o Cloud Build. - Automatización del proceso: La capacidad de integrar Cloud Run en el pipeline de CICD asegura que nuevos cambios en el código sean automáticamente desplegados y probados en producción.
Este enfoque alinea desarrollo y operaciones, fomentando una entrega continua de software eficiente y confiable.