Herramientas para una mejor Observabilidad en Aplicaciones IoT Serverless de NodeJS

Rate this content
Bookmark

La observabilidad es crucial para operar con éxito flotas grandes de IoT. IoT incorpora diferentes componentes, incluyendo hardware, red, software en el dispositivo y la nube. Los dispositivos operan en condiciones y restricciones poco confiables, y necesitan ser monitoreados de forma remota. Las aplicaciones en la nube se vuelven complejas y costosas, ya que están diseñadas para manejar la actividad de los dispositivos a gran escala. Responder preguntas como:
- ¿Tengo un problema en mi aplicación IoT?
- ¿Dónde está el problema?
- ¿Qué está causando el problema?
- ¿Cuántos de mis dispositivos se ven afectados?
- ¿Mi código es costoso de ejecutar y, de ser así, cómo puedo solucionarlo?,
puede ser un desafío. El registro, monitoreo y trazado son pilares fundamentales de la observabilidad. Sin embargo, a menudo se consideran no funcionales en las aplicaciones IoT y pueden pasar desapercibidos o no estandarizarse durante el desarrollo.

Esta sesión mostrará cómo aprovechar herramientas de código abierto, como AWS Lambda PowerTools, en una aplicación IoT Serverless completamente funcional, para facilitar la adopción de las mejores prácticas para el desarrollo de aplicaciones modernas e integrar servicios como Amazon X-Ray, Amazon CloudWatch y las características de AWS IoT Core, para lograr una observabilidad de extremo a extremo.

FAQ

Al pasar a producción, es común enfrentar problemas como dispositivos desconectados de repente, pérdida de datos a pesar de usar protocolos y almacenamiento adecuados, y métricas que tardan demasiado en cargar, lo que hace que el proceso sea bastante complicado y requiera atención constante a la resolución de problemas.

Es crucial reconocer que trabajar en IoT implica ser parte de un ecosistema que incluye el trabajo con dispositivos, backend en la nube y equipos de datos, lo que puede ser complejo y requiere una gestión cuidadosa y estrategias efectivas de monitoreo y mantenimiento.

La construcción de observabilidad en aplicaciones IoT es vital, incluyendo la implementación de métricas, registros y trazas de manera estandarizada para que los equipos de operaciones puedan revisar y entender fácilmente lo que está sucediendo en el sistema.

Se recomienda utilizar herramientas como Lambda Power Tools, que ofrecen utilidades para integrar registro estructurado, crear métricas y ver trazas en servicios como AWS X-Ray. Estas herramientas ayudan a monitorear y diagnosticar eficazmente las operaciones de las funciones Lambda.

MQTT es un protocolo de mensajería ligero que se utiliza en IoT para el envío de datos entre dispositivos y el backend en la nube. Proporciona un método eficiente para la comunicación de datos en escenarios de IoT donde los recursos de red y de dispositivo pueden ser limitados.

Las excepciones en las funciones Lambda se manejan de manera asíncrona; cuando una función Lambda arroja una excepción, esta se registra y puede revisarse posteriormente en los archivos de registro, facilitando la gestión de errores en un entorno de ejecución asíncrono.

Alina Dima
Alina Dima
8 min
14 Apr, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla aborda los desafíos del desarrollo de IoT, incluyendo problemas con flotas sin conexión, datos faltantes, alertas que no funcionan, datos inconsistentes y paneles de control de carga lenta. Explora cómo construir observabilidad en aplicaciones IoT utilizando métricas, registro y trazado. Se explica la integración entre el motor de reglas y Lambda, destacando el uso de herramientas como Lambda Power Tools y X-Ray para el registro, monitoreo y trazado. También se menciona el proceso de invocación de Lambda y las capacidades de trazado de X-Ray.

1. Introducción a los desafíos de IoT

Short description:

Todo el mundo comienza en el espacio de IoT pensando que todo es sol y mariposas, pero cuando pasas a producción, se convierte en un laberinto. La prototipación y las pruebas en el laboratorio pueden ir bien, pero luego surgen problemas. Flota sin conexión, datos faltantes, alertas que no funcionan, datos inconsistentes y paneles de control que cargan lentamente.

Muy bien, así que todos los que comienzan en el espacio de IoT piensan que así es como se ve el viaje de IoT. Sabes, todo es sol y mariposas, y trabajas con dispositivos y son muy geniales. Prototipas con dispositivos. Aprendes nuevos protocolos y así sucesivamente, por lo que piensas que se ve así.

Pero en realidad, no se ve así. Cuando pasas a producción con una solución de IoT, se parece más a esto. Así que constantemente estás apagando incendios de una forma u otra. Entonces, ¿qué está pasando realmente? Cuando trabajas en IoT, en realidad eres parte de un ecosistema. Estás trabajando en el lado del dispositivo, o estás trabajando con equipos que trabajan en el lado del dispositivo. Tienes backend en el lado de la nube. Estás trabajando con equipos de la nube. Estás trabajando con equipos de datos. Así que todo es realmente relativamente loco, y puede volverse aún más loco muy rápido. Así que es un laberinto.

De repente estás haciendo prototipos o pruebas con tus dispositivos en el laboratorio, y todo funciona, y todo está bien, todos están felices. Y luego pasas a producción, y de repente el 50% de tu flota está sin conexión de un día para otro. Y tratas de investigar por qué, y no sabes por qué. Luego tienes datos faltantes. Estás enviando datos. Estás usando MQTT. Has hecho todas las cosas correctas. Idealmente, has utilizado calidad de servicio uno. Idealmente, también has utilizado almacenamiento local en el borde, pero aún así los datos han desaparecido. Así que tu equipo de datos se queja. No sabes dónde está el problema. ¿Qué pasa con las alertas que construiste? Bueno, no estás viendo ninguna de ellas. ¿Las has construido realmente? Bueno, no lo sé. Sería una buena idea si lo hicieras. Los datos son inconsistentes. Tus usuarios básicamente se quejan de que cargar un panel de control para, no sé, 50 dispositivos como un agregado, para ver métricas agregadas, simplemente lleva demasiado tiempo.

2. Construyendo Observabilidad en IoT

Short description:

Para construir observabilidad en una aplicación de IoT, necesitas métricas, registro y trazado de una manera estandarizada. Vamos a explorar cómo lograr esto en un escenario de backend sin servidor, donde un dispositivo IoT envía datos a través de MQTT, recogidos por una regla de AWS IoT y enviados a una función Lambda.

Así que todo es una locura. Entonces, ¿qué haces con todo esto? Claramente, necesitas construir observabilidad en tu aplicación. Necesitas métricas. Necesitas registro. Necesitas trazado. Y, idealmente, necesitas todo esto de una manera estandarizada, para que un equipo de operaciones que realmente esté revisando estas cosas, revisando estos datos, pueda entender lo que está sucediendo. Así que veamos cómo podemos construir observabilidad en una aplicación de IoT.

Voy a asumir que el backend aquí es principalmente sin servidor. Así que me imagino una situación en la que tienes un dispositivo IoT que envía algunos datos a través de MQTT y tienes una regla de IoT, ya sabes, una regla de AWS IoT, que recoge estos datos y los envía a una función Lambda. Estás utilizando esta increíble y genial integración que AWS IoT tiene con el motor de reglas. Y piensas que todo es perfecto, ¿verdad? Si escaneas ese código QR, puedes ver el código de lo que voy a mostrarte. Puedes hacer eso. También lo tengo enlazado al final. Así que daré, como, dos segundos para que la gente lo vea.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

No sabes cómo hacer SSR
DevOps.js Conf 2024DevOps.js Conf 2024
23 min
No sabes cómo hacer SSR
Un recorrido por la evolución del SSR en los últimos doce años. Cubriremos cómo han cambiado las técnicas, los problemas típicos, las herramientas que puedes utilizar y diversas soluciones, todo desde el punto de vista de mi experiencia personal como consumidor y mantenedor.
AWS Lambda bajo el capó
Node Congress 2023Node Congress 2023
22 min
AWS Lambda bajo el capó
Top Content
En esta charla explico cómo funciona el servicio AWS Lambda, explicando la arquitectura, cómo escala y cómo un desarrollador debería pensar cuando diseñan su software utilizando funciones Lambda
Optimización del rendimiento de AWS Lambda
Node Congress 2024Node Congress 2024
25 min
Optimización del rendimiento de AWS Lambda
¿Alguna vez te has preguntado cómo obtener lo mejor de tus funciones Lambda?Si es así, esta charla revelará los entresijos de uno de los servicios sin servidor más populares y te brindará una guía paso a paso para optimizar tus funciones.En esta sesión, te guiaré a través de la mentalidad para reducir el tiempo de ejecución de tus funciones Lambda. En el ejemplo presentado, pude reducir el tiempo de ejecución en un 95% para el inicio en caliente y más del 50% en los inicios en frío, mejorando también las transacciones por segundo atendidas con esta API.
Arquitecturas Avanzadas de GraphQL: Event Sourcing y CQRS sin servidor
React Summit 2023React Summit 2023
28 min
Arquitecturas Avanzadas de GraphQL: Event Sourcing y CQRS sin servidor
GraphQL es una herramienta poderosa y útil, especialmente popular entre los desarrolladores frontend. Puede acelerar significativamente el desarrollo de aplicaciones y mejorar la velocidad de la aplicación, la descubribilidad de la API y la documentación. GraphQL no es solo adecuado para API simples, puede impulsar arquitecturas más avanzadas. La separación entre consultas y mutaciones hace que GraphQL sea perfecto para el event sourcing y Command Query Responsibility Segregation (CQRS). Al hacer que tu aplicación GraphQL avanzada sea sin servidor, obtienes una arquitectura completamente administrada, económica y extremadamente potente.
Desmitificar la DX para funciones Lambda
DevOps.js Conf 2024DevOps.js Conf 2024
30 min
Desmitificar la DX para funciones Lambda
En esta sesión, comparto contigo cómo AWS CDK y AWS Toolkit pueden simplificar la experiencia del desarrollador para ejecutar cargas de trabajo sin servidor en la nubeUna sesión sin diapositivas, solo un IDE y una CLI para implementar una API en la nube, actualizarla rápidamente y recuperar registros sin salir de tu IDE favorito!
Construyendo Dapps con React
React Advanced Conference 2021React Advanced Conference 2021
30 min
Construyendo Dapps con React
Las aplicaciones descentralizadas (dApps) continúan ganando impulso en la industria. Estos desarrolladores también son algunos de los mejor pagados en todo el sector. Construir aplicaciones descentralizadas es un cambio de paradigma que requiere una forma diferente de pensar que las aplicaciones construidas con infraestructura, herramientas y servicios centralizados tradicionales, teniendo en cuenta cosas como la teoría de juegos, la infraestructura descentralizada sin servidor y la criptoeconomía. Como desarrollador de React, inicialmente tuve dificultades para entender este ecosistema completamente nuevo (para mí), cómo todo encaja y el modelo mental necesario para entender y ser un desarrollador full stack productivo en este espacio (y por qué lo consideraría en primer lugar). En esta charla, daré una visión general completa del espacio, cómo puedes comenzar a construir este tipo de aplicaciones y toda la pila tecnológica desglosada y luego reensamblada para mostrar cómo funciona todo.

Workshops on related topic

IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
Construyendo Aplicaciones Serverless en AWS con TypeScript
Node Congress 2021Node Congress 2021
245 min
Construyendo Aplicaciones Serverless en AWS con TypeScript
Workshop
Slobodan Stojanović
Slobodan Stojanović
Este masterclass te enseña los conceptos básicos del desarrollo de aplicaciones serverless con TypeScript. Comenzaremos con una función Lambda simple, configuraremos el proyecto y la infraestructura como código (AWS CDK) y aprenderemos cómo organizar, probar y depurar una aplicación serverless más compleja.
Tabla de contenidos:        - Cómo configurar un proyecto serverless con TypeScript y CDK        - Cómo escribir una función Lambda testeable con arquitectura hexagonal        - Cómo conectar una función a una tabla DynamoDB        - Cómo crear una API serverless        - Cómo depurar y probar una función serverless        - Cómo organizar y hacer crecer una aplicación serverless


Materiales mencionados en el masterclass:
https://excalidraw.com/#room=57b84e0df9bdb7ea5675,HYgVepLIpfxrK4EQNclQ9w
Blog de DynamoDB de Alex DeBrie: https://www.dynamodbguide.com/
Excelente libro para DynamoDB: https://www.dynamodbbook.com/
https://slobodan.me/workshops/nodecongress/prerequisites.html
Masterclass de Serverless para Desarrolladores de React
React Summit 2022React Summit 2022
107 min
Masterclass de Serverless para Desarrolladores de React
WorkshopFree
Tejas Kumar
Tejas Kumar
Introducción a serverlessAntecedentes: Docker, Contenedores y KubernetesActividad: Construir una aplicación con Docker y desplegarla en un proveedor de nubeAnálisis: ¿Qué es bueno/malo de este enfoque?Por qué se necesita/mejora ServerlessActividad: Construir la misma aplicación con serverlessAnálisis: ¿Qué es bueno/malo de este enfoque?
Masterclass de Frontend en la Nube Hecho Fácil - Un Taller de ReactJS + AWS
DevOps.js Conf 2024DevOps.js Conf 2024
59 min
Masterclass de Frontend en la Nube Hecho Fácil - Un Taller de ReactJS + AWS
Workshop
Eyal Keren
Eyal Keren
Este taller te permite aprender cómo desarrollar aplicaciones React y luego desplegarlas en la nube (o construirlas en la consola) junto con un backend completamente abstracto, sin una configuración de backend compleja, simplificando la construcción y el despliegue de aplicaciones frontend y web en la nube.
Construyendo un backend serverless nativo de GraphQL con Fauna
GraphQL Galaxy 2021GraphQL Galaxy 2021
143 min
Construyendo un backend serverless nativo de GraphQL con Fauna
WorkshopFree
Rob Sutter
Shadid Haque
2 authors
¡Bienvenido a Fauna! Este masterclass ayuda a los desarrolladores de GraphQL a construir aplicaciones de alto rendimiento con Fauna que se escalan a cualquier tamaño de base de usuarios. Comienzas con lo básico, utilizando solo el playground de GraphQL en el panel de Fauna, luego construyes una aplicación completa de pila completa con Next.js, agregando funcionalidad a medida que avanzas.

En la primera sección, Comenzando con Fauna, aprendes cómo Fauna crea automáticamente consultas, mutaciones y otros recursos basados en tu esquema de GraphQL. Aprendes cómo realizar tareas comunes con GraphQL, cómo usar el lenguaje de consulta de Fauna (FQL) para realizar tareas más avanzadas.

En la segunda sección, Construyendo con Fauna, aprendes cómo Fauna crea automáticamente consultas, mutaciones y otros recursos basados en tu esquema de GraphQL. Aprendes cómo realizar tareas comunes con GraphQL, cómo usar el lenguaje de consulta de Fauna (FQL) para realizar tareas más avanzadas.