¿Cuál es el mejor backend de JavaScript para una solución de IoT?

He trabajado con Sails.js durante un tiempo, pero me pareció un poco exagerado para proyectos simples: tiene un enfoque de “baterías incluidas”, similar a Ruby on Rails, lo que resulta en grandes cantidades de repeticiones generadas, carga más lenta veces y muchas funciones que tal vez nunca uses.

Mean.io y otros sabores de la pila MEAN están acoplados a MongoDB, mientras que una base de datos SQL a veces puede ser más adecuada (especialmente si tiene experiencia con bases de datos relacionales). Además, Angular 1.x, utilizado por Mean.io, se está convirtiendo lentamente en un marco heredado con la versión 2.0 (básicamente un marco completamente nuevo) actualmente en versión candidata.

Si necesita una forma cómoda de acceder a una base de datos y alojar una aplicación web, puede usar Express.js con un ORM como Sequelize y Socket.IO para enviar datos en tiempo real a través de Websockets. Para el front-end, puede usar un marco como Angular 2.0, que incluye RxJS, una biblioteca para el procesamiento de flujo reactivo, que se asigna bastante bien a los datos en tiempo real, lo que le permite manipularlo y procesarlo sobre la marcha.

Yendo aún más lejos, ¡es posible que ni siquiera necesite un backend! Recientemente he desarrollado una aplicación de front-end, que recibe todos los datos a través de MQTT a través de Websockets (utilizando el agente Mosquitto para distribuir mensajes) que también puede actuar como una base de datos mediante el uso de mensajes retenidos y persistencia.

De hecho, he producido una aplicación IoT usando StrongLoop, MongoDB y algunos JavaScript frontales para hacer visualizaciones de sensores en tiempo real desde un dispositivo basado en Intel Edison (con un sensor 9DOF, etc.). Fue relativamente sencillo y fácil de hacer. También construí una versión usando el servidor MQTT de mosquito pero queríamos más persistencia de datos. Se ejecutó de 2 maneras: 1) el servidor MongoDB se ejecutó en el dispositivo Intel Edison y la aplicación Strongloop API accedió directamente a él y 2) el dispositivo Intel Edison envió todos los datos directamente a una instancia de MongoDB alojada para persistencia y acceso a la API.

Esta última es realmente la mejor opción (que no sea para fines de demostración) ya que Intel Edison realmente no tiene suficiente espacio de almacenamiento para conservar muchos datos.

Algo de esto depende de la plataforma del dispositivo IoT que esté utilizando, ya que algunos no podrán admitir las diversas bibliotecas que necesita para conectarse a todas las soluciones de back-end. Creé controladores en el dispositivo para MongoDB, Couchbase y PahoMQTT para Edison y eso fue bastante sencillo.

Depende de tus necesidades específicas. AWS Lambda puede ser la mejor opción para cálculos simples, análisis de sensores y envío de alertas … En el mundo de IoT, la mayoría de los cálculos ocurren cuando se dispara un evento, luego requieren breves ráfagas de cómputo y luego finalizan. Luego, otro procesador puede tomarlo desde allí.

AWS Lambda y su motor de reglas es realmente muy adecuado para este caso de uso. Más información aquí.

Configurar y probar reglas