Serverless es el nombre con el que se identifica a una arquitectura basada en la nube, donde un proveedor de servicios en la nube adquiere las responsabilidades de ejecución, distribución y escalabilidad de los recursos para ejecutar tu código.
A pesar de que el nombre se traduce como “sin servidores” ésta referencia se entiende más como la no responsabilidad por administrar estos servidores que la no existencia de éstos servidores, en otras palabras, sí hay servidores, pero éstos se adquieren como un servicio de ejecución en la nube.
Esta arquitectura ofrece muchas ventajas, una de ellas es la que permite a los proveedores en la nube alocar dinámicamente los recursos necesarios para la ejecución de tu código, alocando más cuando la demanda incrementa y menos cuando se reduce, haciendo que el costo de ejecución sea solo el que tu aplicación necesita. Algunas otras ventajas pueden ser:
- Actualizaciones y parches de seguridad son responsabilidad del proveedor
- Alto rendimiento y aprovechamiento de los recursos de hardware
- Menor latencia gracias al uso de redes de distribución
- Integración de extensiones del proveedor en la nube
- Deploys automatizados
- Integración con otros proveedores
- Reporte de errores y logs
- Entre otros
Entre los productos que un proveedor en la nube ofrece para que tu aplicación funcione sin la administración de un servidor tenemos:
- Ejecución de código en la nube (funciones cloud)
- Hosting en redes de distribución en la nube (CDN)
- Bases de datos como servicio
- APIs existentes
- Extensiones e integraciones con otros servicios
- Detección de errores y fallas críticas de la aplicación
- Entre otros
Proveedores como AWS, Azure, Google Cloud, Netlify, Firebase, entre otros, ofrecen estos y otros productos para que tu aplicación funcione sin que tengas que pensar en dónde va a funcionar o cómo se va a distribuir.
Cabe mencionar, que así como existen numerosos beneficios, algunas desventajas también han sido identificadas con este esquema, principalmente el llamado vendor-lock, una referencia a la alta integración y cohesión entre el funcionamiento de tu aplicación y el proveedor en la nube. Esta integración hace que cambiar o eliminar al proveedor significa en muchas ocasiones tener que reescribir por completo la app.