GOBIERNO TI | Noticias | 05 JUL 2017

Claves para desarrollar servicios IoT

Los ambientes de IoT de hoy son un nido de ratas potenciales de locura asincrónica. "Asincronía" es una palabra que da miedo. Significa tomar los eventos como vienen, manejando de alguna manera para evitar ser superados por ellos.
¿Puede atacarnos el Internet de las cosas?
Foto: em den (cc)
James Kobielus

La asincronía basada en eventos es la base de la computación sin servidor, que, como un marco de programación, está hecha a medida para Internet de las cosas. Cuando se consideran los escenarios de eventos en un contexto de IoT, los principales impulsores son el flujo interminable de entradas de sensores que -dependiendo de su sincronización, secuencia, frecuencia y valores- pueden cambiar el comportamiento de ejecución del sistema arbitrariamente en todas las direcciones posibles.

Cuando se superponen las interacciones de microservicios basadas en eventos sobre estas complejidades impulsadas por sensores, está claro que los entornos de IoT actuales son un nido de ratas potenciales de locura asincrónica a la espera de suceder.

Llevar la resiliencia a los microservicios IoT distribuidos requiere una abstracción programática de alto nivel para mantener bajo control su sustrato fundamentalmente asíncrono. Así es como estoy interpretando el reciente artículo de InfoWorld sobre un lenguaje de programación de código abierto llamado P que Microsoft ha introducido para programar aplicaciones asíncronas en sistemas embebidos, aplicaciones de AI y servicios en la nube.

Un concepto que saltó hacia fuera en mí era la noción de un 'heisenbug' que proviene de la analogía de la física "Principio de Incertidumbre de Heisenberg", bajo el cual el intento de observar un sistema inevitablemente altera su estado.

En lo que se refiere a entornos informáticos, 'heisenbugs' son equivalentes a efectos de sondeo, en los que unir una sonda de prueba o simplemente enviar un ping de prueba asincrónico a un sistema cambia su comportamiento. Lo que esto implica es que el mismo acto de tratar de aislar, analizar y depurar algunas fallas sistémicas alterará el comportamiento sistémico subyacente de interés, quizás haciendo que los errores en cuestión no vuelvan a aparecer. Una de las principales causas de heisenbugs son las condiciones de carrera, bajo las cuales un sistema se comporta de manera errática cuando los eventos de entrada asíncronos no tienen lugar en el orden específico esperado por el programa de control de ese sistema.

¿Qué programador puede predecir -y mucho menos escribir secuencias de códigos para tratar con todo escenario posible de interacciones asincrónicas impulsadas por eventos en el IOT y otros entornos de computación fundamentalmente asíncronos? Es por eso que P, o un lenguaje de programación asincrónico de seguridad basado en eventos, es esencial y debe ser una herramienta necesaria en cada kit de herramientas del desarrollador de IoT o microservices.

Dichos lenguajes permiten a los desarrolladores especificar la secuencia precisa de los pasos de ejecución que debe tomar el código compilado, independientemente del orden en que los entornos de tiempo de ejecución subyacentes procesen mensajes de eventos asíncronos. Los programadores construyen la lógica de la aplicación utilizando capas de abstracción que generan código asíncrono de manejo de eventos como colecciones de máquinas de estado que interactúan. Lo que estas máquinas de estado hacen es diferir el manejo de eventos específicos hasta su lugar apropiado en secuencia.

Es difícil ver cómo se pueden endurecer los microservicios basados ​​en IoT distribuidos, tales como la cadena de bloques hyperledger distribuida de Iota, sin este tipo de lenguaje de programación seguro basado en eventos. Y no está claro cómo las APIs RESTful de IoT pueden ofrecer una respuesta en tiempo real y una eficiencia de programación predecibles sin la capacidad de imponer transiciones de estado distribuidas entre servicios distribuidos que interactúan sobre un tejido conducido por acontecimientos ligeramente acoplado.

Por supuesto, siempre habrá errores en abundancia en un sistema distribuido complejo, como el IoT. Sin embargo, será más fácil aislar bugs en las plataformas de tiempo de ejecución subyacentes de IoT, como los sensores inteligentes que impulsan la Internet industrial, si los desarrolladores pueden aprovechar un entorno de programación que elimine cualquier fallo que pueda surgir del tejido de integración asincrónica de IoT.

 

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información