Diseñar soluciones de IoT

En el capítulo anterior, obtuviste más información sobre las plantillas de ARM y, hasta ahora, hemos estado tratando las preocupaciones de la arquitectura y sus soluciones en Azure en general. Sin embargo, este capítulo no se basa en arquitectura generalizada. De hecho, aquí vamos a explorar una de las tecnologías más revolucionarias de este siglo. En este capítulo se analizarán los detalles del Internet de las cosas (IoT) y Azure.
Azure IoT se refiere a una colección de servicios cloud administrados por Microsoft que pueden conectar, supervisar y controlar miles de millones de activos de IoT. En otras palabras, una solución de IoT consta de uno o más dispositivos de IoT que se comunican constantemente con uno o varios servidores back-end en el cloud.

En este capítulo, abordaremos los siguientes temas:

  • Azure e IoT
  • Información general de Azure IoT
  • Administración de dispositivos
  • Registro de dispositivos
  • Comunicación entre el dispositivo y el centro de IoT
  • Escalado de soluciones de IoT
  • Alta disponibilidad para soluciones de IoT
  • Protocolos de IoT
  • Uso de las propiedades para enrutar mensajes

IoT
Internet se inventó en la década de 1980 y posteriormente se volvió ampliamente disponible.
Casi todo el mundo tendía a tener una presencia en Internet y empezó a crear sus propias
páginas web estáticas. Con el tiempo, el contenido estático se convirtió en dinámico
y se podía generar sobre la marcha, en función del contexto. En casi todos los casos,
se necesitaba un navegador para tener acceso a Internet. Había una gran cantidad de
navegadores disponibles y, sin ellos, el uso de Internet era todo un desafío.
Durante la primera década de este siglo, se produjo un desarrollo interesante que empezó
a crecer: el surgimiento de dispositivos portátiles, como los teléfonos móviles y las tabletas.
Los teléfonos móviles empezaron a ser cada vez más asequibles y estaban disponibles por
doquier. Las capacidades de hardware y software de estos dispositivos portátiles estaban
mejorando considerablemente; tanto que la gente comenzó a usar los navegadores en
sus dispositivos móviles en lugar de en sus equipos de escritorio. Sin embargo, un cambio
especialmente distinto fue el auge de las aplicaciones móviles. Estas aplicaciones móviles
se descargaban de una tienda y se conectaban a Internet para comunicarse con sistemas
back-end. Hacia el final de la década pasada, había millones de aplicaciones disponibles
con casi cualquier funcionalidad concebible integrada. El sistema back-end para estas
aplicaciones se construyó en el cloud para que se pudieran escalar con rapidez. Fue la
época de conectar aplicaciones y servidores.

Pero ¿se había alcanzado la cima de la innovación? ¿Cuál fue la siguiente evolución de
Internet? Ahora, otro paradigma ha empezado a cobrar protagonismo: IoT. En lugar de solo
dispositivos móviles y tabletas conectados a Internet, ¿por qué no pueden otros dispositivos
conectarse a Internet? Anteriormente, estos dispositivos solo estaban disponibles en
mercados selectos; eran caros, no estaban disponibles para el público general y tenían unas
capacidades limitadas de hardware y software. Sin embargo, desde la primera parte de esta
década, la comercialización de estos dispositivos ha estado creciendo a gran escala. Estos
dispositivos tienen un tamaño cada vez más reducido, cuentan con mayor capacidad en
cuanto a hardware y software, tienen una mayor potencia de cálculo y almacenamiento,
pueden conectarse a Internet según diversos protocolos y se pueden acoplar a casi
cualquier objeto. Estamos en la época de conectar dispositivos a servidores, aplicaciones
y otros dispositivos.
Esto ha conducido a la formulación de la idea de que las aplicaciones de IoT pueden
cambiar el modo en que los sectores están operando. Las soluciones más recientes que
anteriormente eran inauditas ahora están empezando a materializarse. Ahora, estos
dispositivos pueden acoplarse a cualquier objeto; pueden obtener información y enviarla
a un sistema back-end que puede asimilar esa información de todos los dispositivos
y adoptar una acción en consecuencia o notificar incidentes.
Los sensores y controles de IoT se pueden aprovechar en muchos casos prácticos
empresariales. Por ejemplo, se pueden utilizar en sistemas de seguimiento de vehículos,
que pueden rastrear todos los parámetros esenciales de un vehículo y enviar esos detalles
a un almacén de datos centralizado para su análisis. Las iniciativas urbanas inteligentes
también pueden utilizar varios sensores para rastrear los niveles de contaminación, la
temperatura y los atascos en las calles. El IoT también se ha abierto camino en actividades
relacionadas con la agricultura, como la medición de la fertilidad del suelo o la humedad,
entre otros. Puedes visitar casos prácticos en el sector técnico de Microsoft para IoT en
https://microsoft.github.io/techcasestudies/#technology=IoT&sortBy=featured para ver
ejemplos reales de cómo las organizaciones aprovechan Azure IoT.
Antes de explorar las herramientas y servicios relacionados con IoT, primero vamos a hablar
de la arquitectura de IoT en detalle.

Arquitectura de IoT
Antes de empezar con Azure y sus características y servicios relacionados con IoT,
es importante comprender los diversos componentes necesarios para crear soluciones
de IoT integrales.
Piensa que los dispositivos de IoT de todo el mundo están enviando millones de mensajes
cada segundo a una base de datos centralizada. ¿Por qué se están recopilando estos datos?
Pues la respuesta es para extraer información enriquecida sobre eventos, anomalías
y valores atípicos que están relacionados con lo que esos dispositivos están supervisando.

Vamos a describir esto con mayor detalle.
La arquitectura de IoT se puede dividir en etapas distintas, como se indica a continuación:

  1. Conectividad: esta fase implica la realización de una conexión entre un dispositivo
    y el servicio de IoT.
  2. Identidad: después de conectarse al servicio de IoT, lo primero que ocurre es la
    identificación del dispositivo y asegurarse de que se permite enviar telemetría de
    dispositivos al servicio de IoT. Esto se hace mediante un proceso de autenticación.
  3. Captura: durante esta fase, el servicio de IoT captura y recibe la telemetría del
    dispositivo.
  4. Ingesta: en esta fase, el servicio de IoT ingiere la telemetría del dispositivo.
  5. Almacenamiento: se almacena la telemetría del dispositivo. Podría ser un almacén
    temporal o permanente.
  6. Transformación: los datos de telemetría se transforman para su posterior
    procesamiento. Esto incluye aumentar los datos existentes e inferir los datos.
  7. Análisis: los datos transformados se utilizan para encontrar patrones, anomalías
    y conocimientos.
  8. Presentación: los conocimientos se muestran como paneles e informes. Además,
    se pueden generar nuevas alertas que podrían invocar scripts y procesos de
    automatización.

En la Figura 17.1 se muestra una arquitectura basada en IoT genérica. Los dispositivos
generan o recopilan datos y los envían a las puertas de enlace en el cloud. A su vez,
la puerta de enlace en el cloud envía los datos a varios servicios de back-end para su
procesamiento. Las puertas de enlace en el cloud son componentes opcionales; se
recomienda su uso cuando los propios dispositivos no son capaces de enviar solicitudes a
servicios de back-end, por limitaciones de recursos o por ausencia de una red fiable. Estas
puertas de enlace en el cloud pueden recopilar datos de diversos dispositivos y enviarlos a
servicios de back-end. Los servicios de back-end procesan los datos y los presentan como
conocimientos o paneles a los usuarios:

Ahora que ya tenemos clara la arquitectura, vamos a seguir adelante y a entender cómo se
comunican los dispositivos de IoT con otros dispositivos.

Conectividad
Los dispositivos de IoT necesitan comunicarse para conectarse a otros dispositivos. Hay
varios tipos de conectividad; por ejemplo, podría existir conectividad entre dispositivos
de una región, entre dispositivos y una puerta de enlace centralizada, y entre dispositivos
y una plataforma de IoT.
En todos estos casos, los dispositivos de IoT necesitan la capacidad de conectarse. Esta
capacidad podría ser una conectividad a Internet, Bluetooth, infrarrojos o cualquier otro
tipo de comunicación con dispositivos cercanos.
Sin embargo, puede que algunos dispositivos de IoT no tengan la capacidad de conectarse
a Internet. En estos casos, se pueden conectar a través de una puerta de enlace que, a su
vez, sí tiene conectividad a Internet.
Los dispositivos de IoT utilizan protocolos para enviar mensajes. Los protocolos más
importantes son Advanced Message Queuing Protocol (AMQP) y el protocolo Message
Queue Telemetry Transport (MQTT).

Los datos de los dispositivos se deben enviar a una infraestructura de TI. El protocolo MQTT
es un protocolo de dispositivo a servidor que pueden usar los dispositivos para enviar datos
de telemetría y otro tipo de información a los servidores. Una vez el servidor recibe un
mensaje a través del protocolo MQTT, necesita transportar el mensaje a otros servidores
mediante una tecnología fiable basada en mensajes y colas. AMQP es el protocolo preferido
para mover mensajes entre servidores en una infraestructura de TI de una manera fiable
y predecible:

Los servidores que reciben los mensajes iniciales de los dispositivos de IoT deben enviar esos
mensajes a otros servidores para el procesamiento correspondiente, como almacenamiento
en registros, evaluación, análisis y fines de presentación.
Algunos dispositivos no tienen la capacidad de conectarse a Internet o no admiten
protocolos compatibles con otras tecnologías de servidor. Para permitir que estos
dispositivos funcionen con una plataforma de IoT y el cloud, se pueden usar puertas de
enlace intermedias. Las puertas de enlace ayudan en la incorporación de dispositivos con
conectividad y capacidad de red lentas y no uniformes; estos dispositivos pueden utilizar
protocolos que no son estándar o sus capacidades pueden estar limitadas en términos de
recursos y potencia.
En estas circunstancias, en las que los dispositivos necesitan una infraestructura adicional
para conectarse a servicios de back-end, se pueden implementar puertas de enlace en el
cliente. Estas puertas de enlace reciben mensajes de dispositivos cercanos y los reenvían
(o transfieren) a la infraestructura de TI y la plataforma de IoT para su posterior consumo.
Estas puertas de enlace son capaces de realizar una traducción de protocolos de ser
necesario.
En esta sección has aprendido cómo se implementa la comunicación con otros dispositivos
y el papel que desempeñan las puertas de enlace en términos de comunicación. En la
siguiente sección vamos a hablar de identidad.

Identidad
Los dispositivos de IoT se deben registrar en una plataforma de cloud. No se debe permitir
que los dispositivos que no estén registrados se conecten a una plataforma de cloud. Los
dispositivos se deben registrar y se les debe asignar una identidad. Un dispositivo debe
enviar su información de identidad al conectarse al cloud. Si el dispositivo no consigue
enviar esta información de identidad, la conectividad no se producirá. Más adelante verás
en este capítulo cómo generar una identidad para un dispositivo mediante una aplicación
simulada. Como ya sabes, los dispositivos de IoT se implementan para capturar información
y, en la siguiente sección, hablaremos brevemente sobre el proceso de captura.

Captura
Los dispositivos de IoT deben ser capaces de capturar información. Por ejemplo, deben
tener la capacidad de leer o supervisar el contenido de humedad en el aire o en el
suelo. Esta información se puede capturar según la frecuencia, puede que incluso una
vez por segundo. Una vez capturada la información, el dispositivo debe poder enviarla
a la plataforma de IoT para su procesamiento. Si un dispositivo no puede conectarse
directamente a la plataforma de IoT, se puede conectar a una puerta de enlace intermedia
y en el cloud y transferir la información capturada.
El tamaño de los datos capturados y la frecuencia de la captura son los aspectos más
importantes del dispositivo. Si un dispositivo debe contar o no con almacenamiento local
para poder almacenar temporalmente los datos capturados es otro aspecto importante
que se debe tener en cuenta. Por ejemplo, un dispositivo puede funcionar en un modo
sin conexión si hay disponible suficiente almacenamiento local. Incluso los dispositivos
móviles actúan, en ocasiones, como dispositivos de IoT conectados a varios instrumentos
y cuentan con la capacidad para almacenar datos. Una vez capturados los datos, tenemos
que ingerirlos en una plataforma de IoT para su análisis posterior. En la siguiente sección
exploraremos la ingesta.

Ingesta
Los datos capturados y generados por los dispositivos se deben enviar a una plataforma
de IoT que sea capaz de ingerir y consumir estos datos para extraer de ellos información
y conocimientos significativos. El servicio de ingesta es un servicio esencial debido a que
su disponibilidad y escalabilidad afectan al rendimiento de los datos entrantes. Si los datos
empiezan a obstruirse debido a problemas de escalabilidad o no se pueden ingerir debido
a problemas de disponibilidad, esos datos se perderán y el conjunto de datos podría quedar
sesgado o ser parcial. Tenemos los datos capturados y necesitamos un lugar para almacenar
estos datos. En la siguiente sección descubrirás el almacenamiento.

Almacenamiento
Las soluciones de IoT lidian normalmente con millones o incluso miles de millones de
registros que abarcan terabytes o incluso petabytes de datos. Se trata de datos valiosos que
pueden proporcionar información sobre las operaciones y su estado. Estos datos tienen que
almacenarse de una forma que se puedan realizar análisis sobre ellos. El almacenamiento
debe estar disponible con facilidad para que lo consuman análisis, aplicaciones y servicios.
Las soluciones de almacenamiento deben proporcionar una velocidad y latencia suficientes
desde una perspectiva de rendimiento, y ofrecer alta disponibilidad, escalabilidad y
seguridad. La siguiente sección trata de la transformación de datos, que es necesaria
para almacenar y analizar los datos.
Transformación
Las soluciones de IoT se basan normalmente en los datos y tienen volúmenes de datos
considerablemente altos que gestionar. Imagina que cada coche cuenta con un dispositivo
y cada uno envía mensajes cada cinco segundos. Si hubiera un millón de coches enviando
mensajes, esto produciría un total de 288 millones de mensajes al día y 8 mil millones de
mensajes al mes. Todos estos datos combinados tienen gran cantidad de información
y conocimientos ocultos; sin embargo, lo complicado es entender este tipo de datos
mediante la simple observación.
Los datos que capturan y almacenan los dispositivos de IoT se pueden consumir para
resolver problemas empresariales, pero no todos los datos que se capturan son importantes.
Puede que tan solo sea necesario un subconjunto de datos para resolver un problema.
Además, los datos que recopilan los dispositivos de IoT podrían no ser coherentes tampoco.
Para garantizar que los datos son uniformes y que no presentan ningún sesgo ni son
parciales, se deben ejecutar las transformaciones adecuadas sobre ellos para que estén
listos para su análisis. Durante la transformación, los datos se filtran, ordenan, eliminan,
enriquecen y transforman en una estructura; de esta manera, componentes y aplicaciones
posteriores podrán consumirlos con facilidad. Tenemos que realizar algunos análisis con
los datos transformados antes de presentarlos. Como siguiente paso en el flujo de trabajo,
veremos el análisis.
Análisis
Los datos transformados en el paso anterior se convierten en la entrada para el paso de
análisis. Según la naturaleza del problema en cuestión, existen tipos diferentes de análisis
que se pueden realizar en los datos transformados.

A continuación, se indican los diferentes tipos de análisis que se pueden realizar:

  • Análisis descriptivo: este tipo de análisis ayuda a detectar patrones y detalles sobre
    el estado de los dispositivos de IoT y su estado general. En esta etapa se identifican
    y resumen los datos para su posterior consumo por etapas de análisis más avanzadas.
    Ayudará en el resumen, a encontrar estadísticas relacionadas con probabilidad,
    a identificar la desviación y a otras tareas estadísticas.
  • Análisis diagnóstico: este tipo de análisis es más avanzado que el análisis descriptivo.
    Se construye sobre el análisis descriptivo e intenta responder a consultas acerca de
    por qué han sucedido determinadas cosas. Es decir, trata de encontrar las causas raíz
    de los eventos. Intenta encontrar respuestas mediante conceptos avanzados, como
    hipótesis y correlación.
  • Análisis predictivo: este tipo de análisis intenta predecir cosas que tienen una alta
    probabilidad de producirse en el futuro. Genera predicciones basadas en datos
    pasados; la regresión es uno de los ejemplos que se basa en datos anteriores. Por
    ejemplo, el análisis predictivo podría predecir el precio de un coche, el comportamiento
    de acciones en el mercado de valores, cuándo reventará el neumático de un coche
    y mucho más.
  • Análisis futuro: este tipo de análisis es el más avanzado. Esta etapa ayuda a identificar
    la acción que debería realizarse para garantizar que el estado de los dispositivos
    y las soluciones no se degraden y a identificar las medidas proactivas que adoptar.
    Los resultados de esta etapa de análisis pueden ayudar a evitar problemas futuros
    y eliminar los problemas en sus causas raíz.

En la etapa final, el resultado del análisis se presenta de una manera legible para que un
público más amplio pueda entenderlo e interpretarlo. En la siguiente parte hablaremos de
la presentación.
Presentación
El análisis ayuda a identificar respuestas, patrones e información basados en datos. Estos
conocimientos también tienen que estar disponibles para todas las partes interesadas en
formatos que puedan entender. En este sentido, los paneles e informes se pueden generar,
de manera estadística o dinámica, y se pueden presentar, a continuación, a las partes
interesadas. Las partes interesadas pueden consumir estos informes para adoptar acciones
adicionales y mejorar continuamente sus soluciones.
Como resumen rápido de todos los pasos anteriores, hemos empezado esta sección con
un análisis de la conectividad, donde hemos presentado puertas de enlace para enviar los
datos desde dispositivos que no admiten los protocolos estándar. A continuación, hemos
hablado sobre la identidad y cómo se capturan los datos. Los datos capturados se ingieren
y almacenan para su posterior transformación. Después de la transformación, se analizan
los datos antes de presentarse a todas las partes interesadas. A medida que trabajemos en
Azure, en la siguiente sección, examinaremos qué es Azure IoT y tendremos en cuenta los
conceptos básicos que hemos aprendido hasta ahora desde el punto de vista de Azure.

Azure IoT
Ahora conoces mejor las distintas etapas de las soluciones de IoT integrales; cada una de
estas etapas es esencial y su correcta implementación es una condición imprescindible
para el éxito de cualquier solución. Azure proporciona una gran cantidad de servicios para
cada una de estas etapas. Además de estos servicios, Azure proporciona IoT Hub, que es la
plataforma y el servicio de IoT principales de Azure. Es capaz de hospedar soluciones de IoT
complejas, altamente disponibles y escalables. Trataremos con mayor detalle IoT Hub tras
describir algunos otros servicios:

En la siguiente sección, vamos a seguir un patrón similar al que adoptamos para abordar
la arquitectura de IoT con el fin de obtener información sobre comunicación, identidad,
captura, ingesta, almacenamiento, transformación, análisis y presentación con Azure IoT.
Conectividad
IoT Hub proporciona todos los conjuntos de protocolos importantes para que los
dispositivos se conecten a centros de IoT. Ofrece:

  • HTTPS: el protocolo HTTPS utiliza certificados que constan de un par de claves,
    conocidas como claves público-privadas, que se utilizan para cifrar y descifrar datos
    entre un dispositivo e IoT Hub. Proporciona comunicación unidireccional desde un
    dispositivo hasta el cloud.
  • AMQP: AMQP es un estándar del sector para el envío y recepción de mensajes entre
    aplicaciones. Proporciona una infraestructura completa para la seguridad y la fiabilidad
    de los mensajes, y esa es una de las razones por las que se utiliza bastante dentro del
    espacio de IoT. Proporciona capacidades tanto del dispositivo al centro como del centro
    al dispositivo, y los dispositivos pueden usarlo para autenticarse mediante Seguridad
    basada en notificaciones (CBS) o Nivel de seguridad y autenticación simples (SASL).
    Se utiliza principalmente en escenarios donde hay puertas de enlace de campo, y una
    única identidad relacionada con varios dispositivos puede transmitir datos de telemetría
    al cloud.
  • MQTT: MQTT es un estándar del sector para el envío y recepción de mensajes entre
    aplicaciones. Proporciona capacidades tanto del dispositivo al centro como del centro
    al dispositivo. Se utiliza principalmente en escenarios donde cada dispositivo tiene su
    propia identidad y se autentica directamente con el cloud.

En la siguiente sección, analizaremos la identidad y cómo se autentican los dispositivos.
Identidad
IoT Hub también proporciona servicios para la autenticación de dispositivos. Ofrece
una interfaz para generar un hash de identidad único para cada dispositivo. Cuando los
dispositivos envían mensajes que contienen un hash, IoT Hub puede autenticarlos tras
comprobar en su propia base de datos la existencia de este hash. Veamos ahora cómo
se capturan los datos.
Captura
Azure proporciona puertas de enlace de IoT que permiten adaptar los dispositivos no
compatibles con IoT Hub y transferir los datos. Se pueden implementar puertas de enlace
locales o intermedias cerca de los dispositivos, de manera que varios dispositivos se puedan
conectar a una sola puerta de enlace para capturar y enviar su información. Del mismo
modo, también se pueden implementar varios clústeres de dispositivos con una puerta de
enlace local. Puede haber una puerta de enlace de cloud implementada en el propio cloud,
capaz de capturar y aceptar datos de varios orígenes e ingerirlos para IoT Hub. Como hemos
comentado anteriormente, tenemos que ingerir los datos que capturamos. En la siguiente
sección aprenderás sobre la ingesta con IoT Hub.
Ingesta
Un centro de IoT puede ser un único punto de contacto para dispositivos y otras
aplicaciones. En otras palabras, la ingesta de los mensajes de IoT es responsabilidad
del servicio IoT Hub. Existen otros servicios, como Event Hubs y la infraestructura de
mensajería Service Bus, que pueden ingerir mensajes entrantes; sin embargo, los beneficios
y ventajas de usar IoT Hub para la ingesta de datos superan con creces a los de utilizar
Event Hubs y la mensajería Service Bus. De hecho, IoT Hub fue creado específicamente para
la ingesta de mensajes de IoT dentro del ecosistema de Azure, de manera que el resto de
los servicios y los componentes pueda actuar sobre ellos. Los datos ingeridos se almacenan
en el almacenamiento. Antes de realizar cualquier tipo de transformación o análisis, en la
siguiente sección vamos a explorar el rol de almacenamiento en el flujo de trabajo.

Almacenamiento
Azure proporciona varias formas de almacenamiento de mensajes procedentes de
dispositivos de IoT. Estas incluyen el almacenamiento de datos relacionales, datos NoSQL
sin esquema y blobs:

  • Base de datos SQL: la base de datos SQL proporciona almacenamiento de datos
    relacionales, documentos JSON y documentos XML. Proporciona un lenguaje de
    consulta SQL enriquecido y utiliza un SQL server completo como servicio. Los datos
    de los dispositivos se pueden almacenar en bases de datos SQL si estos están bien
    definidos y el esquema no necesitará someterse a cambios con frecuencia.
  • Azure Storage: Azure Storage proporciona almacenamiento de tablas y blobs.
    El almacenamiento de tablas ayuda a almacenar datos como entidades en las que el
    esquema no es importante. Los blobs ayudan a almacenar archivos en contenedores
    como blobs.
  • Cosmos DB: Cosmos DB es una base de datos NoSQL de escala empresarial completa.
    Está disponible como un servicio que es capaz de almacenar datos sin esquema.
    Se trata de una base de datos distribuida globalmente que puede abarcar continentes,
    con alta disponibilidad y escalabilidad de los datos.
  • Orígenes de datos externos: además de los servicios de Azure, los clientes pueden
    aportar o usar sus propios almacenes de datos, como un SQL Server en máquinas
    virtuales de Azure, y pueden usarlos para almacenar datos en un formato relacional.

La siguiente sección trata sobre transformación y análisis.
Transformación y análisis
Azure proporciona varios recursos para ejecutar trabajos y actividades en los datos
ingeridos. A continuación, se indican algunas de ellas:

  • Data Factory: Azure Data Factory es un servicio de integración de datos basado en
    el cloud que nos permite crear flujos de trabajo basados en datos en el cloud para
    orquestar y automatizar el movimiento de datos y su transformación. Azure Data
    Factory ayuda a crear y programar flujos de trabajo basados en datos (denominados
    canalizaciones) que pueden ingerir datos de diferentes almacenes de datos;
    procesar/transformar los datos mediante el uso de servicios de cálculo como Azure
    HDInsight, Hadoop, Spark, Azure Data Lake Analytics, Azure Synapse Analytics y
    Azure Machine Learning; y publicar los datos de salida en un almacén de datos para
    aplicaciones de Business Intelligence (BI) en lugar de una plataforma tradicional
    Extracción, transformación y carga (ETL).
  • Azure Databricks: Databricks proporciona un entorno de Spark completo,
    administrado e integral. Puede ayudar en la transformación de datos mediante
    Scala y Python. También proporciona una biblioteca SQL para manipular datos
    utilizando la sintaxis SQL tradicional. Es más eficaz que los entornos Hadoop.
  • Azure HDInsight: Microsoft y Hortonworks se han unido para ayudar a las empresas
    al ofrecer una plataforma de análisis de Big Data con Azure. HDInsight es un entorno
    de servicio en el cloud completamente administrado y de gran potencia impulsado
    por Apache Hadoop y Apache Spark con Microsoft Azure HDInsight. Ayuda en la
    aceleración de cargas de trabajo sin problemas mediante el uso del servicio de cloud
    de big data líder del sector de Hortonworks y Microsoft.
  • Azure Stream Analytics: se trata de un servicio de análisis de datos en tiempo
    real completamente administrado que ayuda en la realización de cálculos y
    transformaciones en datos de streaming. Stream Analytics puede examinar grandes
    volúmenes de datos que fluyen de dispositivos o procesos, extraer información del
    flujo de datos y buscar patrones, tendencias y relaciones.
  • Machine learning: machine learning es una técnica de ciencia de datos que
    permite a los equipos utilizar los datos existentes para prever comportamientos,
    resultados y tendencias futuros. Mediante el machine learning, los equipos aprenden
    comportamientos basados en el modelo que creamos. Azure Machine Learning es un
    servicio de análisis predictivo basado en el cloud que permite crear e implementar
    rápidamente modelos predictivos como soluciones de análisis. Proporciona una
    biblioteca lista para usar de algoritmos para crear modelos en un PC conectado
    a Internet e implementar con rapidez soluciones predictivas.
  • Azure Synapse Analytics: anteriormente conocido como Azure Data Warehouse.
    Azure Synapse Analytics proporciona servicios de análisis ideales para el
    almacenamiento de datos de categoría empresarial y análisis de Big Data. Admite
    la ingesta de streaming directa, que se puede integrar con Azure IoT Hub.

Ahora que estás familiarizado con las herramientas de transformación y análisis que se
utilizan en Azure para los datos ingeridos por los dispositivos de IoT, sigamos adelante
y aprendamos cómo se pueden presentar estos datos.
Presentación
Después de haber realizado los análisis pertinentes en los datos, los datos se deben presentar
a las partes interesadas en un formato que puedan consumir. Hay numerosas formas en
que se pueden presentar los conocimientos obtenidos de los datos. Entre ellas se incluyen
la presentación de datos mediante aplicaciones web que se han implementado con Azure
App Service, el envío de datos a centros de notificaciones que pueden, a continuación,
enviar notificaciones a aplicaciones móviles y mucho más. Sin embargo, el método ideal
para presentar y consumir los conocimientos es mediante el uso de informes y paneles
de Power BI. Power BI es una herramienta de visualización de Microsoft que se utiliza
para representar paneles e informes dinámicos en Internet.

Para concluir, Azure IoT se corresponde estrechamente con los conceptos básicos de
la arquitectura de IoT. Sigue el mismo proceso; sin embargo, Azure nos da la libertad
de elegir diferentes servicios y dependencias en función de nuestros requisitos. En la
siguiente sección, nos centraremos en Azure IoT Hub, un servicio hospedado en el cloud
y completamente administrado por Azure.
Azure IoT Hub
Normalmente los proyectos de IoT presentan una naturaleza compleja. La complejidad
radica en el gran volumen de dispositivos y datos. Los dispositivos están incrustados por
todo el mundo; un ejemplo sería los dispositivos de supervisión y auditoría que se usan para
almacenar datos, transformar y analizar petabytes de datos y, finalmente, realizar acciones
basadas en información. Además, estos proyectos tienen períodos de gestación largos y sus
requisitos continúan cambiando debido a las escalas de tiempo.
Si una empresa quiere emprender el viaje de realizar un proyecto de IoT, tarde o temprano
descubrirá con rapidez que los problemas que hemos mencionado no se resuelven
fácilmente. Estos proyectos necesitan el hardware suficiente en términos de cálculo y
almacenamiento, así como servicios que puedan trabajar con este tipo de volúmenes
elevados de datos.
IoT Hub es una plataforma que se ha creado para habilitar proyectos de IoT con el objetivo
de que la entrega sea más rápida, mejor y más sencilla. Ofrece todas las características
y servicios necesarios, incluidos los siguientes:

  • Registro de dispositivos
  • Conectividad de dispositivos
  • Puertas de enlace de campo
  • Puertas de enlace en el cloud
  • Implementación de protocolos del sector, como AMQP y el protocolo MQTT
  • Un centro para almacenar mensajes entrantes
  • Enrutamiento de mensajes basado en el contenido y las propiedades del mensaje
  • Varios puntos de conexión para diferentes tipos de procesamiento
  • Conectividad a otros servicios en Azure para análisis en tiempo real y mucho más

Hemos abordado los aspectos generales de Azure IoT Hub, así que vamos a profundizar para
comprender mejor los protocolos y cómo se registran los dispositivos con Azure IoT Hub.

Protocolos
Azure IoT Hub admite de manera nativa la comunicación a través de los protocolos MQTT,
AMQP y HTTP. En algunos casos, es posible que los dispositivos o puertas de enlace de
campo no sean capaces de usar uno de estos protocolos estándar y necesitarán una
adaptación de protocolos. En estos casos, se pueden implementar puertas de enlace
personalizadas. La puerta de enlace del protocolo de Azure IoT permite la adaptación
de protocolos para puntos de conexión de IoT Hub al tender un puente entre el tráfico
entrante y saliente de IoT Hub. En la siguiente sección, analizaremos cómo se registran
los dispositivos con Azure IoT Hub.
Registro de dispositivos
Los dispositivos se deben registrar antes de poder enviar mensajes a IoT Hub. El registro
de dispositivos se puede realizar manualmente mediante el portal de Azure o se puede
automatizar mediante el SDK de IoT Hub. Azure también proporciona aplicaciones de
simulación de ejemplo, mediante las cuales se facilita el registro de dispositivos virtuales
con fines de desarrollo y pruebas. También hay un simulador online de Raspberry Pi que
se puede utilizar como dispositivo virtual y, por lo tanto, existen otros dispositivos físicos
que se pueden configurar para conectarse a IoT Hub.
Si deseas simular un dispositivo desde un PC local que se utiliza normalmente con fines de
desarrollo y pruebas, hay tutoriales disponibles en la documentación de Azure en varios
idiomas. Están disponibles en https://docs.microsoft.com/azure/iot-hub/iot-hub-getstarted-
simulated.
El simulador online de Raspberry Pi está disponible en https://docs.microsoft.com/azure/
iot-hub/iot-hub-raspberry-pi-web-simulator-get-started y para usar dispositivos físicos
que necesitan registrarse con IoT Hub, se deben usar los pasos indicados en https://docs.
microsoft.com/azure/iot-hub/iot-hub-get-started-physical.
Para agregar manualmente un dispositivo mediante Azure Portal, IoT Hub ofrece el
menú Dispositivos de IoT, que puede utilizarse para configurar un nuevo dispositivo.
Al seleccionar la opción Nuevo, podrás crear un nuevo dispositivo como se muestra en
la Figura 17.4:

Tras crear la identidad del dispositivo, se debe usar una cadena de conexión de clave
principal para IoT Hub en cada dispositivo que se va a conectar con este:

En esta etapa, el dispositivo se ha registrado en IoT Hub y nuestra siguiente misión es hacer
que haya comunicación entre el dispositivo e IoT Hub. En la siguiente sección aprenderás
bien cómo se realiza la administración de mensajes.
Administración de mensajes
Una vez se han registrado los dispositivos con IoT Hub, ya pueden empezar a interactuar
con él. La administración de mensajes hace referencia a cómo se realiza la comunicación
o interacción entre el dispositivo de IoT e IoT Hub. Esta interacción puede ser del
dispositivo al cloud o del cloud al dispositivo.

Mensajería de dispositivo a cloud
Una de las prácticas recomendadas que se debe seguir en esta comunicación es que
aunque el dispositivo pueda estar capturando una gran cantidad de información, solo se
deben transmitir al cloud aquellos datos que realmente sean importantes. El tamaño del
mensaje es muy importante en las soluciones de IoT puesto que las soluciones de IoT
tienen normalmente volúmenes de datos muy altos. Hasta 1 KB de datos adicionales que
fluyen puede provocar que se desperdicie un GB de almacenamiento y procesamiento.
Cada mensaje tiene propiedades y cargas útiles; las propiedades definen los metadatos del
mensaje. Estos metadatos contienen datos sobre el dispositivo, la identificación, etiquetas
y otras propiedades que resultan útiles en el enrutamiento y la identificación de mensajes.
Los dispositivos o puertas de enlace en el cloud se deben conectar a IoT Hub para
transferir datos. IoT Hub proporciona puntos de conexión públicos que pueden utilizar
los dispositivos para conectarse y enviar los datos. IoT Hub se debe considerar como el
primer punto de contacto para el procesamiento de back-end. IoT Hub es capaz de seguir
transmitiendo y enrutando estos mensajes a varios servicios. De manera predeterminada,
los mensajes se almacenan en centros de eventos. Se pueden crear varios centros de
eventos para diferentes tipos de mensajes. Los puntos de conexión integrados que utilizan
los dispositivos para enviar y recibir datos se pueden ver en la hoja Puntos de conexión
integrados (Built-in endpoints) en IoT Hub. En la Figura 17.6 se muestra cómo encontrar
los puntos de conexión integrados:

Los mensajes se pueden enrutar a diferentes puntos de conexión según las propiedades de
cuerpo y encabezado del mensaje, como se muestra en la Figura 17.7:

Los mensajes de un centro de IoT permanecen allí durante siete días de forma
predeterminada y su tamaño puede llegar hasta los 256 KB.
Hay un simulador de ejemplo proporcionado por Microsoft para simular el envío de
mensajes al cloud. Está disponible en varios lenguajes; la versión C# se puede consultar
en https://docs.microsoft.com/azure/iot-hub/iot-hub-csharp-csharp-c2d.
Mensajería de cloud a dispositivo
IoT Hub es un servicio administrado que proporciona una infraestructura de mensajería
bidireccional. Los mensajes se pueden enviar desde el cloud a los dispositivos y,
a continuación, en función del mensaje, los dispositivos pueden actuar sobre ellos.
Hay tres tipos de patrones de mensajería de cloud a dispositivo:

  • Los métodos directos requieren una confirmación inmediata de los resultados. Los
    métodos directos se utilizan a menudo para el control interactivo de dispositivos, como
    la apertura y el cierre de puertas de garaje. Siguen el patrón de solicitud-respuesta.
  • La configuración de propiedades del dispositivo con Azure IoT proporciona propiedades
    de dispositivo gemelo. Por ejemplo, puedes establecer el intervalo de envío de telemetría
    en 30 minutos. Los dispositivos gemelos son documentos JSON que almacenan
    información de estado del dispositivo (como metadatos, configuraciones y condiciones).
    Un centro de IoT conserva un dispositivo gemelo para cada dispositivo del centro de IoT.
  • Los mensajes del cloud al dispositivo se utilizan para notificaciones unidireccionales en
    la aplicación del dispositivo. Aquí se sigue el patrón de enviar y olvidar (fire and forget).

En todas las organizaciones, la seguridad es una gran preocupación, e incluso en el caso
de los dispositivos y los datos de IoT, esta preocupación sigue ahí. Vamos a hablar de la
seguridad en la siguiente sección.
Seguridad
La seguridad es un aspecto importante de las aplicaciones basadas en IoT. Las aplicaciones
basadas en IoT constan de dispositivos que utilizan la conexión a Internet público para la
conectividad con aplicaciones de back-end. La protección de dispositivos, aplicaciones de
back-end y conectividad frente a usuarios malintencionados y hackers se debe considerar
como una prioridad máxima para el éxito de estas aplicaciones.
Seguridad en IoT
Las aplicaciones de IoT se construyen principalmente en torno a Internet y la seguridad
debe desempeñar un papel importante para garantizar que una solución no se vea
comprometida. Algunas de las decisiones más importantes de seguridad que afectan
a la arquitectura de IoT se enumeran aquí:

  • Respecto a los dispositivos que utilizan puntos de conexión RES HTTPS y HTTP, los
    puntos de conexión REST protegidos por certificados garantizan que los mensajes
    transferidos de un dispositivo al cloud y viceversa estén cifrados y firmados
    correctamente. Los mensajes no deben tener sentido para un intruso y deben ser
    muy difíciles de descifrar.
  • Si los dispositivos están conectados a una puerta de enlace local, esta se debe conectar
    al cloud mediante un protocolo HTTP seguro.
  • Los dispositivos se deben registrar en IoT Hub antes de poder enviar cualquier mensaje.
  • La información transferida al cloud se debe conservar en un almacenamiento que
    esté bien protegido y sea seguro. Para la conexión se deben usar los tokens SAS
    o las cadenas de conexión correspondientes que se almacenan en Azure Key Vault.
  • Se debe utilizar Azure Key Vault para almacenar todos los secretos, contraseñas
    y credenciales, incluidos los certificados.
  • Azure Security Center para IoT proporciona prevención y análisis de amenazas
    para cada dispositivo, IoT Edge e IoT Hub en todos tus activos de IoT. Podemos crear
    nuestros propios paneles en Azure Security Center basados en las evaluaciones de
    seguridad. Algunas características clave incluyen la administración central de Azure
    Security Center, la protección adaptable contra amenazas y la detección inteligente
    de amenazas. Es una práctica recomendada tener en cuenta Azure Security Center al
    implementar soluciones de IoT seguras.

A continuación, vamos a ver el aspecto de la escalabilidad de IoT Hub.

Escalabilidad
La escalabilidad de IoT Hub es algo diferente a la de otros servicios. En IoT Hub, hay dos
tipos de mensajes:

  • Entrante: mensajes del dispositivo al cloud
  • Saliente: mensajes del cloud al dispositivo

Ambos tienen que evaluarse en términos de escalabilidad.
IoT Hub ofrece un par de opciones de configuración durante el tiempo de aprovisionamiento
para configurar la escalabilidad. Estas opciones también están disponibles después del
aprovisionamiento y se pueden actualizar para adaptarse mejor a los requisitos de la solución
en términos de escalabilidad.
Las opciones de escalabilidad que están disponibles para IoT Hub son las siguientes:

  • La edición SKU (referencia de almacén), que es el tamaño de IoT Hub
  • El número de unidades

Primero examinaremos la opción de edición SKU.
La edición SKU
La SKU en IoT Hub determina el número de mensajes que puede gestionar un centro por
unidad al día y esto incluye tanto mensajes entrantes como salientes. Hay cuatro niveles,
como se muestra a continuación:

  • Gratis: permite 8000 mensajes por unidad al día y permite mensajes entrantes
    y salientes. Se puede aprovisionar 1 unidad como máximo. Esta edición es apta
    para familiarizarse con el sistema y probar las capacidades del servicio IoT Hub.
  • Estándar (S1): permite 400 000 mensajes por unidad al día y permite mensajes
    entrantes y salientes. Se pueden aprovisionar 200 unidades como máximo. Esta
    edición es apta para un número pequeño de mensajes.
  • Estándar (S2): permite 6 millones de mensajes por unidad al día y permite mensajes
    entrantes y salientes. Se pueden aprovisionar 200 unidades como máximo. Esta
    edición es apta para un número grande de mensajes.
  • Estándar (S3): permite 300 millones de mensajes por unidad al día y permite mensajes
    entrantes y salientes. Se pueden aprovisionar 10 unidades como máximo. Esta edición
    es apta para un número muy grande de mensajes.

Las opciones de actualización y escalado están disponibles en Azure Portal, bajo la hoja
Precios y escala (Pricing and scale) de IoT Hub. Te aparecerán las opciones como se
muestra en la Figura 17.8:

Puedes observar que el nivel Estándar S3 permite solo un máximo de 10 unidades
en comparación con el resto de las unidades estándar, que permiten un máximo de
200 unidades. Esto está directamente relacionado con el tamaño de los recursos
informáticos que se aprovisionan para ejecutar servicios de IoT. El tamaño y la capacidad
de las máquinas virtuales para Estándar S3 son considerablemente superiores a otros
niveles donde el tamaño sigue siendo el mismo.
Unidades
Las unidades definen el número de instancias de cada SKU en que se ejecuta el servicio.
Por ejemplo, 2 unidades del nivel SKU Estándar S1 significará que el centro de IoT es capaz
de gestionar 400 000 * 2 = 800 000 mensajes al día.
Un mayor número de unidades aumentará la escalabilidad de la aplicación. En la Figura 17.9
se muestra la hoja Precios y escala (Pricing and scale) de IoT Hub, donde puedes ver el nivel
de precios actual y el número de unidades:

Uno de los servicios en auge de Azure IoT Hub en este momento es Azure IoT Edge,
un servicio completamente administrado integrado en Azure IoT Hub. En la siguiente
sección exploraremos qué es Azure IoT Edge.
Azure IoT Edge
Microsoft Azure IoT Edge aprovecha el proceso perimetral para implementar soluciones
de IoT. El proceso perimetral hace referencia a los recursos de computación que están
disponibles en la red on-premises, justo al final de la red, donde comienza el Internet
público. Esto se puede implementar en la red principal o en una red invitada con
aislamiento de firewall.
Azure IoT Edge comprende el entorno de ejecución de Azure IoT Edge, que debe instalarse
en un equipo o un dispositivo. Docker se instalará en el equipo; el equipo puede ejecutar
Windows o Linux. El rol de Docker es ejecutar los módulos de IoT Edge.
Azure IoT Edge se basa en el concepto de cloud híbrido, donde puedes implementar
y administrar soluciones de IoT en hardware on-premises e integrarlas fácilmente con
Microsoft Azure.
Microsoft proporciona documentación exhaustiva para Azure IoT Edge, con plantillas de
inicio rápido y orientación sobre cómo instalar los módulos. El enlace a la documentación
es https://docs.microsoft.com/azure/iot-edge.
En la siguiente sección, vamos a ver cómo se administra la infraestructura en el caso de
Azure IoT Hub y cómo se proporciona a los clientes la alta disponibilidad.
Alta disponibilidad
IoT Hub es una plataforma como servicio (PaaS) que ofrece Azure. Los consumidores
y usuarios no interactúan directamente con el número y el tamaño subyacentes de las
máquinas virtuales en las que se ejecuta el servicio IoT Hub. Los usuarios deciden la región,
la SKU del centro de IoT y el número de unidades para su aplicación. Azure se encarga de
determinar y ejecutar el resto de la configuración. Azure se asegura de que cada servicio
PaaS ofrece un alto nivel de disponibilidad de manera predeterminada. Para ello, se asegura
de que varias máquinas virtuales aprovisionadas que ejecutan el servicio estén ubicadas en
bastidores separados en el centro de datos. Para lograrlo, coloca esas máquinas virtuales
en un conjunto de disponibilidad y en un dominio de error y actualización diferente.
Esto ayuda a garantizar una alta disponibilidad para el mantenimiento planificado y no
planificado. Los conjuntos de disponibilidad se ocupan de la alta disponibilidad en el nivel
de centro de datos.
En la siguiente sección, analizaremos Azure IoT Central.

Azure IoT Central
Azure IoT Central proporciona una plataforma para crear aplicaciones de IoT de
nivel empresarial que cumplen los requisitos de tu empresa de una manera segura,
fiable y escalable. IoT Central elimina el coste de desarrollar, mantener y administrar
soluciones de IoT.
IoT Central proporciona una administración centralizada mediante la cual puedes
administrar y supervisar dispositivos, condiciones de dispositivos, creación de reglas
y datos de dispositivos. En la Figura 17.10 puedes ver algunas de las plantillas que están
disponibles en Azure Portal durante la creación de aplicaciones de IoT Central:

Las plantillas te darán una ventaja y puedes personalizarlas según tus requisitos. Esto te
ahorrará mucho tiempo durante la fase de desarrollo.
IoT Central ofrece una prueba de siete días en el momento de redactar este documento
y puedes ver el precio de este servicio aquí: https://azure.microsoft.com/pricing/details/
iot-central/?rtc=1.
Azure IoT Central es una ventaja para todas las organizaciones que desarrollan aplicaciones
de IoT.
Resumen
IoT es una de las tecnologías emergentes más importantes de esta década y ya está
revolucionando los sectores. Las cosas que antes sonaban imposibles ahora, de repente,
son posibles.
En este capítulo, hemos explorado IoT Hub y hemos analizado la entrega de soluciones
de IoT al cliente de una manera más rápida, mejor y más económica que las soluciones
alternativas. También hemos abordado cómo el IoT puede acelerar todo el ciclo de vida
de desarrollo y ayuda a agilizar las estrategias de comercialización de las empresas.
Por último, has conocido mejor Azure IoT Edge y Azure IoT Central.
Para ayudarte a analizar eficazmente volúmenes de datos en constante crecimiento,
hablaremos de Azure Synapse Analytics en el siguiente capítulo.