¿Qué significa "sin servidor"?

La informática sin servidor supone un cambio de paradigma en el desarrollo de aplicaciones, ya que permite a los desarrolladores dedicarse a escribir código sin tener que preocuparse por la infraestructura. Entre las muchas ventajas que ofrece este modelo en comparación con la informática tradicional, cabe destacar que no requiere el aprovisionamiento por adelantado ni la gestión de los servidores, que cuenta con capacidad de autoescalado y que se paga únicamente por los recursos que se utilizan. Todas estas ventajas lo convierten en la solución ideal para muchos casos prácticos como, por ejemplo, las aplicaciones HTTP sin reconocimiento del estado, los backends web, móviles y del Internet de las cosas, el procesamiento de datos por lotes o en streaming, o los bots de chat, entre otros.


Cartera de productos sin servidor de GCP

Cloud Functions

Funciones y eventos sin servidor

Cloud Functions

Plataforma informática basada en eventos que permite conectar y ampliar fácilmente servicios en la nube de Google o de terceros y desarrollar aplicaciones que pasen de cero a escala planetaria.

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

Aplicaciones HTTP sin servidor

Entorno estándar de App Engine

Plataforma de aplicaciones sin servidor totalmente gestionada para backends web y de las API. Con ella, puedes usar los lenguajes de desarrollo más conocidos, sin necesidad de preocuparte por la gestión de la infraestructura.

más información 
Cloud Run

Contenedores sin servidor

Cloud Run

Plataforma informática sin servidor que permite ejecutar contenedores sin reconocimiento del estado, los cuales se pueden invocar mediante solicitudes HTTP. Cloud Run está disponible como plataforma totalmente gestionada, en la que pagas solo por los recursos que utilizas, y como complemento de GKE.

más información 

¿Qué plataforma informática sin servidor te conviene más?

Opciones sin servidor

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

* Las funciones de Cloud Function son compatibles con 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 que no gestionen una gran cantidad de operaciones y se ejecuten en Node.js, Python, PHP, Java y Go. Escribe tus aplicaciones con cualquier biblioteca de lenguajes, en un estilo estándar e idiomático. Por su rapidez para realizar despliegues y su alta capacidad de respuesta al escalar recursos, el entorno estándar de App Engine es una opción excelente para las cargas de trabajo con picos.

Procesamiento asíncrono de backends

Procesamiento asíncrono de backends

Cloud Functions es la solución ideal para responder a los eventos de datos en la nube y para llevar a cabo procesos ligeros, como cambiar el tamaño de una imagen que se haya subido a Cloud Storage o validar datos cuando se modifique un valor en la base de datos de Firestore.

Backends móviles

Backends móviles

En el caso de los backends de API 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 alojamiento. Todo lo que tienes que hacer es escribir el código del servicio de backend móvil. Firebase ofrece un abanico de potentes servicios de backend que puedes integrar directamente en tu aplicación móvil: bases de datos NoSQL en tiempo real, autenticación, alojamiento y almacenamiento de archivos, entre otros. Firebase se integra con Cloud Functions para que puedas conectar fácilmente los demás servicios de Google Cloud Platform.

APIs

APIs

Si vas a crear una API sencilla (un pequeño conjunto de funciones a las que se acceda mediante HTTP o Cloud Pub/Sub), te recomendamos que uses Cloud Functions. Esta solución está especialmente diseñada para las cargas de trabajo con ráfagas, y su paradigma de programación (funciones) permite mantener bien organizado el código de backend a pequeña escala. Si estás creando una API más compleja (como una API REST con varias rutas), te aconsejamos que uses el entorno estándar de App Engine, ya que quizás te permita organizar más fácilmente un mayor número de funciones. Si dependes de Cloud Endpoints para la gestión de las API, te sugerimos que utilices el entorno estándar de App Engine con Python 2.7 y Java 8, ya que es compatible con Cloud Endpoints.

Operaciones periódicas

Operaciones periódicas

Cloud Scheduler te permite programar el envío de solicitudes HTTP para que activen operaciones según una planificación definida. También es compatible con App Engine y con puntos de conexión HTTP como Cloud Functions y Cloud Run.

Combinación de APIs y prototipado ágiles

Combinación de APIs y prototipado ágiles

Si tienes proyectos de hackatón o a pequeña escala para los que necesites realizar el prototipado o combinar varias API y servicios rápidamente, te recomendamos que uses Cloud Functions. Gracias a su paradigma de programación, puedes desarrollar de forma ágil aplicaciones a pequeña escala o "código de pegamento" para combinar APIs o servicios.

Ejecución de contenedores aptos para todos los proveedores

Ejecución de contenedores aptos para todos los proveedores

Los contenedores Docker son un estándar del sector y se pueden ejecutar tanto in situ como en la nube. Cloud Run puede ejecutar contenedores en modo solicitud-respuesta sin servidor. Te aconsejamos que uses Cloud Run, a no ser que necesites un hardware personalizado, como unas GPUs concretas, o que requieras un clúster de Kubernetes. Si ese es tu caso, puedes ejecutar Cloud Run en tu clúster de Google Kubernetes Engine.

Combinación de cargas de trabajo sin servidor y con reconocimiento del estado

Combinación de cargas de trabajo sin servidor y con reconocimiento del estado

Cloud Run en GKE te permite ejecutar fácilmente cargas de trabajo sin servidor y con reconocimiento del estado de forma conjunta. Por ejemplo, puedes desplegar MongoDB en tu clúster de GKE desde Marketplace y usarlo como un almacén de documentos para las cargas de trabajo sin servidor. GKE te permite ejecutar lo que quieras en tu clúster y, además, puedes usarlo junto con Cloud Run para desplegar las cargas de trabajo sin servidor.

Comparación de productos

Entorno estándar de App Engine Cloud Functions Cloud Run (versión beta)1 Cloud Run en GKE (beta)1
Artefacto de despliegue Aplicación Función Contenedor Contenedor
Escalado a cero Comprobar Comprobar Comprobar Pods2
Nivel gratuito Comprobar Comprobar Comprobar
WebSockets Comprobar
Lenguajes Java, Node.js, Python, Go y PHP Node.js, Python y Go Cualquiera Cualquiera
Controles de acceso Oauth 2.0, CICP, Firebase Authentication, inicio de sesión de Google y API de usuarios Permiso de invocador de gestión de identidades y accesos Permiso de invocador de gestión de identidades y accesos, CICP, inicio de sesión de Google y Firebase Authentication Solo para clústeres y solo para VPC
HTTP/2 y gRPC Comprobar
Dominio personalizado Comprobar Comprobar Comprobar
Tiempo de espera de solicitud 1 minuto3 9 minutos 15 minutos 15 minutos
GPUs y TPUs Comprobar
Conectividad de VPC Comprobarversión beta1 En planificación Comprobar

1. El software en versión beta no tiene ningún acuerdo de nivel de servicio.

2. Cloud Run en GKE permite escalar el número de pods a cero. El número de nodos por clúster no se puede escalar a cero. Estos nodos se facturan en caso de no haber solicitudes.

3. Escalado automático: plazo límite de 60 segundos para las solicitudes HTTP.

Consejos avanzados y prácticas recomendadas

A continuación, te indicamos algunos factores que también deberías tener en cuenta.

Si tu arquitectura contiene algunos componentes sin autoescalado o sin servidor, los componentes que sí tengan capacidad de autoescalado podrían sobrecargarlos. Puedes usar un tema de Cloud Pub/Sub y ajustar la propiedad max_instances en Cloud Functions para poner a la cola las llamadas a componentes que no tengan capacidad de autoescalado.
Muchos productos de GCP cuentan con un nivel gratuito que cubre la mayor parte del uso de los recursos (o por completo) en aplicaciones ligeras con un nivel de tráfico bajo. Puedes usar Cloud Functions para configurar fácilmente los límites de facturación.
Echa un vistazo a este tutorial para obtener más información.
De forma predeterminada, la solución Cloud Functions solo gestiona una solicitud por instancia, lo que asegura que cada solicitud tenga asignada toda la memoria y los recursos informáticos disponibles. Esto puede ralentizar un poco el escalado con Cloud Functions, pero tanto el entorno estándar de App Engine como Cloud Run y Cloud Run en GKE pueden gestionar varias solicitudes simultáneas por instancia. Es decir, estos servicios pueden gestionar un mayor tráfico por instancia y, de esta forma, escalar los recursos de manera más rápida. No obstante, todas las solicitudes de una instancia deben compartir los recursos.
Cloud Run es compatible con el entorno de ejecución y API de código abierto de Knative, por lo que puedes trasladar las cargas de trabajo sin servidor entre Cloud Run, Cloud Run en GKE o tu propio clúster de Kubernetes. Además, puedes empezar a ejecutar tus cargas de trabajo en Cloud Run y trasladarlas a Cloud Run en GKE para utilizarlas en dicha solución. Esto puede resultarte útil si necesitas funciones concretas de GKE, como los tipos de máquinas personalizadas o el acceso a VPC.