Entre las palabras de moda más recientes en el mundo de las TI, la computación sin servidor, a veces también llamada FaaS de “función como servicio”, acompaña a un nuevo e interesante enfoque para la construcción de software de aplicación que encaja muy bien con la naturaleza de los servicios en la nube.
Computación sin servidor, una definición concisa
La computación sin servidor se refiere a un modelo de desarrollo nativo en la nube que permite a los desarrolladores crear y ejecutar aplicaciones sin gestionar servidores, o mejor dicho, se utilizan servidores pero se abstraen del desarrollo de la aplicación. En la práctica, la computación sin servidor significa delegar la ejecución del código del lado del servidor a un proveedor.
¿Qué es la computación sin servidor o Faas?
Mientras que, por un lado, DevOps busca unir el desarrollo y las operaciones, FaaS y serverless mantienen ambas cosas diferenciadas, caracterizándose por una filosofía operativa basada en la ejecución de diferentes funciones en respuesta a eventos asíncronos que involucran fuentes de datos distribuidas.
Las aplicaciones sin servidor/Faas tienen hoy en día un gran potencial en la integración de muchos servicios periféricos o en la nube en los que, por ejemplo, hay que procesar las alertas automáticas de los sistemas IoT. Por otro lado, el enfoque aún parece inmaduro en las aplicaciones empresariales, aunque puede ser sólo cuestión de tiempo y madurez.
Desmitificar la computación sin servidor
Estos son los principales aspectos de un informe de Forrester de hace un tiempo titulado Demystifying serverless computing.
La tecnología sin servidor representa un paso adelante en el campo de los servicios en la nube, ya que puede acelerar el lanzamiento de aplicaciones en las que se requiere una gran capacidad de procesamiento “bajo demanda” en condiciones específicas. Ejemplos de computación sin servidor son hoy en día proporcionados por Amazon AWS Lambda, Google Cloud Foundation, Microsoft Azure Functions, Fx OpenWisk, así como proyectos de código abierto como Riff. El desarrollador no tiene que preocuparse por el aprovisionamiento, los servidores o las configuraciones de la infraestructura, sino sólo por crear funciones que puedan operar independientemente de las aplicaciones (la interacción está mediada por las API o los kits de herramientas de desarrollo). Dado que la lógica de ejecución no depende del estado de los sistemas, se puede iniciar un gran número de instancias en paralelo; cada servicio sin servidor se inicia y se detiene automáticamente bajo demanda, utilizando la potencia de procesamiento que necesita de forma transparente para los desarrolladores. La ejecución aislada, para ser útil, debe integrarse con las aplicaciones empresariales existentes y otros servicios que leen y escriben datos. Los eventos son el punto de conexión y al mismo tiempo el lenguaje de interacción característico de la lógica sin servidor.
Las ventajas de la computación sin servidor para las aplicaciones empresariales
El desarrollo en un entorno sin servidor sigue el de una arquitectura de software “débilmente acoplada” (en la que un módulo no depende de otros para funcionar) y ayuda a los desarrolladores a acelerar los lanzamientos y a adoptar el diseño de microservicios en la innovación de aplicaciones. Entre las principales ventajas empresariales asociadas a la lógica de los servicios sin servidor está el hecho de que el coste, medido en fracciones de céntimos, se calcula por ejecución de código, llevando al extremo el modelo de pago por uso de la nube y beneficiando, en particular, la experimentación y el prototipado. Aunque es posible utilizar el enfoque sin servidor con múltiples trabajos concatenados, los desarrolladores pueden explotar los eventos y la mensajería asíncrona para lanzar muchos procedimientos en paralelo, por ejemplo, cuando las funciones necesitan servir a un número desconocido de usuarios. Mientras que los desarrolladores pueden escribir código para “enganchar” funciones sin servidor con eventos, los proveedores de servicios ofrecen opciones prefabricadas para necesidades comunes, como el acceso al almacenamiento o la conexión de APIs populares.
El enfoque basado en eventos es funcional para arquitecturas distribuidas, es decir, servicios que operan en diferentes lugares y bajo diferentes autoridades. Según Forrester, cuando se utiliza correctamente, el enfoque sin servidor reduce los costes tanto del desarrollo como del uso de los servicios en producción. Esto se debe a que aumenta la velocidad de desarrollo del código y reduce la carga asociada al aprovisionamiento de recursos en las fases de creación de prototipos. La arquitectura es ideal para ampliar las aplicaciones existentes en nuevas direcciones, sobre todo cuando hay que integrar diferentes servicios web en trabajos complejos. Por ejemplo, puede utilizarse para recoger eventos y datos de las interacciones de los usuarios con los servicios en línea, fusionarlos con otros datos relevantes, procesarlos y luego devolver al usuario más información por correo electrónico o SMS. Otra posibilidad es el procesamiento de eventos del mundo real, como las averías de la maquinaria en una línea de producción o las alertas de emergencia. El modelo de costes de uso asociado a los servicios sin servidor es ideal cuando se necesita gestionar respuestas a eventos de frecuencia imprevisible, como las interacciones de los clientes o las alertas enviadas por los dispositivos IoT.
Los beneficios de la computación sin servidor para los desarrolladores
Como hemos mencionado, el enfoque sin servidor libera a los desarrolladores de la necesidad de gestionar la infraestructura, cuidando así el rendimiento más allá de los límites contractuales impuestos por el proveedor de servicios. El acceso al procesamiento bajo demanda resuelve las necesidades de potencia de cargas muy exigentes, como las simulaciones financieras y el análisis en tiempo real de grandes cantidades de datos. Los desarrolladores que ya han estado utilizando instancias en la nube pública para obtener una potencia de procesamiento más rápida y barata que los servicios de los centros de datos, encontrarán que los entornos sin servidor son mucho más eficientes y flexibles en su escalabilidad, con servicios pagados en función del uso y no por instancias inactivas a la espera de ser iniciadas. Según Forrester, el modelo es ideal para experimentar con nuevas aplicaciones dirigidas al público, o cuando es imposible predecir el éxito y, por tanto, la demanda de recursos. La arquitectura sin servidor ayuda a los desarrolladores a prepararse para un futuro próximo en el que su trabajo consistirá en ensamblar componentes, enlazarlos para su procesamiento y ejecución, sin necesidad de trabajar en toda la aplicación. Todo ello mientras experimenta las ventajas (y los riesgos) asociados al diseño de software de microservicios.
Qué esperar en el futuro en el campo de la serveless
Según los analistas de Forrester, podemos esperar nuevos desarrollos tanto en el ámbito de la arquitectura informática sin servidor como en los servicios ofrecidos por los proveedores, mucho más allá de la primera “base de datos como servicio”. Una posibilidad es ejecutar soluciones sin servidor en contenedores estandarizados, dando a los desarrolladores más control, pero también evitando el bloqueo con el proveedor de servicios. La integración entre servicios alojados en diferentes nubes, que ya es uno de los campos de aplicación de la computación sin servidores, se beneficiará a largo plazo de la definición de nuevos estándares en la gestión de eventos en la Cloud Native Computing Foundation.
Otra de las mejoras que se esperan es la compatibilidad con las transacciones distribuidas o gestionadas por la cadena de bloques. La cadena de bloques va muy bien con las características de almacenamiento, comunicación y procesamiento distribuido que admite la computación sin servidores, siempre que, por supuesto, se disponga de las funciones para comprobar la integridad de las transacciones. Si bien el enfoque sin servidor protege a los desarrolladores de los problemas de infraestructura que siguen afectando a los profesionales de DevOps, no oculta la necesidad de conocer algunos aspectos operativos de alto nivel, por ejemplo, para garantizar los tiempos de respuesta a los eventos de IoT, la ubicación geográfica de los datos y la seguridad.
Cómo y dónde probar los nuevos servicios
Según Forrester, la mejor manera de experimentar con la computación sin servidor es en la nube pública, ya sea buscando entre las ofertas de FaaS de los proveedores con los que ya se tiene relación, o eligiendo según la disponibilidad de medios útiles para la gestión de eventos. Otro aspecto importante es la selección del proyecto más adecuado para la creación de prototipos como servicio sin servidor. Para ello, lo mejor es empezar con el IoT, el software que soporta cargas de trabajo de escala muy variable o las aplicaciones distribuidas que tienen que hacer frente a un número impredecible de peticiones de los usuarios. La computación sin servidor puede resultar la opción más económica para ejecutar trabajos por lotes episódicos. En vista del futuro desarrollo de los procedimientos sin servidor, puede ser ventajoso incluir capacidades de generación de eventos desde el principio en las aplicaciones que ya se están desarrollando con métodos tradicionales.