Queremos presentarles una tecnología disruptiva que está teniendo un impacto creciente en los procesos de negocio, pues mejora la oportunidad de tomar acciones frente a eventos, pasando de horas o minutos a muy pocos segundos. Y lo mejor: a un costo sustantivamente menor comparado con las tecnologías anteriores.
Se trata de las funciones Lambda, un subconjunto de la arquitectura serverless. En esta nota exploraremos algunos usos, más adelante (en una próxima nota) abordaremos las estrategias de implantación.
¿Qué es la arquitectura serverless o la informática sin servidores?
La arquitectura serverless, también conocida como FaaS (Functions as a Service), habilita la ejecución de una aplicación mediante contenedores efímeros y sin estado (stateless); estos son creados en el momento en el que se produce un evento que dispare dicha aplicación. Contrariamente a lo que nos sugiere el término, serverless no significa «sin servidor», sino que estos se usan como un elemento anónimo más de la infraestructura, para lo cual se apoyan en las ventajas del cloud computing.
La principal ventaja de una arquitectura serverless es la posibilidad de que el desarrollador se despreocupe de la gestión de la infraestructura sobre la que se ejecuta su servicio (función) y pueda centrarse en la funcionalidad, por lo tanto, el ciclo completo de desarrollo se simplifica.
También proporciona un nivel elevado de desacoplamiento entre los diferentes servicios, favoreciendo el desarrollo de arquitecturas basadas en microservicios. Esto facilita mucho el ciclo de vida y los despliegues continuos, además de simplificar los rollbacks si ello fuera necesario.
Por último, una arquitectura serverless reduce el gasto en infraestructura, ya que se solo se generan costos cuando se realiza una petición y, por tanto, cuando la función se ejecuta.(*)
¿Qué son las funciones Lambda?
Las funciones Lambda, son un subconjunto de la arquitectura serverless, son gatilladas por eventos (event driven). Sus características son las siguientes:
- Son efímeras.
- Apuntan a microservicios.
- Pueden autoescalar en forma automática, lo que permite absorber los peak de demanda sin necesidad de planificar anticipadamente la capacidad requerida, ni de intervención manual. Por ejemplo, en el retail para un Cybermonday; en una universidad para el día de inscripción de ramos; etc.
- Son robustas y resistentes a las fallas.
- La ejecución de las funciones lambda en el servidor se paga por segundo de CPU utilizada.
¿Para qué se pueden usar?
Las aplicaciones basadas en funciones Lambda dan espacio para un vasto mundo de desarrollos a medida, principalmente en (** ):
- Procesamiento de datos.
- Procesamiento de archivos en tiempo real.
- Procesamiento de transmisiones en tiempo real (por ejemplo, procesar los datos de un streaming de audio o video, para traducir y subtitular los contenidos en tiempo real).
- Extracción, transformación y carga.
- Back-ends:
- IoT.
- Aplicaciones móviles. .
- Aplicaciones web.
- Integracion de aplicaciones (APIs
¿Cómo pueden beneficiar a mi organización?
La respuesta es muy amplia, para que se pueda hacer una idea, le daremos a continuación algunos ejemplos de uso para las categorías mencionadas en el punto anterior:
Lambda puede hacer análisis y transformación de datos antes de almacenarlos y gatillar distintos eventos sobre la base de la información que llega.
o Una fábrica de muebles, tipo Ikea, que recibe pedidos de diferentes partes del mundo, en distintas unidades de medida (centímetros y pulgadas), podría usar una función Lambda que se encargue de unificar las unidades de medida antes de almacenar la información. Podría determinar además en qué planta es mejor ejecutar esa orden y despachar de forma inmediata la orden de pedido.
- Procesamiento de archivos en tiempo real:
o En una red social, cuando alguien sube una foto, se podría ejecutar un algoritmo de detección de rostros, de modo de sugerir nombres para etiquetar esas fotos.
o En el caso de una empresa con un sw de factura electrónica, se puede validar en tiempo real si el archivo que envía un cliente está formateado adecuadamente, antes de despacharlo al Servicio de Impuestos Internos.
o Ejecutar la validación del pago de una compra, así como el stock, antes de terminar la transacción.
- Procesamiento de transmisiones en tiempo real:
o En el caso de un sensor de incendios, que avisa de fuego, podría generar a través de funciones Lambda acciones inmediatas.
- Extracción, transformación y carga:
o En el caso de los clásicos ETL, o de sistemas de consolidación entre la matriz y sus filiales, permiten hacer en forma inmediata lo que antes se hacía en modo batch, gracias a lo cual el tomador de decisiones podría contar con la información mucho antes.
o En el caso de sensores, que controlan el estado parte de un vehículo, por ejemplo, los frenos de un tren, Lambda permite tomar acciones en forma oportuna, y si se combina con machine learning podría indicar cuándo los valores recibidos representan un peligro.
o Hay muchas aplicaciones en IoT, donde muchos sensores generan datos en tiempo real, los que deben ser almacenados en algún repositorio, por ejemplo, hadoop. Lambda puede hacer análisis antes de guardar y gatillar distintos eventos según la información que recibe.
Conclusiones:
Si bien el uso de Lambda es muy amplio, la característica que nos parece más importante es que mejora la oportunidad de tomar acciones frente a los eventos, lo que se lleva a cabo en pocos segundos. Se puede aplicar en todo aquello que requiere que el software reaccione de manera inmediata frente a uno.
Dado que no necesita planificar la carga y se ajusta en forma automática, es mucho más simple atender variaciones de demanda y se paga solo lo que se usa.
Por otra parte, es barato de desarrollar, es escalable, permite manejar actualizaciones en forma más sencilla, es confiable, monitoreable y, además, es posible hacer tunning.
Sin embargo, no se puede “portar” todo a Lambda. Los desarrollos a serverless requieren de una forma de diseñar y estructurar distinta. De eso hablaremos en un siguiente artículo.
Para más información de nuestros servicios en este y otros temas le invitamos a contactarnos,
Fuentes:
https://aws.amazon.com/es/Lambda/