La automatización de procesos, operaciones y tareas está llevando el uso de la computación en la nube a nuevos niveles con los servicios de serverless computing, ya disponibles en Costa Rica.
El serverless computing es una modalidad de computación en la nube y no significa que se dejen de usar servidores.
El proveedor del servicio es quien gestiona equipos, infraestructura y sistemas operativos. Cuenta con un nivel de automatización para provisionar esos recursos computacionales cuando los requiere el cliente y para dejar de brindarlos cuando se dejan de utilizar.
Cada empresa cliente lo que hace es desarrollar las aplicaciones.
“El cliente no tendrá que preocuparse por darle mantenimiento, ni gestionar, ni por la disponibilidad, ni la escalabilidad de sus aplicaciones”, recalcó Tania González, líder regional y en Costa Rica de servicios en la nube de IBM.
La arquitectura sin servidor o serverless es un enfoque para que los desarrolladores o las empresas se centren en el código de las aplicaciones, lo que facilitaría disminuir el tiempo de comercialización, los costos operativos y la complejidad de los sistemas.
“Hablamos de una arquitectura que es posible precisamente gracias a los avances que se generan por cloud computing”, explicó Erick Sosa, director de soluciones en la nube para Microsoft Latinoamérica.
La nube o cloud computing se ha convertido en una herramienta clave para usar nuevas tecnologías como inteligencia artificial, Internet de las cosas y analítica, a través de sus modalidades de servicios en software (Saas), plataformas (PaaS) e infraestructura (IaaS).
Ahora se da un paso adicional como Function as a Service (FaaS), pues se modelan los componentes de las aplicaciones web, apps y servicios móviles, Internet de las cosas, procesamiento de datos y chatbots, entre otros, como funciones independientes.
Las empresas aceleran el desarrollo de estas funciones y reducen sus requerimientos de tener infraestructura propia, pues al construir estas aplicaciones recurriendo al serverless computing no se necesita manejar, administrar o controlar ningún servidor.
Todo eso lo hace la compañía que provee el servicio, los cuales deben ser de alta disponibilidad, alta tolerancia a fallos y alta capacidad para ajustarse según los eventos o cargas identificadas por medio de temporizadores, los cuales se encargan de validar la necesidad inmediata.
El objetivo también es automatizar operaciones en los departamentos de tecnología de información, con lo que el personal no tendrá que pensar en servidores, parches o actualizaciones. Así puede dedicarse a diseñar y desarrollar proyectos de digitalización.
Según Gartner el serverless es usado actualmente por un 5% de las grandes corporaciones, pero se espera que en el 2020 se cuadruplique.
Para usar
El serveless computing es una modalidad de computación en la nube, pero se diferencia de los servicios ya convencionales de IaaS, PaaS e IaaS por la capacidad de proporcionarlos de forma dinámica y por tener costos según el tiempo de uso de las funciones.
En el serverless el código de las aplicaciones o funciones se escribe en “ambientes de ejecución” en los servidores administrados por firmas como Amazon, Google, Microsoft o IBM a través de servicios como AWS, Cloud Functions, Azure Functions y OpenWhisk Actions, respectivamente.
El ambiente de ejecución –como cuando se ve una línea de comandos de un sistema– ejecuta cada función que solicita el usuario, asignando automáticamente la potencia y los recursos de cómputo, almacenamiento y memoria necesarios.
En los servicios ya convencionales de nube la asignación de recursos es manual y el pago es mensual o anual, independientemente de si se utiliza o no la capacidad provista. Además, el departamento de tecnología de la empresa cliente se encarga de la gestión de los recursos.
Con serverless no hay que preocuparse de toda esa infraestructura. Tampoco hay que invertir en el mantenimiento, operación (instalar software, abrir o cerrar puertos, actualizaciones) de la infraestructura ni en el clúster de servidores o en que hay que estar balanceando las cargas entre los equipos.
Amazon Web Services (AWS) recalca que con serverless se pueden crear prácticamente cualquier tipo de aplicación o back end (servicio de procesamiento). Además, las empresa puede administrar todo lo necesario para ejecutar y escalar la aplicación con alta disponibilidad
Adrián Orozco, director de cátedra de la Universidad Cenfotec, recalcó que aquí sólo hay que preocuparse por el código que se está ejecutando.
Únicamente se paga por las funciones utilizadas o se ejecuta en caso de eventos predefinidos, se ajustan o escalan los servicios según la demanda y no hay costos por recursos alquilados ociosos.
Esta modalidad del serverless mejora así la productividad al facilitar la creación de aplicaciones con más rapidez.
Con serverless se simplifica el desarrollo utilizando metodologías ágiles y se reduce el tiempo y despliegue de las aplicaciones.
Hay empresas que migraron de servicios convencionales de cloud computing a serverless y reportan que sus costos se redujeron a una tercera parte.
En serverless también se automatizan las tareas de aplicación de parches, copias de seguridad, protección y bases de datos, así como se pueden integrar las funciones de distintos servicios con más facilidad.
Con la informática sin servidor se proporciona disponibilidad prediseñada y tolerancia a errores. AWS indica que el cliente no tiene que diseñar estas capacidades ya que, en los servicios que ejecutan la aplicación, se les proporciona de forma predeterminada.
Cuidados
Serveless, sin embargo, no es para los débiles de corazón. Tampoco es para empresas que planean implementar aplicaciones a gran escala o de larga ejecución.
Al depender del servicio de un proveedor es difícil introducir cambios de plataforma o proveedor y se está sujeto a la disponibilidad del servicio. Además, los costos pueden cambiar y las implementaciones de FaaS pueden no ser compatibles entre sí.
Un riesgo es que los proveedores ejecuten aplicaciones de varios clientes diferentes en el mismo servidor, generando errores o problemas de seguridad.
Se advierte también que no hay estándares para este tipo de servicios, por ahora son pocos los lenguajes y el monitoreo de múltiples funciones es más complicado.
La arquitectura de las aplicaciones también debe ser pensada desde el inicio para este tipo de computación, al menos algunos de sus componentes, y se debe tener suficiente flexibilidad para soportar enormes cargas de trabajo.
Incluso hacer una migración a serverless a menudo requiere volver a diseñar las aplicaciones o intercambiar componentes de los sistemas, como las bases de datos, lo que puede implicar inconvenientes y costos mayores a los esperados.
Otro inconveniente es que puede presentarse cierta lentitud en la respuesta de los servicios cuando se tiene algún tiempo de no utilizar una función. También se advierte que cada proveedor proporciona diferentes métodos para iniciar las funciones.
Además, hay servicios que no brindan herramientas para hacer pruebas.
El serverless computing no es para cualquier tipo de servicio. Se debe elegir la tecnología, el servicio y la aplicación a desarrollar que tenga más sentido para la empresa, de acuerdo a las competencias del personal con que se cuenta.
Dependiendo de la carga computacional de una aplicación, el costo total de propiedad de un servicios serverless puede ser similar al de una computadora virtual.
Para evitar este problema, los desarrolladores o empresas deben tener una estrategia para diseñar las aplicaciones en módulos y evitar funciones de gran tamaño y complejidad.
Por supuesto, las empresas deben garantizarse que el proveedor elegido brinde un servicio de alta disponibilidad, soporte, seguridad, velocidad, escalabilidad, compatibilidad entre plataformas y estabilidad, así como que se adecue a las necesidades y demandas de uso.
En todo caso, el modelo es particularmente beneficioso para enfocarse en desarrollar aplicaciones, compartimentadas en pequeños componentes, módulos o funciones independientes y no tener que administrar infraestructura.