Serverless es una de las nuevas palabras de moda que probablemente haya oído. Se refiere a un tipo de despliegue en el que el servidor se abstrae. No significa que no haya servidores, sino que no tienes que aprovisionarlos tú mismo. Vamos a explorar esto en el post.
En algunos casos, serverless puede liberar a tu empresa de los costes de mantenimiento de infraestructura, actualizaciones y aprovisionamiento de servidores. En este post, exploraremos los conceptos básicos de lo que es serverless, en qué se diferencia de microservicios (otra palabra de moda), algunos posibles beneficios, y cómo Couchbase Server encaja en el cuadro.
¿Qué es Serverless?
Con serverless, simplemente escribes código (normalmente en forma de funciones/métodos). Puede hacerlo con muchos lenguajes populares, como C#, JavaScript (Node), Java, etc. Este código se despliega en un proveedor en la nube como Microsoft Azure, Amazon Web Services (AWS), Google Cloud Platform (GCP), etc.
Tu código es activado por eventos. Los eventos pueden ser tan simples como peticiones HTTP, o podrían ser muchos otros tipos de eventos, dependiendo de lo que soporte la plataforma en la nube. (Azure, por ejemplo, admite Temporizador, GitHubetc.).
Dentro de la nube, los servidores que ejecutan ese código son aprovisionados (y dados de baja) automáticamente por el proveedor de la nube en función de las necesidades.
Puede que también veas los términos BaaS (Backend as a Service) o FaaS (Function as a Service). Recientemente, el significado de la palabra de moda "sin servidor" se ha ampliado, pero este post se centra principalmente en los servicios en la nube FaaS/BaaS.
Sin servidor vs Microservicios
Existen algunas similitudes entre serverless y microservicios, pero no son lo mismo. Ambos son enfoques para dividir una aplicación en piezas más pequeñas e independientes. Se diferencian en lo que se despliega y lo que se gestiona.
Por ejemplo, si utiliza una arquitectura de microservicios, puede tener un servicio de "carrito de la compra" (además de otros servicios como "perfil de usuario", "inventario", etc.). Aquí tienes un diagrama de un microservicio muy sencillo.
Observa algunas propiedades del microservicio:
- Su responsabilidad se refiere únicamente a la cesta de la compra. No es una aplicación completa por sí misma.
- El servicio contiene una serie de operaciones posibles, pero todas ellas forman parte del servicio.
- El microservicio se comunica con una base de datos (posiblemente una base de datos dedicada) para completar las operaciones.
- El microservicio desplegado en la nube puede utilizar una VM que requiera aprovisionamiento. Incluso mientras este servicio esté inactivo, se le cobrará por el tiempo de la VM.
Contrasta esto con un conjunto similar de funciones, esta vez creadas con un enfoque sin servidor.
En la arquitectura sin servidor,
- Hay 4 funciones que pueden desplegarse por separado (en lugar de 1 servicio)
- Cada función puede comunicarse con la base de datos
- No es necesario aprovisionar una máquina virtual, basta con desplegar una función.
- La función sólo consume recursos cuando los necesita (y sólo se le cobra por el uso real, no por el tiempo de inactividad).
En el diagrama anterior sólo se muestran peticiones HTTP estándar. También podría utilizar un evento Timer, por ejemplo, para comprobar cada 5 minutos si hay algún carrito de la compra abandonado.
Ventajas de la tecnología sin servidor
Existen algunas ventajas (y desventajas) cuando se utiliza una arquitectura sin servidor.
Una ventaja es que la escalabilidad la gestiona el proveedor de la nube. Si aumenta la demanda o el uso, el proveedor de la nube puede compensarlo añadiendo más servidores cuando sea necesario.
Otra ventaja es que los costes están vinculados al uso. Si tienes un servicio que se utiliza constantemente, puede que no veas ningún beneficio. Pero si tienes un servicio que se utiliza esporádicamente, entonces serverless puede proporcionar ahorros de costes.
Por último, es posible que una arquitectura sin servidor pueda reducir los costes de administración. No es necesario esperar a que se ponga en marcha un servidor. Esto puede mejorar la iteración ágil si la puesta en marcha de máquinas virtuales o servidores lleva mucho tiempo. Puede reducir la necesidad de operaciones de TI, al menos al principio, porque no hay servidores que desplegar, menos servidores que gestionar/actualizar/etc. Todo ello puede mejorar la productividad de los desarrolladores.
Es importante tener en cuenta que serverless no es una bala de plata. Puede que su aplicación no se adapte bien a este tipo de descomposición. Además, si acabas desplegando un gran número de funciones sin servidor, seguirás necesitando personal de operaciones para gestionar, supervisar y probar tus funciones. Consulta las ventajas e inconvenientes en MartinFowler.com..
Couchbase y Serverless juntos
Hay varios proveedores populares de serverless:
- Microsoft Funciones Azure
- Amazon AWS Lambda
- Plataforma Google Cloud Funciones en la nube
Couchbase Server se ha asociado con cada uno de estos principales proveedores de nube y puede ejecutarse en cualquiera de esas plataformas. Además, puedes ejecutar Couchbase Server en varios proveedores de nube para mejorar el alcance, la recuperación ante desastres y la diversificación. También puedes usar Couchbase Server en una situación de nube híbrida (una mezcla de nube y local).
Esto hace que Couchbase sea una gran elección cuando necesite una base de datos de documentos NoSQL, sin importar su estrategia en la nube:
No hay bloqueo de proveedores. Con Couchbase, ni siquiera estás atado a la nube, y mucho menos a un único proveedor de la nube. Con XDCRCon Couchbase, puedes ir primero a la nube y tener un clúster local para la recuperación ante desastres, o desplegar Couchbase en varias nubes.
Ofertas de mercado en la nube. Puede empezar en cuestión de minutos: en Microsoft Azure, AWSo GCP.
Herramientas para su lenguaje de programación. Couchbase ofrece SDKs para Node.js, .NET, Java, PHP, Python, Vaya a, C/C++así como soporte de la comunidad para muchos otros. No importa tu plataforma serverless o preferencias de lenguaje, Couchbase te tiene cubierto. Echa un vistazo a esta entrada de blog sobre Funciones Azure con Couchbase Server para una introducción técnica utilizando .NET/C#/Azure.
Escala. Con Couchbase Server, escalar es fácil y eficiente. La arquitectura de Couchbase está diseñada para escalarcon replicación integrada, autosharding y distribución de datos. Cada nodo de un clúster de Couchbase puede realizar tanto lecturas como escrituras, lo que proporciona un uso eficiente de los recursos informáticos y una alta disponibilidad.
Flexibilidad de JSON. Muchas aplicaciones pueden beneficiarse de un esquema flexible, incluso si utiliza una base de datos relacional. Eche un vistazo a whitepaper sobre por qué Couchbase es la base de datos del compromiso que puede trabajar junto con su base de datos transaccional y analítica para ofrecer una experiencia excepcional al cliente.
Resumen
Serverless lleva la descomposición del back-end de su aplicación un paso más allá.
Almacenar datos JSON en Couchbase Server te da flexibilidad tanto con el esquema como con el escalado.
¿Es serverless adecuado para usted? No es una bala de plata, pero si está interesado en beneficiarse de costes más bajos y un despliegue más sencillo, estaremos encantados de ayudarle a crear un plan cuidadoso y discutir si es o no un ajuste adecuado para su aplicación. Puede ponerse en contacto conmigo dejando un comentario, o buscándome en Twitter @mgroves.