¿Qué es la computación Sin Servidor (Serverless)?
Definición, casos de uso y patrones de diseños de Serverless
La manera de cómo ejecutamos aplicaciones se han estado modernizando desde la llegada de la computación en la nube. "Serverless" traducido al castellano Sin Servidor, es uno de los tipos de servicios que los proveedores de la computación en la nube ofrece a sus clientes bajo demanda.
"Serverless" es un servicio bajo demanda en la nube para desplegar y ejecutar código con recursos dinámicos.
Para este servicio, el proveedor aprovisiona y gestiona los recursos como: CPU, GPU, memoria RAM, etc., de esta forma se reduce gastos en administración y mejora la seguridad para el cliente.
Definición
Existen diferentes definiciones del "Serverless" (Sin servidor) pero presento la más utilizada:
Serverless computing es un modelo de ejecución de computación en la nube en el que el proveedor de los servicios en la nube destina por demanda recursos de las máquinas virtuales, cuidando de los servidores por sus clientes.
Wikipedia. (2023, 9 octubre). Serverless computing. Wikipedia, la enciclopedia libre. es.wikipedia.org/wiki/Serverless_computing
La computación sin servidor o "Serverless" ofrece Backend como servicio (BaaS) y función como servicio(FaaS).
"Backend as a Service(BaaS)" es un paradigma donde el cliente desarrolla, ejecuta y administra funcionalidades de aplicativos sin tener que mantener y administrar la infraestructura donde se ejecuta.
"Function as a Service (FaaS)" es un servicio online que gestiona actividades específicas dentro de un aplicativo como notificaciones, autenticación o gestión de usuarios.
Características del Serverless
Estable y altamente confiable.
Reducción de costos
Eliminación de administración de servidores.
Entorno de ejecución con recursos dinámicos (CPU, RAM, GPU, etc.).
Normalmente, el costo del servicio es por tiempo de ejecución del código que se concluye a un reto para los desarrolladores de software el poder crear algoritmos de alto rendimiento.
Escalamiento elástico por la forma dinámica de aprovisionar recursos.
Es una arquitectura orientada a eventos, que se ejecuta el algoritmo del programa ante un evento.
Casos de Uso de Serverless
Aplicaciones Web
Procesamiento de Datos en tiempo real
Aprendizaje Automático (Inteligencia Artificial)
Transcodificación de vídeo
Servicio de Autenticación
Internet de las Cosas
Chatbots
Backend para Aplicaciones Móviles
Nombres de servicios FaaS
AWS Lambda
Google Cloud Functions
IBM Cloud Functions
Azure Functions
Huawei Cloud Functions
Alibaba Cloud Function Compute
OpenShift Serverless Functions
Patrones de Diseño que se adaptan a Serverless
En el desarrollo de software recurrimos a patrones de diseño para la solución de un cierto tipo de problemas, así que en una arquitectura basada en "serverless" cambia la forma de cómo desarrollamos software.
No todos los patrones de diseño más comunes se adaptan a "Serverless", para eso un desarrollador o un arquitecto de software debe tener la capacidad de elegir el mejor patrón de diseño para la arquitectura de un proyecto.
Estos son los patrones de diseño que se pueden adaptar a la arquitectura Serverless:
Event-driven
Command
Pub/Sub
Event workflows
Strangler
Conclusión
He presentado la definición más aceptada y aspectos generales importantes del "serverless"; sin embargo, existen numerosas investigaciones que hace que siga modernizándose y nosotros como desarrolladores o tomadores de decisión en tecnologías, debemos adaptarnos en la forma vanguardista de cómo desarrollamos software. Esto es un paradigma, así que nos invita a comprender más del tema para desarrollar algoritmos que puedan funcionar y tener alto rendimiento.
Me interesa conocer tu opinión, suscríbete y deja tus comentarios.
¡Muchas Gracias! 🚀