¿Qué es el procesamiento sin servidores?

El procesamiento sin servidores es un cambio de paradigma en el desarrollo de aplicaciones que les permite a los desarrolladores enfocarse en escribir el código sin tener que preocuparse por la infraestructura. Ofrece una serie de beneficios sobre el procesamiento tradicional, por ejemplo, no se requiere la administración de servidores ni el aprovisionamiento con anticipación, la escala se ajusta automáticamente y pagas solo por los recursos que usas. Estas ventajas logran que el procesamiento sin servidores sea ideal para casos prácticos como aplicaciones HTTP sin estado, backends web, móviles y de IoT, procesamiento de datos por lotes y transmisión, chatbots y mucho más.


Cartera de servicios de procesamiento sin servidores de GCP

Cloud Functions

Funciones y eventos sin servidores

Cloud Functions

Una plataforma de procesamiento controlada por eventos para conectar y extender fácilmente los servicios en la nube de Google y terceros y compilar aplicaciones que escalan desde cero hasta alcanzar una escala mundial.

Más información 
Entorno estándar de App Engine

Aplicaciones http sin servidores

Entorno estándar de App Engine

Una plataforma de aplicaciones sin servidores completamente administrada para backends web y de la API. Usa los lenguajes de programación populares sin tener que preocuparte por la administración de la infraestructura.

Más información 
Cloud Run

Contenedores sin servidores

Cloud Run

Una plataforma de procesamiento sin servidores que te permite ejecutar contenedores sin estado que se pueden invocar a través de las solicitudes HTTP. Cloud Run está disponible como una plataforma completamente administrada, en la que solo pagas por lo que usas, y también como un complemento de GKE.

Más información 

¿Qué plataforma de procesamiento sin servidores es adecuada para ti?

Opciones sin servidores

* El entorno estándar de App Engine admite Node.js, Python, Java, Go y PHP.

* Cloud Function admite Node.js, Python y Go.

Casos prácticos

Aplicación web

Aplicaciones web

El entorno estándar de App Engine es ideal para aplicaciones web de operaciones mínimas que se ejecutan en Node.js, Python, PHP, Java y Go. Escribe las aplicaciones de forma idiomática y estándar con cualquier biblioteca de lenguaje. El tiempo rápido de implementación y la capacidad de respuesta del escalamiento logran que el entorno estándar de App Engine sea ideal para picos de cargas de trabajo.

Procesamiento de backend asíncrono

Procesamiento de backend asíncrono

Cloud Functions es ideal para responder a los eventos de datos en la nube y al procesamiento básico, por ejemplo, cambiar el tamaño de una imagen subida a Cloud Storage o validar los datos cuando un valor se modifica en la base de datos de Firestore.

Backends de dispositivos móviles

Backends de dispositivos móviles

En los backends de la API de REST tradicionales para aplicaciones móviles, el entorno estándar de App Engine es una plataforma de aplicaciones que supervisa, actualiza y escala el entorno de hosting; todo lo que necesitas hacer es escribir el código de servicio del backend móvil. Firebase proporciona un conjunto de servicios de backend eficaces que se integran a la aplicación para dispositivos móviles: bases de datos NoSQL en tiempo real, autenticación, hosting, almacenamiento de archivos y mucho más. Firebase se integra a Cloud Functions para que puedas conectarte fácilmente con el resto de los servicios de Google Cloud Platform.

API

API

Si vas a compilar una API simple (un conjunto pequeño de funciones a las que se puede acceder a través de HTTP o Cloud Pub/Sub), te recomendamos usar Cloud Functions. Está diseñada para cargas de trabajo inestables y su paradigma de programación (funciones) ayuda a mantener el código de backend a pequeña escala bien organizado. Para obtener una API más compleja (como una API de REST con muchas rutas), te recomendamos usar el entorno estándar de App Engine, ya que puede resultar más fácil organizar muchas funciones. Si dependes de Cloud Endpoints para la administración de la API, te recomendamos usar el entorno estándar de App Engine con Python 2.7 y Java 8 ya que admite Cloud Endpoints.

Operaciones periódicas

Operaciones periódicas

Cloud Scheduler puede enviar solicitudes HTTP programadas para activar las operaciones en un programa definido. También puede apuntar a App Engine de manera específica o a los extremos HTTP como Cloud Functions y Cloud Run.

Prototipado rápido y unión de las API

Prototipado rápido y unión de las API

Para proyectos a pequeña escala o de hackatón que implican prototipado rápido o unión de varias API y servicios, te recomendamos usar Cloud Functions. Su paradigma de programación te permite desarrollar rápidamente aplicaciones a pequeña escala o el “código de adherencia” que une las API y los servicios existentes.

Ejecuta contenedores independientes del proveedor

Ejecuta contenedores independientes del proveedor

Los contenedores de Docker son un estándar de la industria y se pueden ejecutar en la nube o de forma local. Cloud Run puede ejecutar contenedores en forma de solicitud y respuesta sin servidores. Te recomendamos usar Cloud Run, a menos que necesites un hardware personalizado como las GPU o un clúster de Kubernetes, en cuyo caso puedes ejecutar Cloud Run en GKE en el clúster de Google Kubernetes Engine.

Combina cargas de trabajo sin servidores y con estado

Combina cargas de trabajo sin servidores y con estado

Cloud Run en GKE te permite ejecutar fácilmente las cargas de trabajo sin servidores y con estado. Por ejemplo, puedes implementar MongoDB desde Marketplace en el clúster de GKE a fin de usarlo como un almacenamiento de documentos para las cargas de trabajo sin servidores. GKE te proporciona flexibilidad para ejecutar lo que sea en el clúster, y también puedes usar Cloud Run a fin de implementar cargas de trabajo sin servidores.

Comparación de productos

Entorno estándar de App Engine Cloud Functions Cloud Run (Beta)1 Cloud Run en GKE (Beta)1
Artefacto de implementación App Función Contenedor Contenedor
Escala a cero Verificar Verificar Verificar Pods2
Nivel gratuito Verificar Verificar Verificar
WebSockets Verificar
Lenguajes Java, Node.js, Python, Go y PHP Node.js, Python y Go Cualquiera Cualquiera
Controles de acceso Oauth 2.0, CICP, Firebase Authentication, Acceso con Google y API de usuarios Permiso de IAM del invocador Permiso de IAM del invocador, CICP, Acceso con Google y Firebase Authentication Solo clúster, solo VPC
HTTP/2 y gRPC Verificar
Dominio personalizado Verificar Verificar Verificar
Tiempo de espera de la solicitud 1 minuto3 9 minutos 15 minutos 15 minutos
GPU y TPU Verificar
Conectividad VPC VerificarBeta1 En la hoja de ruta Verificar

1. El software Beta no tiene ANS.

2. Cloud Run en GKE escala la cantidad de pods a cero. La cantidad de nodos por clúster no puede escalar a cero, y estos nodos se facturan en ausencia de solicitudes.

3. Ajuste de escala automático: plazo de 60 segundos para las solicitudes HTTP.

Sugerencias y recomendaciones avanzadas

A continuación, se muestran algunos factores adicionales que tal vez quieras considerar.

Si la arquitectura contiene componentes sin ajuste de escala automático o sin servidores, los componentes sin ajuste de escala automático pueden sobrecargar estos componentes. Puedes usar un tema de Cloud Pub/Sub y establecer la propiedad max_instances en Cloud Functions para poner en cola las llamadas a los componentes sin ajuste de escala automático.
Muchos productos de GCP tienen un nivel gratuito que cubre la mayor parte del uso de los recursos, si no todo, para aplicaciones básicas de poco tráfico. Puedes usar fácilmente Cloud Functions para configurar los límites de facturación.
Consulta este instructivo para obtener más información.
Por su diseño, Cloud Functions solo controla una solicitud por instancia, lo que garantiza que cada solicitud tenga la cantidad total de procesamiento y memoria asignada. Esto puede lograr que el escalamiento rápido se vuelva más lento con Cloud Functions. Sin embargo, el entorno estándar de App Engine, Cloud Run y Cloud Run en GKE pueden controlar varias solicitudes simultáneas por instancia. Esto significa que los servicios pueden escalar más rápido cuando controlan más tráfico por instancia. No obstante, todas las solicitudes en una instancia deben compartir los recursos.
Cloud Run es compatible con la API de código abierto y el entorno de ejecución de Knative. Esto te permite mover las cargas de trabajo sin servidores a través de Cloud Run, Cloud Run en GKE o tu propio clúster de Kubernetes. Incluso puedes comenzar a ejecutar las cargas de trabajo en Cloud Run y moverlas con Cloud Run en GKE, si necesitas funciones específicas de GKE como tipos personalizados de máquinas o acceso a VPC.