Apoyándose en las ventajas que aportan las arquitecturas cloud, serverless es una nueva forma de construir y desplegar aplicaciones. Habilita su ejecución a través de contenedores efímeros, anónimos, que se generan cuando se pone en marcha la aplicación, lo que redunda en una reducción de costes. Además, ayuda a simplificar el ciclo completo de desarrollo y los despliegues continuos, para que el desarrollador se despreocupe de la gestión de la infraestructura y se centre en la funcionalidad.

La tecnología serverless está atrayendo la atención del mercado de forma decidida, especialmente por su capacidad para permitir una mayor rentabilidad y eficiencia de las implementaciones en la nube. Esta tendencia ha sido diseñada para reducir el coste total de ejecutar aplicaciones en la nube, ya que se generan costes tan solo por la ejecución de una llamada de función única. Además, permite al desarrollador centrarse únicamente en el código y evita la necesidad de tener que preocuparse por servidores y middleware permanentes, por las gestiones del tráfico de red o por otros muchos temas relacionados con la infraestructura; este modelo permite aislar al desarrollador y le evita la necesidad de tener que preocuparse por todo lo anterior.

Aunque hay ya algunas empresas que han introducido entornos serverless, se trata de una tecnología que aún está en crecimiento en lo que respecta a llegar a convertirse en norma empresarial. Es posible que vaya ganando importancia poco a poco, especialmente ahora que los principales proveedores en la nube ofrecen un servicio serverless y soluciones open source sin servidor, como sucede con OpenWhisk.

En cualquier caso, desde Red Hat detectamos cierto interés en algunos casos prácticos muy interesantes, concretamente en aplicaciones periféricas que incluyen la transformación de imágenes gráficas de sitios web para su uso en aplicaciones móviles y plataformas móviles. Otros casos prácticos en esta línea que hemos observado incluyen el uso de esta tecnología para procesar anzuelos web (web hooks), programar tareas específicas y también introducir chatbots inteligentes en el tejido empresarial.

A medida que las tecnologías más nuevas y eficientes captan la atención en la empresa, el serverless puede llamar su atención desde la perspectiva económica y de rentabilidad, ya que permite usar los recursos de manera más efectiva, reduciendo el tiempo y dinero desperdiciados y permitiendo a los desarrolladores centrarse en el código y avanzar más rápido.

Esta tecnología también es altamente escalable y ofrece un alto nivel de concurrencia

Beneficios

De la misma forma que la práctica DevOps debería ser un requisito previo para los microservicios, antes de que se pueda adoptar la tecnología serverless, la empresa debe contar con un enfoque ágil y claro, que permita comprender y poder acceder a los beneficios derivados de este cambio rápido, así como una implementación ágil que pueda permitirlos.

Las aplicaciones empresariales son redes complejas de sistemas interactivos que, a menudo, se crean a lo largo de decenios con diferentes generaciones de tecnologías. La innovación que hay detrás de severless puede añadir algunas opciones muy interesantes para que los desarrolladores construyan, amplíen y mejoren estos sistemas. Aparte de los ahorros de costes y de la reducción del tiempo y recursos desperdiciados, esta tecnología también es altamente escalable y ofrece un elevado nivel de concurrencia. Además, su singular enfoque de uso ayuda a optimizar y priorizar tareas específicas.

De forma parecida a los contenedores, las funcionalidades serverless son adecuadas para proyectos de funcionamiento rápido y con un punto de entrada bajo, con poca sobrecarga. Por el contrario, es menos apropiada para tareas de larga ejecución, como pueden ser los análisis de riesgos, los sistemas CRM o aquellas tareas que requieran una cantidad significativa de memoria.

En resumen, el serverless es un modelo de ejecución más simple y puede ser una buena opción para servicios que tienen entradas y salidas muy restringidas, requisitos de recursos limitados (memoria, CPU, tiempo) que necesitan ejecutarse a escala y no requieren complejos flujos de eventos e información.

Actualmente, la tecnología serverless no es un modelo conveniente de programación multiuso y los desarrolladores deben entender dónde puede generar beneficios y dónde puede ser más apropiado el uso de otros enfoques.

Entre contenedores y estrategias en la nube

Serverless supone para la empresa un ejemplo claro y convincente de avance innovador dentro de un abanico más amplio, que va desde el hardware básico al dedicado o a la virtualización, pasando por la contenerización hasta llegar, finalmente, al serverless. También sirve para visualizar cómo esta tecnología difiere del resto de los modelos con los que el sector ha desarrollado y desplegado aplicaciones a lo largo de los años. En cualquier caso, sería un error interpretar todo esto dando por sentado que todo lo anterior ha sido reemplazado. Raramente hay transiciones limpias en la tecnología: la adopción por parte de la corriente principal suele ocurrir muchos años después de que los primeros usuarios se hayan pasado al barco.

Desarrollar una arquitectura basada en microservicios, utilizando contenedores y una capa de orquestación (y, en el futuro, un tejido de servicios como Istio), puede ofrecer mayor flexibilidad y control al desarrollador para definir cómo se implementa su aplicación y cómo se comporta en el tiempo de ejecución. Debajo de las coberturas, el proveedor de servicios serverless necesita realizar una compleja orquestación de los tiempos de ejecución del lenguaje, como la activación y pasivación, la precarga y el calentamiento, que ofrecen la ilusión de una ejecución instantánea y permiten bajas latencias. Normalmente, esa orquestación será administrada por un motor (p. ej., Kubernetes). Por tanto, el desarrollador serverless no tiene que pensar demasiado sobre el embalaje y la orquestación de contenedores, pero sí puede beneficiarse indirectamente de los avances en esta tecnología.

Claves

Aquellos que se inicien en un viaje serverless deben saber que aún se encuentra en las etapas iniciales de desarrollo convencional, por lo que habrá que pasar por diversos intentos de ensayo y error cuando se trate de los primeros proyectos. Si bien el servidor no está basado en las tecnologías y prácticas existentes, muchos de sus inquilinos principales serán completamente nuevos. Esta puede ser una buena oportunidad para que las empresas introduzcan innovaciones y amplíen su repertorio tecnológico. El serverless se basa en el código, no en la infraestructura o las operaciones, lo que constituye un cambio de pensamiento en sí mismo.

En este momento, muchos de los casos de uso observados son bastante simples (básicamente, consisten en entregar la ejecución de tareas a “funciones de “trabajador”). En cualquier caso, como el servidor no está arraigado en la empresa, y la orquestación serverless se va volviendo cada vez más madura, se espera que los casos de uso vayan siendo cada vez más complejos.