¿Qué es la computación sin servidores?
La computación sin servidores es un modelo de ejecución de computación en la nube que asigna recursos de máquinas según el uso. Con un modelo sin servidores, los desarrolladores pueden compilar y ejecutar aplicaciones sin tener que administrar servidores y pagar solo por la cantidad exacta de recursos usados. En cambio, el proveedor de servicios en la nube es responsable de aprovisionar, administrar y escalar la infraestructura de nube que ejecuta el código de la aplicación.
Si bien el nombre puede ser engañoso, el término sin servidores no implica que haya “ningún servidor”. En cambio, las apps sin servidores simplifican el trabajo de infraestructura de rutina asociado con el desarrollo de aplicaciones. No tienes visibilidad de las máquinas que ejecutan tus aplicaciones, no pueden configurarlas y no tienes que administrarlas ni escalarlas. En otras palabras, pagas por el servicio de un servidor, no por el servidor en sí.
Desde la perspectiva del desarrollo, es como si no hubiera servidores. Los desarrolladores escriben el código, lo implementan en producción y el proveedor de servicios en la nube se encarga del resto.
¿Cómo funciona la computación sin servidores?
Cuando se trata de compilar aplicaciones, los desarrolladores suelen tener una serie de otras tareas de administración de servidores que deben realizar a fin de implementar su código, como definir recursos para el procesamiento y el almacenamiento, la aplicación de parches, el balanceo de cargas y más. Todos estos elementos adicionales generan tiempos de aprovisionamiento más largos y una sobrecarga operativa adicional que, en última instancia, ralentiza los equipos de desarrollo.
La computación sin servidores intenta proporcionar una experiencia invisible “sin servidores” a los desarrolladores, lo que elimina la necesidad de pensar en los servidores o en algo que una aplicación podría necesitar para ejecutarse. En cambio, el proveedor de servicios hace todo el trabajo en segundo plano a fin de garantizar que tengas los recursos para ejecutar tu código y cumplir con los requisitos sin que se te cobre por la capacidad inactiva.
Esta analogía sencilla facilita la comprensión de cómo funciona la computación sin servidores
Piensa en el modelo sin servidores como llevar agua a tu casa. Podrías excavar bien, probar la calidad del agua e instalar y mantener todas las tuberías externas necesarias para llevarla a la casa. También puedes conectarte a la red principal de agua de tu ciudad. Solo debes abrir la llave y obtener la cantidad que quieras exactamente cuando la necesites, y la ciudad te enviará una factura mensual por la cantidad exacta de agua que consumas.
Del mismo modo, los proveedores de servicios en la nube inician automáticamente los recursos de infraestructura y los entornos de ejecución necesarios para ejecutar tus apps sin servidores y reducir la escala verticalmente a cero automáticamente cuando se complete la ejecución. Por lo general, se te cobrará en función de los recursos durante el tiempo de ejecución. Sin embargo, esto puede variar según el servicio y el proveedor.
Comparación entre la computación sin servidores y otros tipos de computación en la nube
Pero espera, ¿no hay otros tipos de computación en la nube que proporcionan recursos a pedido y con modalidad de pago por uso? Es cierto que los modelos de servicio en la nube, por ejemplo, infraestructura como servicio (IaaS) y plataforma como servicio (PaaS) también proporcionan acceso según demanda a los recursos de procesamiento.
Sin embargo, la infraestructura de nube que se te asignó permanece activa incluso si no la estás usando. También es tu responsabilidad escalar la capacidad del servidor o configurar tus aplicaciones para escalar verticalmente o reducir la escala en respuesta a la demanda del usuario.
Las arquitecturas sin servidores, por otro lado, se basan en eventos. Con este modelo, el proveedor solo te brinda recursos cuando un evento activa la ejecución de tu código y escalará instantáneamente y automáticamente a las solicitudes.
Ejemplos y casos de uso de computación sin servidores
En la computación en la nube sin servidores, suele haber dos tipos de servicios: la función como servicio (FaaS) y el backend como servicio (BaaS).
FaaS proporciona los recursos de procesamiento necesarios para ejecutar la lógica de la aplicación en respuesta a las solicitudes Estas piezas lógicas (o funciones) se ejecutan en contenedores completamente administrados por el proveedor de servicios en la nube. Por lo general, las aplicaciones sin servidores se dividen en funciones únicas que realizan una acción en respuesta a un evento.
BaaS proporciona toda la funcionalidad de backend de las aplicaciones web o para dispositivos móviles como servicio, como servicios de autenticación, administración de bases de datos, almacenamiento en la nube, notificaciones push y hosting. BaaS también quita la necesidad de administrar servidores, contenedores o máquinas virtuales.
Durante el desarrollo, el término “sin servidores” suele usarse para describir las ofertas de FaaS. Sin embargo, es importante tener en cuenta que FaaS es técnicamente un subconjunto de tecnología sin servidores. La computación sin servidores incluye cualquier tipo de servicio en el que la administración, la configuración, el escalamiento y la facturación del servidor se abstraen del usuario final. Esto puede incluir bases de datos, almacenamiento, transmisión de eventos, mensajería y puertas de enlace de API.
En general, la computación sin servidores se sigue usando principalmente para tareas simples y de corta duración. Estos son algunos de los ejemplos de computación sin servidores más comunes:
- Integración en APIs y servicios de terceros
- Ejecutar tareas programadas (por ejemplo, informes diarios, copias de seguridad o lógica empresarial)
- Automatización de procesos de TI, como quitar acceso automáticamente, iniciar verificaciones de seguridad de cumplimiento o enviar aprobaciones
- Procesamiento de datos en tiempo real para datos estructurados y no estructurados
- Automatizar las canalizaciones de integración y entrega continuas (CI/CD)
- Backends de la API de REST
- Acciones basadas en activadores o ejecución de tareas programadas (por ejemplo, informes diarios, copias de seguridad o lógica empresarial)
- Procesamiento asíncrono
- Notificaciones programadas o en tiempo real
Ventajas de la computación sin servidores
Mayor productividad de los desarrolladores
Los desarrolladores que usan la tecnología sin servidores se enfocan en escribir código y optimizar la lógica empresarial en lugar de preocuparse por el aprovisionamiento, la administración o el escalamiento de la infraestructura.
Escalabilidad lista para usar
Las arquitecturas sin servidores aumentan o reducen la escala de forma inherente. A diferencia del ajuste de escala automático en otros tipos de computación en la nube, que requiere reglas de ajuste, el ajuste de escala automático sin servidores es instantáneo y puede reducirse a cero.
Precios flexibles
Los modelos de precios sin servidores suelen cobrarse en función del uso real y el tiempo que lleva ejecutar una función. Tampoco debes pagar por la capacidad inactiva, lo que ayuda a reducir los costos operativos asociados con la ejecución y la administración de tus propios servidores.
Implementación más rápida
Con la tecnología sin servidores, los equipos de DevOps no tienen que dedicar tiempo a definir la infraestructura necesaria para la integración, la prueba, la entrega ni la implementación de código. Tan solo escriben y se implementan en producción.
Usa cualquier lenguaje
Los entornos sin servidores admiten cualquier lenguaje o framework, lo que permite que los equipos desarrollen en el lenguaje o con el framework (Go, Python, Java, Node.js, .NET y más) que más les acomode.
Desventajas de la computación sin servidores
Una de las mayores desventajas de la computación sin servidores es que sigue siendo una tecnología relativamente nueva. Como resultado, aún no es adecuado para todos los casos de uso posibles.
Además, la naturaleza efímera intencional de la computación sin servidores y su capacidad de reducir la escala a cero la vuelven inadecuada para ciertos tipos de aplicaciones. No está diseñado para ejecutar código durante largos períodos y no siempre puede entregar aplicaciones con requisitos estrictos de baja latencia, como aplicaciones de servicios financieros.
Por último, pero no menos importante, la entrega de la administración de todos los recursos de procesamiento a un proveedor de terceros también puede tener varias desventajas. Si bien te ahorra tiempo para enfocarte en el código, también puede ser difícil migrar a un nuevo proveedor de servicios en la nube. Tampoco tienes visibilidad de dónde o cómo se ejecuta tu servicio, y tienes control limitado sobre cómo realizar el escalamiento, en qué tipo de código de hardware se ejecuta y en qué situaciones de recuperación ante desastres.
Sin embargo, hay muchos aspectos similares a la computación sin servidores, especialmente para las organizaciones que buscan ayudar a los desarrolladores a moverse más rápido y buscar una forma más simple y rentable de compilar aplicaciones basadas en la nube.
También está claro que algunas de las debilidades actuales que existen se resolverán con el tiempo a medida que la computación sin servidores continúe evolucionando. En particular, ya se está trabajando en implementaciones de código abierto de servidores sin servidores y en la búsqueda de formas de hacer que los servicios en la nube sean más abiertos a fin de que las soluciones sean portátiles entre diferentes plataformas y entornos.