AWS Lambda es un servicio muy importante y muy usado en el mundo Real-Time, y en este caso lo veremos con especial énfasis en proyectos de BigData.
CaracterÃsticas de AWS Lambda
- LÃmite: Por defecto, por cuenta se puede llegar hasta 1.000 llamadas concurrentes de funciones Lambda. Este valor puede ser expansible a través del soporte hasta 20.000. Por esta razón, es recomendable tener una cuenta para cada ambiente en proyectos de BigData, para que los lÃmites sean completamente independientes.
- Integraciones: AWS Lambda es un servicio que se puede integrar con casi cualquier otro servicio dentro de AWS; en este énfasis, se puede integrar con Kinesis Firehose.
- SQS: Cuando se trata de AWS Lambda, suele trabajarse con un flujo muy alto de eventos, por lo cual, es muy recomendable utilizar colas; de manera que si el servicio de Lambda llega a su lÃmite, la cola se va a ir acumulando y Lambda va procesando los eventos sin tener problemas de cuellos de botella. Siendo este el caso, podrÃamos perder un poco de Real-Time al tener un delay, pero no tendremos delay en la función Lambda, lo cual es muy importante.
También podrÃamos usar SNS, que son notificaciones, pero éstas sà son en tiempo real, lo cual significa que a medida que llega el SNS, la función Lambda lo procesa; si no lo puede procesar, se ejecutan una serie de reintentos, pero es más probable que se generen throttles utilizando SNS que una cola de SQS.
En arquitecturas Real-Time, normalmente se maneja una gran cantidad de funciones Lambda, y orquestar esas funciones y el código dentro de ellas es muy complejo.
- Deployment: Una de las recomendaciones es optimizar y automatizar el despliegue de código en las funciones Lambda utilizando diferentes servicios de AWS como por ejemplo: CodePipeline, S3, CloudFormation, etc.
- Monitoreo: En sistemas Real-Time tenemos muchas funciones Lambda que procesan mucha información, y muchas veces es muy complejo encontrar errores; para esto, hay diferentes tipos de servicios, uno de ellos es Step Functions, que nos ayuda a orquestar funciones y a identificar demoras en las funciones.
También podemos incluir librerÃas para monitoreo de ejecución de Código, como por ejemplo Rollbar, que una de sus principales funciones es notificar por medio de alertas los errores que ocurren en las funciones especificando sus causas.
AWS cuenta también con servicios como X-Ray, que podemos utilizar para identificar errores especÃficos dentro de funciones Lambda cuando sospechemos que tenemos una demora. - Manejo de errores: Cuando procesamos estos flujos de información, puede pasar que tengamos un error en el endpoint y que no alcancemos a enviar toda la información, o que el endpoint esté caÃdo y la cantidad de reintentos no dé a basto. Para esto, podemos configurar colas en las funciones Lambda, de manera que si la función ejecutó ya todos los reintentos y el endpoint no le respondió, puede enviar esa información a una cola y a un dead letter queue (cola muerta), y de ahà podrÃamos procesarla con otra función para que la ingrese a un DynamoDB y luego intentar de re-procesar la información hacia su endpoint destino. La idea de este manejo de errores es nunca perder eventos.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.