Serverless (o informática serverless) es un modelo de desarrollo y ejecución de software en que el proveedor de cloud es responsable por ejecutar un código (o función) asignando los recursos de forma dinámica, lo que permite a los desarrolladores crear códigos sin preocuparse por las tareas operativas, como el aprovisionamiento de infraestructura o la configuración de red. Por cierto, el término “serverless” se debe apenas al hecho de que los servidores son “invisibles” para el desarrollador.
Tradicionalmente, las aplicaciones web se construyen y despliegan en un servidor gestionado por la propia empresa. Y si bien se tiene más control sobre los recursos de infraestructura bajo este tipo de enfoque, esto también implica una serie de responsabilidades para ella que influyen sobre los costos, el desempeño y la productividad, tales como:
- la necesidad de tener el servidor en el aire incluso estando ocioso;
- realizar el mantenimiento del servidor y todos sus recursos;
- aplicar actualizaciones de seguridad apropiadas;
- aprovisionar recursos de hardware para satisfacer las demandas.
Una excelente forma de eliminar tales dificultades es migrar a la tecnología serverless porque en ella todo lo relacionado con la infraestructura es responsabilidad del proveedor del servicio.
Con relación a los costos, las organizaciones consiguen reducirlos también gracias a que el serverless opera bajo un modelo de contratación en el que se paga según la cantidad de recursos informáticos que se consuman.
¿Cómo funciona la informática serverless?
La arquitectura serverless se compone de un conjunto de servicios que incluyen, entre otros componentes: FaaS (Function-as-a-Service, función como servicio), almacenamiento de bases de datos y objetos, transmisión de eventos y mensajería y puerta de enlace API. A continuación, exploraremos con detalle lo que hace cada uno de estos componentes.
Función como Servicio (FaaS)
FaaS es un servicio cloud que ejecuta código en respuesta a eventos o solicitudes que el desarrollador implementa sin interactuar con hardware físico. También es a través de este modelo de servicio que solo se paga cuando los recursos se utilizan realmente y la escala se realiza además automáticamente.
Base de datos y almacenamiento de objetos
Una base de datos serverless une a las funcionalidades de su estructura tradicional las características de la arquitectura serverless, tales como escalado automático bajo demanda, pago en función del consumo e infraestructura gestionada por el proveedor. El papel del almacenamiento de objetos es manejar grandes cantidades de datos no estructurados, algo que los enfoques tradicionales no pueden hacer.
Transmisión de eventos y mensajería
Transmisión de datos y la mensajería se ejecutan a través de plataformas distribuidas de transmisión de datos, como Apache Kafka. Aquí es donde se reciben y transmiten los eventos, tanto a la base de datos (donde se almacenan) como al servicio FaaS, a través del cual se activa el disparador para que cada función se invoque dentro de los parámetros de su respectiva solicitud –si hay algún fallo en esta etapa, el evento se guarda en una fila de almacenamiento para ejecutarse más tarde.
Puerta de enlace API
Una puerta de enlace API (o API gateway) actúa como un proxy inverso para aceptar todas las solicitudes destinadas a API. La autenticación de usuarios, el enrutamiento y la limitación de velocidad son ejemplos de tareas comunes realizadas por las puertas de enlace API, entre otras funciones de gestión importantes que en la arquitectura serverless hacen posible el aprovisionamiento de la infraestructura y proveen recursos para la integración e interconectividad vía API.
Pros y contras del serverless
Ahora que conocemos los componentes principales de la arquitectura serverless, ¿qué tal si exploramos más a fondo los pros y contras que deben considerarse a la hora de migrar a ella? Echa un vistazo a algunos de los principales.
Pros
Mayor productividad del desarrollador
El aumento de la productividad es uno de los principales beneficios del serverless. Imagina a tu equipo de desarrollo como una banda de músicos estando de gira. Si sus integrantes tienen que transportar e instalar ellos mismos los equipos antes de cada concierto, obviamente eso afectará a todo su trabajo, pero si la banda cuenta con el apoyo de un equipo de montadores podrán concentrarse apenas en actuar y eso mejorará el resultado final. Lo mismo ocurre con los desarrolladores, que con el serverless pueden enfocar todo su esfuerzo y talento en construir y gestionar sus aplicaciones, sin distraerse por cuestiones de hardware.
Experiencia de desarrollador
Si migrar al serverless supone un excelente paso para optimizar la experiencia del desarrollador (DX), ello también servirá para atraer y retener talentos en tu empresa. Para que tengas una idea de la importancia de esto, los estudios revelan que actualmente el 53 %[1] de los profesionales del área priorizan la DX a la hora de analizar una oportunidad laboral.
Además de liberar al desarrollador de la necesidad de interactuar con la infraestructura, la informática serverless permite que las implementaciones y actualizaciones de software se realicen rápidamente, ya que no es necesario ejecutar cambios en toda la aplicación, sino simplemente actualizar cada función de forma individual y por separado.
Pago por uso
A diferencia de otros modelos de servicios informáticos, en el modelo de pago por uso (o pay-as-you-go) aplicado al serverless el costo comienza a calcularse cuando se crea una solicitud y termina al completarse su ejecución. Si no llegan solicitudes al servidor, el cliente no paga absolutamente nada.
Microservicios
En la informática serverless, en lugar de aplicaciones monolíticas los desarrolladores crean microservicios compuestos por funciones que realizan una sola tarea de forma individual e independiente. Algunos de los beneficios de los microservicios son:
- tolerancia a fallos;
- ciclos de desarrollo más cortos;
- facilidad de implantación;
- reutilización de código.
Obtén más información sobre los microservicios y cómo se diferencian de las arquitecturas monolíticas en nuestro post Aplicaciones monolíticas versus microservicios.
Contras
Dependencia del proveedor
La dependencia del proveedor (o vendor lock-in) representa un contrapunto a las ventajas del serverless. Si por un lado los desarrolladores pueden enfocarse en lo que mejor saben hacer, que es crear código, por otro algunos proveedores no ofrecen plataformas con estándares abiertos, de modo que el equipo tiene que reescribir total o parcialmente sus códigos para implementar un mismo servicio en otro proveedor.
Monitoreo y depuración
La arquitectura de microservicios facilita la construcción de aplicaciones altamente complejas, pero si un equipo no cuenta con soluciones que faciliten el monitoreo y depuración de fallos o vulnerabilidades en las aplicaciones, esa misma complejidad se convertirá en una desventaja.
Latencia
Una de las principales desventajas de la tecnología serverless es la latencia resultante de un proceso conocido como arranque en frío. Aprende más sobre la relación entre el arranque en frío y la tecnología serverless en este artículo. Ello sucede cuando una función se inicia desde cero para cumplir con una solicitud, lo que genera una caída del desempeño y un retraso en la ejecución que comprometerá la experiencia del usuario.
Afortunadamente, la informática serverless ha avanzado considerablemente en los últimos años hasta el punto de que todas estas limitaciones, derivadas de cloud computing, ya no son un obstáculo. A continuación, hablaremos de serverless en su forma evolucionada: edge serverless.
¿Qué es Edge Serverless?
Cuando hablamos del futuro digital y todo lo que va a exigirles a las aplicaciones web, hay que pensar en cómo llevar la informática serverless al siguiente nivel, porque cloud computing en sí tiene limitaciones que se van haciendo más evidentes a medida que las aplicaciones se modernizan. Para dar este paso adelante, las organizaciones están complementando sus infraestructuras cloud con edge computing.
Básicamente, edge computing lleva la informática lo más cerca posible de los dispositivos finales, que pueden ser de muchos tipos, como por ejemplo smartphones o sensores de IoT. Así, edge serverless consiste en ejecutar funciones serverless en una infraestructura de edge, que es altamente distribuida, algo especialmente importante, por ejemplo, para las aplicaciones de misión crítica, pues tienen que ofrecer mejor desempeño, máxima disponibilidad y niveles mínimos de latencia.
La Plataforma de Edge Computing de Azion permite la implementación de códigos serverless en una amplia red de edge. Además, gracias a su soporte para WebAssembly, los códigos pueden optimizarse mediante un conjunto de soluciones nativas de edge capaces de llevar el desarrollo de aplicaciones a los mejores niveles en términos de confiabilidad, desempeño, seguridad, disponibilidad y observabilidad. Puedes probar la plataforma gratis aquí.
Además de la posibilidad de crear aplicaciones de alto desempeño, el uso de edge serverless resulta en una infraestructura de TI expandida a escala global, es NoOps y tiene un costo significativamente menor en comparación con cualquier otro modelo informático. De hecho, el aumento de los ingresos obtenidos por la oferta de soluciones y servicios más rápidos tiende a superar fácilmente la inversión en el serverless tradicional, ya que actualmente el 59 %[2] de los clientes están dispuestos a pagar más por una experiencia excelente.
¿Cómo ayuda Azion a los desarrolladores a aprovechar del mejor modo la informática serverless?
La Plataforma de Edge Computing de Azion permite que las organizaciones disfruten solo de las ventajas de la informática serverless, obteniendo con ello grandes aumentos de desempeño. Una de las razones de esto es nuestra red de edge distribuida globalmente, que incluso cubre regiones donde la infraestructura de red es hostil, de difícil acceso, al garantizar la entrega de solicitudes con alto desempeño en cualquier lugar.
Además de permitir la implementación de aplicaciones serverless con niveles de latencia ultrabajos, Azion utiliza estándares abiertos que pueden integrar su plataforma con cualquier proveedor de cloud, lo que elimina el problema del vendor lock-in que presentan muchos proveedores serverless. Por lo tanto, si tu empresa utiliza multicloud, tu equipo recibirá sus beneficios, al permitirte desarrollar aplicaciones con mayor rapidez.
Finalmente, nuestra plataforma ofrece un conjunto de soluciones de observabilidad que facilitan en gran manera el monitoreo de aplicaciones porque proporcionan datos de eventos muy detallados y que se pueden transmitir directamente a tu plataforma de análisis en tiempo real. Ve cómo GetNinjas, el mayor sitio web de contratación de servicios de América Latina, alcanzó resultados únicos con Azion.