El ‘serverless computing’ es un modelo o servicio de computación cloud autogestionado que cada vez gana más terreno en las organizaciones de todos los tamaños, desde startups hasta grandes empresas. Solo el pasado año, su uso llegó a triplicarse a nivel mundial. Pero ¿Qué hace tan atractiva esta apuesta tecnológica? ¿Por qué es una oportunidad para el canal TI?
Según el análisis de MarketsandMarkets, se estima que el tamaño del mercado ‘serverless computing’ crecerá a nivel mundial desde los 7.600 millones de dólares que supuso en 2020, hasta los 21.100 millones en 2025.
Y es que, si inicialmente, la definición del modelo ‘serverless’ se limitaba a las aplicaciones que dependen de servicios de terceros en la nube, ahora se define mediante contenedores informáticos y se modela para una solución impulsada por eventos. Un modelo en el que el proveedor de la nube ejecuta el servidor y lo gestiona asignando y adaptando los recursos de acuerdo a las necesidades de la organización.
AWS Lambda es un claro ejemplo de esta modalidad gracias al empleo del modelo de funciones como servicio (FaaS) de computación en la nube. FaaS proporciona una plataforma que permite a los desarrolladores ejecutar código en respuesta a eventos sin la complejidad de construir y mantener la infraestructura.
Por lo tanto, a pesar del nombre «sin servidor», sí requiere que los servidores ejecuten código. El término sin servidor significa que la organización o persona no necesita comprar, alquilar o aprovisionar servidores o máquinas virtuales para desarrollar la aplicación.
Siempre hay un servidor en algún lugar, pero de eso se encargan los proveedores cloud que son los encargados de gestionarlos de forma automatizada.
‘Serverless computing’ permite un uso real de los recursos por los que se paga
No en vano, estamos asistiendo a un movimiento creciente a la hora de llevar todos los requerimientos de ‘backend’ relacionados con el aprovisionamiento y la gestión del servidor hacia proveedores en la nube que se preocupan del aprovisionamiento, la seguridad, el almacenamiento y todo lo que esté relacionado. De esta forma, los desarrolladores solo tienen que preocuparse por la aplicación en sí.
Esto ha llevado a que el ‘serverless computing’ haya ganado terreno entre las organizaciones de todos los tamaños, desde nuevas empresas nativas en la nube hasta grandes compañías de todos los sectores. Algo que les resulta más beneficioso, ya no solo porque el proveedor se encarga de la gestión de los recursos necesarios para que la organización pueda desarrollar tareas determinadas, sino también porque se trata de una relación basada en el pago por un uso real de dichos recursos.
Desde tareas de ejecución corta hasta aplicaciones orientadas al usuario, la tecnología ‘serverless’ impulsa una amplia gama de casos de uso. AWS Lambda es la oferta de función como servicio (FaaS) más madura y ampliamente utilizada, pero también vemos un crecimiento impresionante en la adopción de Azure Functions y Google Cloud Functions.
Todas ellas son plataformas cuyas funciones permiten ejecutar una aplicación o código sin la necesidad de almacenar los datos, que residen en los servidores del cliente o en el propio proveedor cloud. No obstante, hay que tener en cuenta que también existen bases de datos ‘serveless’ diseñadas para agilizar la ejecución de aplicaciones como Azure Data Lake o Google Cloud Datastore.
Actualmente, el ecosistema ‘serverless’ ha crecido más allá de FaaS para incluir docenas de servicios que ayudan a los desarrolladores a crear aplicaciones más rápidas y dinámicas. Por ejemplo, una cuarta parte de los usuarios de Amazon CloudFront ha adoptado ‘edge computing serverless’.
De este creciente protagonismo queda constancia en un reciente estudio publicado por Datadog sobre las tendencias en el uso del ‘serverless’ basándose en datos de millones de funciones ejecutadas por miles de empresas de su base de clientes.
El uso de ‘serverless’ ha crecido 3,5 veces más que hace dos años
El estudio constata un crecimiento continuo en AWS Lambda, Azure Functions y Google Cloud Functions. Un crecimiento de hasta 3,5 veces más que hace dos años. Según se desprende de los datos obtenidos, hoy en día, los equipos no solo experimentan con esta tecnología ‘serverless’, sino que lo convierten en una parte fundamental de sus pilas de software.
Así, la investigación apunta que las empresas que han estado usando Lambda desde 2019 han aumentado significativamente su uso. Además, si observamos el grupo de usuarios de Lambda, las funciones de cada organización se ejecutaron durante una media de 900 horas al día.
En este contexto, otra tendencia que se vislumbra es que Lambda se utiliza cada vez más para impulsar aplicaciones orientadas al cliente que requieren baja latencia, algo que desde Datalog señalan como posible explicación por el hecho de que cada vez más organizaciones diseñan funciones para que sean muy específicas para sus cargas de trabajo, lo que ayuda a reducir la duración de las invocaciones. Por lo tanto, Lambda no solo está impulsando trabajos de corta duración, sino también casos de uso más intensivos en computación.
Junto a este crecimiento de AWS Lambda como la oferta ‘serverless’ más madura y ampliamente utilizada, el estudio destaca un fuerte impulso de Azure Functions y Google Cloud Functions, que han experimentado un crecimiento en la adopción dentro de sus respectivas plataformas cloud.
El año pasado, la proporción de organizaciones de Azure que ejecutaron Azure Functions aumentó del 20% al 36%. En Google Cloud, casi una cuarta parte de las organizaciones ya utiliza Cloud Functions. Y es que, si bien Google ha estado en el espacio ‘serverless’ / FaaS desde hace más de una década, comenzando con Google App Engine, hoy el impulso está cambiando hacia las ofertas ‘serverless’ más nuevas de Google, como Cloud Functions y Cloud Run.
Otro referente del impulso que está experimentando ‘serverless’ es la adopción de proyectos de infraestructura como código de código abierto, como Serverless Application Framework y AWS Cloud Development Kit. Según Datalog, solo con Serverless Framework, las descargas crecieron de 12 millones en 2019 a 25 millones en 2020.
En los últimos años, y especialmente por parte de administraciones públicas, también estamos asistiendo un creciente interés por el uso de ‘serverless’ de código abierto, como Linux, Kubernetes y Ansible. Se trata de una tendencia al alza aunque aún se sigue confiando mucho en los modelos tradicionales de aprovisionamiento de infraestructura estática para soportar aplicaciones cada vez más dinámicas.
Sin embargo, es un enfoque puede no tener mucho sentido en el mundo actual basado en la nube, el uso intensivo e datos e impulsado por eventos.
Si bien las infraestructuras de servidores tradicionales siguen siendo adecuadas para algunas cargas de trabajo, la necesidad de una mayor eficiencia y agilidad está cambiando las preferencias. Los servidores tradicionales tienden a estar siempre encendidos y funcionando a plena capacidad las 24 horas del día, los 7 días de la semana, incluso si solo tienen que manejar picos ocasionales de capacidad. Sin duda, algo muy contraproducente para la eficiencia.
Además, los servidores tradicionales requieren que los desarrolladores comprendan sus requisitos de infraestructura de antemano, lo cual no es algo de lo que los desarrolladores quieran preocuparse ya que prefieren centrarse en el desarrollo acelerado, no en componentes y configuraciones de hardware.
El ‘serverless computing’ está contribuyendo a aliviar estos desafíos. Si bien no es un concepto nuevo, es una opción tecnológica que sigue estando un tanto infrautilizada e incomprendida, sobre todo en el espacio de las administraciones públicas, las cuales deberían sopesarlo todavía más, especialmente las que utilizan contenedores para el desarrollo de aplicaciones.
Por eso, tanto si hablamos de ‘serverless’ de código abierto como propietario, es importante dar mayor visibilidad a cómo las organizaciones pueden maximizar sus recursos con este modelo, tanto desde la perspectiva tecnológica como humana, y por qué el código abierto ofrece un complemento ideal para el desarrollo de aplicaciones modernas.
Se trata de un concepto nativo de la nube que permite subcontratar la gestión de los servidores, bases de datos e incluso la lógica de la aplicación a una plataforma o proveedores la nube. En un entorno informático ‘serverless’, los desarrolladores pueden crear y ejecutar aplicaciones libremente sin tener que preocuparse por sus infraestructuras tecnológicas subyacentes. Los desarrolladores simplemente necesitan empaquetar sus aplicaciones en contenedores e implementarlas.
Ser capaz de empaquetar aplicaciones dentro de un contenedor es especialmente importante cuando se trata de sistemas monolíticos o heredados, porque las aplicaciones no tienen que ser reescritas.
El empaquetado de aplicaciones heredadas en contenedores permite que esas aplicaciones sean orquestadas por Kubernetes y gire hacia arriba o hacia abajo según la demanda, de una manera impulsada por eventos.
Con ‘Serverless computing’ los servidores funcionan según sea necesario
De hecho, un modelo impulsado por eventos es uno de los otros beneficios principales de ‘serverless computing’. En lugar de una arquitectura que siempre está encendida, que funciona a toda velocidad cada minuto del día, los recursos solo se utilizan cuando es necesario.
‘Serverless’ también es útil para iniciativas de ciencia de datos, incluidas cargas de trabajo de inteligencia artificial y aprendizaje automático. En tales casos, es posible que sea necesario transformar o dar forma a los datos sin procesar en el punto de ingestión. Con ‘serverless computing’, estas cargas de trabajo no necesitan estar ejecutándose todo el tiempo. Los servidores pueden funcionar según sea necesario solo a medida que se ingieren los datos.
Es probable que las empresas con equipos de DevOps, o un enfoque de desarrollo basado en contenedores, ya hayan invertido en un ecosistema de código abierto. Para ellos, tiene sentido complementar los enfoques de desarrollo actuales con un modelo ‘serverless’ de código abierto que respalde el trabajo que ya están haciendo de una manera más productiva y eficiente.
De esta forma pueden continuar empaquetando los flujos de trabajo existentes en contenedores sin tener que preocuparse por la solución en sí. Las tecnologías de código abierto también pueden aliviar la necesidad de conjuntos de habilidades especializadas o capacitación adicional.
Si bien muchas plataformas informáticas patentadas ‘serverless’ requieren herramientas adicionales, como por ejemplo una base de datos sin servidor, los equipos que trabajan con soluciones de código abierto no tienen que aprender continuamente nuevos procesos o tecnologías de flujo de trabajo.
La plataforma ‘serverless’ proporciona una clara separación entre los servicios de infraestructura y las aplicaciones que se ejecutan. La funcionalidad de escalado automático de FaaS no solo reduce el coste sino que también reduce los gastos generales de gestión operativa.
De esta forma, los ingenieros de sistemas y los SER, aquellos que se ocupan de los aspectos de ingeniería de software aplicada a las operaciones TI, pueden concentrarse en gestionar y ejecutar la plataforma subyacente y los servicios centrales, como las bases de datos y los balanceadores de carga, mientras que los ingenieros de producto gestionan las funciones que se ejecutan en la parte superior de la plataforma.
En comparación con la implementación de un servidor completo, empaquetar e implementar una arquitectura FaaS es bastante más simple ya que ‘serverless’ no requiere de una integración continua o alimentación permanente, por lo que no requerirá gestión del sistema.
Otro de los grandes beneficios de ‘serverless computing’ es que los ingenieros de productos pueden innovar a un ritmo rápido, ya que la arquitectura alivia los problemas de ingeniería de sistemas en la plataforma subyacente. Por lo tanto, menos tiempo para las operaciones se traduce en una aplicación fluida de DevOps y metodologías ágiles.
En consecuencia, la innovación en estos entornos adquiere mayor velocidad.
De manera similar a como ocurre con IaaS (infraestructura como servicio) y PaaS (plataforma como servicio), la reducción de costes de infraestructura y recursos humanos es la ventaja básica de la apuesta por ‘serverless’. En ella se paga por los servidores gestionados, las bases de datos y la lógica de la aplicación.
AWS Lambda factura solo el tiempo en que se llama a la función. Como resultado, el coste de ejecutar las funciones de FaaS Lambda puede ser un 95% menor que ejecutar un servidor durante todo un mes con el contenedor. Ahora, los servicios que alquilaban servidores en AWS y costaban miles de dólares se han reducido a menos de 10 dólares. Los ahorros pueden ser, por tanto, muy importantes.
La ventaja básica de esta tecnología es que solo se paga por el tiempo que se ejecuta su función y los recursos que necesita para ejecutarse. Asimismo, el coste de mantenimiento también supone otro ahorro al no tener que gestionar ningún servidor si tener que instalar sistema operativo o software de soporte alguno.
Y otro de los beneficios que cabe subrayar es su alta disponibilidad incorporada, sin necesidad de tener que disponer de una infraestructura especializada para que las aplicaciones estén altamente disponibles.
No obstante, las aplicaciones sin servidor pueden escalar de forma sencilla, bien sea automáticamente o con la necesidad de pocos pasos para elegir la capacidad necesaria.
A medida que crece la adopción de ‘serverless computing’, son cada vez más evidentes los beneficios que aporta a las organizaciones a nivel de ahorros en costes y para una mayor optimización de recursos como hemos visto.
Sin embargo, se trata de un modelo que aún tiene mucho camino por recorrer y salvar importantes obstáculos para su adopción. Entre otros, los problemas derivados del control del proveedor, de tenencia múltiple o las preocupaciones relacionadas con la seguridad por el uso del APIs de terceros.
Es necesario reducir la complejidad arquitectónica en ‘serverless’
Cambiar de proveedor en una arquitectura ‘serverless’ puede ser un poco complicado ya que, mientras cambia, será necesario actualizar herramientas, código y diseño.
También la falta de herramientas operativas es otro de los aspectos a mejorar, ya que los desarrolladores dependen de los proveedores para las herramientas de depuración y supervisión. Además, es preciso disminuir la complejidad arquitectónica, tanto de los microservicios como de las arquitecturas ‘serverless’.
Estamos en una etapa aún incipiente del desarrollo de este modelo, teniendo en cuenta el enorme potencial y recorrido que se espera que él. Tener en consideración todos estos aspectos, sopesar los beneficios que puede aportar y trabajar para salvar las barreras que impiden una adopción más masiva será algo que los expertos esperan ver en los próximos años hasta que se convierta en una tendencia generalizada.
Imagen inicial | Israel Palacio