Diseño de una aplicación nativa de nube

Completado

Dado que las aplicaciones nativas de nube están formadas por componentes de su elección, puede diseñar fácilmente una solución que utilice las tecnologías con las que se sienta cómodo. Por ejemplo, si Python se adapta mejor a su servicio de análisis de datos, pero el servicio de correo electrónico es más adecuado para usar una solución precompilada, la modularidad arquitectónica de las aplicaciones nativas de nube simplifica la implementación de forma significativa. Esta modularidad se extiende incluso a distintos proveedores de nubes.

Por ejemplo, muchos servicios en la nube, como Azure Database for MySQL, le permiten desarrollar con las versiones de código abierto de las tecnologías a las que está acostumbrado, pero dejan que Azure se haga cargo de las responsabilidades de administración e implementación.

Diseño de una solución nativa de nube para Adatum

En nuestro escenario, podemos diseñar una solución que sea fácil de desarrollar para un equipo pequeño, pero que también se escale de forma segura a miles de dispositivos. La funcionalidad de la nube elimina muchos de los problemas de desarrollo que surgen de la necesidad de conectarse a un gran número de dispositivos y de procesar datos a petición. Al usar la infraestructura de la nube, los servicios precompilados pueden configurarse de forma fácil para comunicarse entre sí y escalar automáticamente según sea necesario.

Más adelante, si es necesario, la solución puede crecer para dar cabida a productos nuevos o actualizados. En nuestro escenario, si una cadena hotelera que hace un pedido de miles de frigoríficos necesita funcionalidad adicional, puede crear un servicio extra sin tiempo de inactividad para los clientes existentes.

Empezar a pequeña escala

Para empezar, podemos usar una aplicación web básica para una interfaz de administración. Una instancia de back-end simple en la nube puede retransmitir mensajes desde frigoríficos inteligentes a la aplicación web que, a continuación, puede almacenarse en contenedores e implementarse en un clúster de Kubernetes, por lo que el número de contenedores se puede escalar según sea necesario. En el siguiente diagrama se muestra esta relación. La caja Node.js Express retransmite mensajes a nuestra caja Webapp Next.js, ambas implementadas desde nuestro servicio Kubernetes.

Esta solución se conecta fácilmente a la base de datos de su elección, lo que permite tener un servicio escalable de un extremo a otro en funcionamiento de forma rápida.

Basic inventory service with Node and webapp.

Crecimiento de la aplicación

Los dispositivos inteligentes ofrecen una gran cantidad de opciones de conectividad y de datos. Los avances en el campo de IoT ofrecen opciones rentables para recopilar datos y transmitirlos a la nube. Los servicios en la nube de IoT para dispositivos inteligentes son fáciles de conectar, lo que le permite transmitir datos de telemetría como las temperaturas de los frigoríficos, el consumo de energía y la calidad del agua.

Los desarrolladores pueden usar servicios en la nube, como IoT Hub y Stream Analytics, para desarrollar aplicaciones nativas de nube con la integración de IoT. Dado que gran parte del trabajo de partida se han realizado automáticamente, el tiempo de desarrollo puede reducirse significativamente.

Debido a la naturaleza de acoplamiento flexible de las aplicaciones nativas de nube, puede elegir otra solución de base de datos para los datos de telemetría más adecuada para el streaming de los datos, como Cosmos DB, en lugar de una base de datos relacional tradicional que podría ser más adecuada para un servicio de inventario.

Telemetry service using IoT Hub, Azure Stream Analytics, and Cosmos DB.

Como los servicios están separados, su equipo también puede desarrollar e implementar un servicio IoT sin que ello afecte a su servicio de inventario existente, como se muestra en la siguiente imagen.

Final architecture combining both the inventory service and telemetry service.