Los productos de plataforma de IoT suelen proporcionar conectividad de datos básica de MQTT y HTTPS. También te permiten aprovisionar dispositivos y proporcionan autenticación y administración, almacenamiento y visualización de métricas, procesamiento de datos y alertas. Las organizaciones suelen usar plataformas de IoT cuando un agente de MQTT independiente no es suficiente para un caso de uso y se necesita un producto de plataforma de IoT más completo. Una plataforma de IoT proporciona una interfaz unificada para administrar una colección heterogénea de dispositivos. Esta interfaz es importante para muchas aplicaciones de dispositivos conectados y es una diferencia clave entre una plataforma de IoT y un agente de MQTT independiente. En este documento, se describen las consideraciones básicas de la arquitectura y las recomendaciones que debes realizar antes de implementar una arquitectura de productos de la plataforma de IoT en Google Cloud.
Este documento es parte de una serie de documentos que proporcionan información sobre las arquitecturas de IoT en Google Cloud. Los otros documentos de esta serie incluyen lo siguiente:
- Descripción Google Cloud general de las arquitecturas de dispositivos conectados en Google Cloud
- Arquitectura del agente de MQTT independiente en Google Cloud
- Arquitectura de productos de la plataforma de IoT en Google Cloud (este documento)
- Prácticas recomendadas para ejecutar un backend de IoT en Google Cloud
- Arquitectura de dispositivo en Pub/Sub a Google Cloud
- Prácticas recomendadas para aprovisionar y configurar de forma automática sistemas y servidores perimetrales y bare metal
En el siguiente diagrama, se muestra un ejemplo de la arquitectura con un producto genérico de plataforma de IoT que se ejecuta en Google Cloud.
Como se muestra en el diagrama anterior, la plataforma de IoT implementa un agente o un extremo MQTT para la conectividad de los dispositivos. La plataforma de IoT está conectada a un balanceador de cargas de red de proxy externo para distribuir el tráfico de los dispositivos perimetrales. Las aplicaciones de IoT adicionales se pueden conectar a la plataforma de IoT a través de Pub/Sub o con el conector de MQTT de Dataflow.
La plataforma IoT proporciona un conjunto de servicios de administración de dispositivos. Como se muestra en el diagrama, estos servicios son los siguientes:
- Almacén de credenciales del dispositivo
- Motor de reglas
- Autenticación y autorización de dispositivos
- Administración de la configuración del dispositivo
- Registro de dispositivos
- Administración de actualizaciones de dispositivos
Por lo general, los productos de la plataforma de la IoT también incluyen servicios como funciones de gemelos digitales, interfaces de desarrollo de código bajo, capacidades de alertas y notificaciones, y otras funciones de análisis.
Consideraciones y elecciones de arquitectura
En las siguientes secciones, se describen las opciones de arquitectura que puedes tomar para una arquitectura de producto de plataforma de IoT y el impacto de estas opciones.
Extremos de transferencia
La mayoría de las aplicaciones comerciales de plataformas de IoT incluyen un extremo MQTT y, por lo general, también un extremo HTTPS para la transferencia de datos desde dispositivos conectados.
MQTT
Una plataforma de IoT implementa un extremo MQTT de una de las siguientes maneras:
- Un conector entre MQTT y otro servicio de mensajes
- Un agente de MQTT que implemente la especificación completa de MQTT
Cuando evalúes plataformas comerciales de la IoT, es importante saber cuál de los enfoques anteriores eligió el proveedor para el producto, de modo que puedas determinar las implicaciones para tu caso de uso.
En algunos casos, el extremo de MQTT solo conecta a los clientes de MQTT con un servicio de mensajería de backend, como Kafka o Pub/Sub. Por lo general, este tipo de extremo no implementa la especificación completa del protocolo MQTT y, a menudo, no incluye funciones como los niveles de QoS 1 y 2, ni las suscripciones compartidas. La ventaja de este enfoque es que disminuye la complejidad en la plataforma de IoT, ya que no hay una aplicación de agente de MQTT independiente. Los costos operativos son más bajos y el mantenimiento es más sencillo que si la plataforma usa un agente de MQTT independiente. Sin embargo, debido a la compatibilidad reducida con las funciones más avanzadas del protocolo MQTT, este enfoque implica que hay menos flexibilidad y funcionalidad para el transporte de mensajes MQTT que un agente MQTT independiente que implementa la especificación MQTT completa.
Otras plataformas de IoT proporcionan un agente de MQTT completo como parte de la plataforma, como se muestra en la arquitectura de ejemplo de este documento. Este agente puede ser uno de los agentes de código abierto existentes o una implementación de agente propietario. Un agente de MQTT completo proporciona la función MQTT bidireccional completa que se describió anteriormente, pero un agente completo puede agregar complejidad y costos operativos a la administración de la plataforma de IoT.
HTTPS y otros protocolos complementarios
Además de MQTT, muchas plataformas de la IoT proporcionan más extremos de transferencia de datos que los que se muestran en la arquitectura principal que se describe en este documento.
HTTPS es un protocolo alternativo común a MQTT para casos de uso de dispositivos conectados. Tiene una sobrecarga mayor que MQTT, pero es más compatible con dispositivos móviles, como teléfonos, navegadores web y otras aplicaciones. Se usa con frecuencia en ciertas aplicaciones de dispositivos conectados y es compatible con plataformas de código abierto como Eclipse Hono y muchos productos comerciales.
Muchas aplicaciones de dispositivos con restricciones usan el protocolo de aplicación restringida (CoAP), definido en RFC 7252, como alternativa a MQTT. CoAP se orienta a clientes de baja sobrecarga y huella pequeña para dispositivos y sensores incorporados. Muchas aplicaciones comerciales de plataformas de la IoT también proporcionan un extremo de CoAP.
Balanceo de cargas
Si deseas obtener más información para elegir el mejor balanceador de cargas para tu arquitectura, consulta la sección de balanceo de cargas de la arquitectura del agente de MQTT independiente en Google Cloud, ya que esas consideraciones también se aplican a este caso.
Autenticación de dispositivos y administración de credenciales
La administración de las credenciales y la autenticación de los dispositivos es una parte clave del funcionamiento de una plataforma de IoT. Los métodos de autenticación que admiten los dispositivos conectados varían mucho entre las aplicaciones y los factores de forma de los dispositivos. Es importante seleccionar el método de autenticación adecuado para el caso de uso de destino y, luego, implementar el esquema de autenticación elegido correctamente.
A diferencia de un agente de MQTT independiente, una plataforma de IoT proporciona servicios integrados para administrar la identidad y las credenciales del dispositivo. La mayoría de las plataformas de IoT usan la autenticación de certificados de cliente X.509, la autenticación basada en tokens JWT (a menudo combinada con OAuth 2.0) y la autenticación de nombre de usuario y contraseña. Algunas plataformas también admiten la integración con un proveedor de autenticación LDAP externo.
Para algunos dispositivos con limitaciones, la autenticación de JWT o nombre de usuario y contraseña podría ser más apropiada, ya que estos esquemas requieren menos recursos en un dispositivo conectado. Cuando usas la autenticación de JWT o de nombre de usuario y contraseña, es importante que encriptes la conexión de red por separado de la autenticación de mTLS, ya que ninguno de estos métodos de autenticación requiere una conexión encriptada. En cambio, la autenticación de certificados X.509 consume más recursos en el dispositivo conectado, pero suele usarse en una conexión encriptada con mTLS y, por lo tanto, proporciona un alto nivel de seguridad.
Aprovisionar las credenciales de autenticación en el dispositivo perimetral durante el proceso de fabricación también es una parte importante del esquema de autenticación de dispositivos conectados, pero está fuera del alcance de este documento.
Para obtener más información sobre la autenticación y la administración de credenciales, consulta Prácticas recomendadas para ejecutar un backend de IoT en Google Cloud.
Administrar dispositivos conectados
Por lo general, los dispositivos conectados publican información de estado y eventos de telemetría en la plataforma a través de uno de los extremos de transferencia, como MQTT. Si usas una plataforma de IoT multiprotocolo, los dispositivos pueden comunicarse con cualquiera de los protocolos compatibles.
Te recomendamos que tu organización use una plataforma de IoT que tenga las siguientes funciones:
- Actualizaciones de software y del sistema: La entrega y la reversión de actualizaciones de firmware, software y aplicaciones a los dispositivos conectados. Por lo general, estas actualizaciones también implican el almacenamiento y la administración de las actualizaciones.
- Actualizaciones de configuración: La entrega, el almacenamiento y la reversión de actualizaciones de la configuración de las aplicaciones implementadas en los dispositivos conectados.
- Creación y administración de credenciales: La creación de credenciales de dispositivos nuevas, la entrega de esas credenciales al dispositivo conectado, la auditoría de la actividad y los intentos de acceso del dispositivo, y la revocación de credenciales comprometidas o vencidas en el momento adecuado.
- Motor de reglas y procesamiento de datos: La definición y ejecución de reglas basadas en datos y otros pasos de procesamiento de datos. Esta función suele incluir algún tipo de interfaz de poco código para definir reglas y canalizaciones de procesamiento de datos.
Cargas de trabajo del backend
La mayoría de las plataformas de IoT proporcionan sus propias capacidades internas de almacenamiento y transporte de datos que te permiten conectarte a tus cargas de trabajo y aplicaciones de backend. AMQP, RabbitMQ y Kafka se usan con frecuencia para proporcionar transporte de datos interno. Todos se pueden conectar a Pub/Sub con el SDK de Pub/Sub. También puedes usar un sistema de base de datos integrado, como PostgreSQL, para almacenar datos en la plataforma. En muchos casos, la plataforma de IoT se puede configurar para usar uno de los productos de Cloud Storage directamente, como Cloud SQL, Firebase o BigQuery.
Si la plataforma de IoT tiene un agente de MQTT completo, las aplicaciones de backend también pueden comunicarse con los dispositivos mediante la función MQTT de la plataforma. Si la aplicación admite MQTT, puede conectarse con el agente como suscriptor. Si no hay compatibilidad con MQTT, Apache Beam proporciona un controlador MQTT, que habilita la integración bidireccional con Dataflow y otras implementaciones de Beam.
Casos de uso
En las siguientes secciones, se describen situaciones de ejemplo en las que una plataforma de IoT es una mejor opción arquitectónica que un agente de MQTT independiente o una conexión directa a Pub/Sub.
Administración de electrodomésticos inteligentes
Las aplicaciones que administran varios electrodomésticos inteligentes son adecuadas para una plataforma de IoT. Un ejemplo de esta aplicación es una plataforma para administrar electrodomésticos de cocina, como lavavajillas y cafeteras. Por lo general, estos dispositivos se conectan a una aplicación basada en la nube, ya sea directamente a través de Wi-Fi o a través de una puerta de enlace local que usa Bluetooth de bajo consumo (BLE) o algún otro protocolo local. Las capacidades de administración de una plataforma de IoT son importantes para supervisar el estado de cada dispositivo, administrar las actualizaciones de software y los parches de seguridad, y capturar la actividad del dispositivo para proporcionar información estratégica fundamental al fabricante y al cliente. Estas funciones están fuera del alcance de un agente de MQTT básico. Como mínimo, un repositorio de información del dispositivo, una base de datos del estado del dispositivo, un almacén de datos de telemetría y una interfaz de análisis son fundamentales para crear una plataforma de electrodomésticos inteligentes exitosa.
Logística y seguimiento de recursos
Para una aplicación de seguimiento de logística y activos, un producto de la plataforma de IoT ofrece una funcionalidad más completa que un agente de MQTT básico, por lo que es una mejor opción para este caso de uso. La supervisión del estado y la ubicación actuales y anteriores de una gran flota de activos depende de una base de datos sólida del estado del dispositivo y un sistema de administración de identidades. A medida que se implementan nuevos recursos, deben conectarse a la plataforma con la menor fricción posible y, luego, supervisarse durante todo el ciclo de vida del recurso. En muchos casos, la aplicación también recopila otra información del sensor sobre el recurso, como la temperatura, la humedad y la presión atmosférica locales, o los datos de posicionamiento y aceleración en 3D para detectar movimientos o caídas inesperados. Todos estos datos se deben transferir y asociar con el recurso correcto para el análisis en cualquier aplicación de backend, por lo que la administración de dispositivos con todas las funciones que proporciona la plataforma de IoT es una función importante.
¿Qué sigue?
- Obtén información para conectar dispositivos y compilar aplicaciones de IoT en Google Cloud con Intelligent Products Essentials.
- Obtén información sobre las prácticas para aprovisionar y configurar automáticamente sistemas y servidores perimetrales y bare metal.
- Para obtener más información sobre las arquitecturas de referencia, los diagramas y las prácticas recomendadas, explora Cloud Architecture Center.