Índice:
Conectividad del dispositivo
El primer punto a la hora de comenzar a diseñar la solución técnica del sistema IoT debería ser a partir de las capacidades del dispositivos y en concreto a partir de la conectividad, porque las características de la conectividad podrían condicionar el resto del diseño.
Puede que el dispositivo que vayamos a conectar disponga de una electrónica con capacidad de comunicación a Internet (Wifi, red móvil 3G, 4G, 5G, LTE, Bluetooth, LPWA…) y potencia suficiente como para poder gestionar las comunicaciones. En ese caso, las posibilidades de comunicación las marcará las limitaciones del propio dispositivo.

En caso de que el dispositivo que queramos conectar a una solución IoT no disponga de capacidad de comunicación a Internet habría que acoplar un módulo de comunicaciones externo o gateway que dotará de conectividad a Internet a nuestro dispositivo. Para ello, es necesario que nuestro dispositivo tenga algún tipo de conectividad local (modbus RS-485, RS-322, USB o similar) que permita a su vez conectar un gateway que sea el que procese toda la comunicación entre bidireccional entre el dispositivo final y la plataforma IoT.
Este gateway o módulo de comunicaciones se trataría de un pequeño dispositivo, que bien podría ser totalmente externo o bien podría ir integrado en el propio dispositivo.
Existen en el mercado diferentes gateways con las características necesarias que podrían encajar. Aunque, desde el punto de vista de los costes y flexibilidad, una posibilidad a contemplar seriamente es desarrollar este gateway a medida. Actualmente existen componentes muy económicos que permitirían implementar un gateway con las características exactas, a un precio de derribo, alejados de los precios de los productos de mercado.
Ya sea mediante una conectividad propia de la electrónica del dispositivo o mediante un gateway/módulo de comunicaciones externo, la conectividad disponible condicionarán el diseño de la solución técnica.
Comparativa plataformas IoT
Una de las mayores dudas a la hora de diseñar la solución de un sistema basado en IoT es la plataforma sobre la que plantear el proyecto. Hacer uso de infraestructura propia o hacerlo basado en una nube pública.
Debido a las características que un proyecto IoT tiende a tomar (dispositivos remotos distribuidos por todo el mundo, necesidad variable de capacidad de procesamiento según momentos, aumento incremental del volumen de dispositivos del sistema, variedad de canales de comunicación e integraciones, necesidades de procesamiento de un gran volumen de datos, requisitos de elevada seguridad de acceso al sistema, etc. ) la mayoría de los proyectos encajan mejor en soluciones basadas en servicios que proveen plataformas en la nube debido a principalmente características como:
- La poca inversión inicial que requiere con pocos volúmenes (generalmente con una importante capa gratuita que permite poner el marcha el sistema con un pequeño coste)
- Mecanismos seguros, consolidados para aprovisionamientos y comunicaciones seguras
- Gran abanico de soluciones para todo tipo de necesidades
- Gran interoperabilidad entre sistemas
- Reducción de necesidad de desarrollos, haciendo uso de los servicios que las plataformas proveen.
- Largo etc.
Son principalmente tres las plataformas en la nube que proveen de servicios IoT que pueden garantizar unos elevados niveles de servicio sobre los que asentar las bases tecnológicas de nuestra solución IoT:
AWS IoT
AWS IoT es la plataforma de Amazon Web Services (AWS) que permite conectar dispositivos a servicios de AWS.

Ventajas
- Es la plataforma más madura y con mayor cuota de mercado.
- Dispone un amplio catálogo de funciones y servicios en nube en continuo crecimiento.
- Dispone de una documentación detallada sobre servicios y casos de uso.
- Desde el punto de vista de dispositivo embebido, el Sistema Operativo FreeRTOS facilita mucho la programación y administración de los terminales.
Desventajas
- Algunos servicios son más caros que los servicios homólogos de otras plataformas.
Azure IoT
Azure IoT es la plataforma en la nube de Microsoft que provee servicios para el desarrollo de plataformas IoT.

Ventajas
- Permite conectarse con PowerBi y recopilar proyectos existentes del ecosistema Microsoft (Office, SQL Server, SharePoint, .Net…).
- Dispone de muchas herramientas de visualización de información y presentación de datos en tiempo real.
- Tiene un buen rendimiento de procesado de grandes volúmenes de datos.
- Dispone de una documentación detallada sobre servicios y un buen soporte técnico.
Desventajas:
- El desarrollo/configuración de nuevos servicios son más costosos que el resto de proveedores.
- Incompatibilidad con el navegador web Safari.
Google Cloud IoT
Google Cloud IoT es una plataforma de Google que provee servicios para el desarrollo de plataformas IoT.

Ventajas
- Dispone de potentes herramientas en aprendizaje automático e inteligencia artificial (como Tensor Flow).
- Compatible con todos los navegadores.
Desventajas
- No es tan maduro ni dispone de tantos servicios como el resto de plataformas en la nube.
- La documentación no siempre es suficiente.
- La autenticación y provisión de los dispositivos es más compleja que en el resto de plataformas en la nube.
- Sólo admite protocolos HTTP y GRPC (no admite MQTT ni AMQPS).
Aunque algunas plataformas tienen un mayor abanico de soluciones e integraciones todas las plataformas son perfectamente válidas y proveen de similares soluciones. Como es lógico, la elección de la plataforma depende de las necesidades y casos de uso que se prevé que tenga la plataforma.
Es importante tener claras las características del propio dispositivo y tener claros también los requisitos del sistema ya que algunas de estas consideraciones (conectividad/protocolos soportados por el dispositivo, SDK o SO soportado en el dispositivo, requisitos de seguridad, provisión/plataformado de los dispositivos, etc.) podrían condicionar la elección de la plataforma.
En NTS Seidor trabajamos con todas las plataformas y adaptándonos a las necesidades de cada proyecto, con independencia de la plataforma a implementar. Si tienes dudas de cómo plantear la solución técnica ponte en contacto con nosotros y te ayudaremos.
Riesgos IoT
Son muchos los aspectos de seguridad IoT y riesgos que la solución debe contemplar. Como cualquier sistema que provee servicios, éstos deben controlar debidamente la autenticación y autorización del acceso a éstos.
No es objeto de este artículo profundizar en todos los aspectos de seguridad que los sistemas deben disponer, pero es necesario destacar que los sistemas con estas características en la que hay dispositivos IoT remotos “fuera del control” suponen el eslabón más débil desde el punto de vista de la seguridad.
Por lo que requiere de especial atención. Este es uno de los puntos donde las plataformas en la nube proveen de mecanismos que facilitan la implementación del nivel de seguridad necesario. La seguridad de las comunicaciones de los dispositivos comienza en el plataformado que se realiza en fábrica, es decir, antes de que los dispositivos IoT salgan de fábrica se debe realizar una serie de acciones que preparan el dispositivo para las comunicaciones seguras. Las acciones que deben realizarse en el plataformado en fábrica dependen del aprovisionamiento y del mecanismo de securización que se vaya a implementar.
Nota. El aprovisionamiento o provisión del dispositivo es la acción que realiza el dispositivo IoT para registrarse e identificarse en la plataforma IoT.
Existen diferentes métodos para confirmar la identidad de un dispositivo y diferentes mecanismos de securización del aprovisionamiento. La elección del mecanismo de securización dependerá de múltiples factores, entre ellos la elección de la propia plataforma IoT ya que no todas las plataformas IoT soportan todos los mecanismos de securización (Azure IoT soporta sólo la autenticación de dispositivo basado en Token SAS; mientras que AWS IoT también soporta la autenticación con certificado cliente X.509).
Cada plataforma también dispone de diferentes mecanismos de provisión de los dispositivos IoT: Provisión manual, Just In Time (JIT) provisioning, Just In Time Registration (JIR), provisionamiento por lotes, etc.

El mecanismo de securización y aprovisionamiento de los dispositivos IoT escogidos condicionarán las acciones que serán necesarias implementar durante el plataformado de éstas en fábrica.
En cualquier caso, sea cual sea el mecanismo de securización de los distintos dispositivos IoT, es importante contemplar desde un principio la gestión de los accesos remotamente de forma que, entre otras acciones, puedan revocarse remotamente los accesos a los dispositivos IoT.
Mencionar que es posible robustecer la securización de los dispositivos IoT haciendo uso de elementos hardware como los cripto chip, que permiten asegurar las claves de cifrado de forma que un posible atacante lo tendría realmente complicado acceder a dichas claves/certificados para manipular el sistema.

Escalabilidad de sistema
La escalabilidad del sistema en cuanto a crecimiento del volumen de dispositivos IoT conectados a nuestro sistema no supondrá un problema para cualquiera de las plataformas IoT en la nube anteriormente indicadas. Todos los Hub’s IoT soportan una ingente cantidad de dispositivos y de intercambio de mensajes. No obstante, un mal diseño de la solución técnica podría generar cuellos de botella a medida que los volúmenes crecen y los elementos más delicados que conforman los flujos de nuestro sistema (desde el Hub IoT, pasando por el Middleware y terminando en el/los fronted que explotan los datos) podrían suponer un problema de escalabilidad.

Las soluciones que contemplan dispositivos IoT deben resolver los problemas de escalabilidad como cualquier otro sistema informático que prevé un crecimiento de volumen de uso o volumen de información, pero hay ciertos aspectos que son especialmente sensibles a la escalabilidad. Requieren especial atención los flujos relacionados con aspectos como los siguientes:
En sistemas distribuidos como los basados en dispositivos IoT la visibilidad es fundamental para un correcto mantenimiento del sistema, además de para la explotación de la información que el sistema va generando.
A medida que el volumen de los dispositivos aumenta, junto con el aumento del uso que se hace del sistema, el volumen de logs generados por la actividad de los dispositivos IoT remotos supone un reto.
La combinación del volumen de almacenamiento de los datos junto con los tiempos de respuesta de la explotación de éstos puede suponer un coste muy elevado de infraestructura. Es importante definir desde un principio cuales son los requisitos de explotación de los datos (gráficas online, informes batch, etc.) para diseñar adecuadamente la solución de gestión de logs que mejor se adapte a las necesidades. De lo contrario puede suponer un coste recurrente muy elevado.
Un factor muy relevante que condiciona la solución y en consecuencia el coste es la retención de los datos, es decir, el tiempo durante el que queremos almacenar los datos generados por el sistema. En función de los requisitos, se deben plantear soluciones combinando funcionalidades concretas con los diferentes tipos de almacenamiento de los datos. Para ello existen almacenamientos en caliente (o warm), frío (cold) o ultrafrío (ultracold) con diferentes capacidades y tiempos de respuesta que con una estrategia adecuada y combinándolos convenientemente se puede diseñar una solución de gestión de logs que suponga el menor gasto posible.
Como en cualquier sistema informático, el almacenamiento suele ser un elemento común a todos los flujos y módulos que conforman el sistema y suele ser fuente de cuellos de botella.
Relacionado: ¿Sabías que una de las ventajas del Edge Computing es la reducción de los cuellos de botella en el tráfico de datos?
En sistemas basados en dispositivos IoT el almacenamiento es más crítico si cabe ya que el procesamiento en paralelo de múltiples mensajes provenientes de los dispositivos IoT podrían desencadenar subrutinas que de una forma u otra confluyen en la persistencia. Por ello, el almacenamiento suele ser uno de los elementos más delicados en el que es de vital importancia diseñar soluciones óptimas, tanto de la definición del modelo de datos como de los flujos, y combinar las BBDD relacionales y no relacionales de forma que el aumento de volumen de información no impacte en el rendimiento.
Como mencionamos más arriba, todos los Hub’s IoT soportan una ingente cantidad de dispositivos y de intercambio de mensajes y no van a suponer per sé un cuello de botella. Cada plataforma dispone de mecanismos para aumentar el límite de dispositivos y mensajes soportados, pero el procesamiento que se haga de los mensajes si podría suponer un problema de rendimiento a medida que el volumen crece si la solución técnica no está diseñada para escalar.
Un buen diseño inicial de la solución técnica, haciendo uso adecuado de los elementos involucrados en el procesamiento de los mensajes, permitiría escalar el sistema en unos pocos click’s, es decir, si se detectara que el volumen de dispositivos y mensajes está aumentando y comienza a alcanzar los umbrales que se hayan definido, el sistema podría escalar realizando unos cambios rápidos de configuración en unos pocos pasos, sin desarrollos.
Conclusión
Hemos mencionado por encima las cuestiones más relevantes que se deben tener en cuenta a la hora de abordar un proyecto con dispositivos IoT, poniendo el foco primero en el Qué es lo que queremos y después en el Cómo lo debemos implementar. Aunque todas las soluciones que incorporan dispositivos IoT tienen muchas características en común y deben solventar unos problemas comunes, cada sector, empresa, ámbito o producto tiene sus particularidades y requiere de una solución a medida.
En NTS Seidor tenemos amplia experiencia en soluciones IoT para empresas y podemos acompañaros tanto a aterrizar y definir sistemas basados en servicios IoT como en la implementación. Somos un compañero de viaje en el que apoyarse desde los primeros pasos del inicio de la definición funcional del sistema, aportando nuestro conocimiento y experiencia, a la implementación del sistema y mantenimiento del mismo.