Mejoras en el despliegue y operación de la plataforma Sofia2

Captura de pantalla 2017-05-25 a las 17.14.08

 

Durante las últimas releases de Sofia2 se han ido introduciendo mejoras en los despliegues de la plataforma, apoyándose cada vez más en los principios DevOps.

 

La CI/CD se ha adaptado al despliegue con contenedores y se han introducido algunas características nuevas de Jenkins, mejorando significativamente la parte Dev de Sofia2, tales como:

 

  • Pipelines declarativos, estos estrechan aún más la distancia entre los desarrollos y los despliegues mediante un DSL más accesible y/o legible e integrado con Docker.
  • BlueOcean, este nuevo plugin permite visualizar de manera más limpia cada uno de los stages o fases de los pipelines de Jenkins.

Captura de pantalla 2017-05-25 a las 9.51.45

Para la mejora de la parte Ops, cada uno de los módulos (ControlPanel, IoTBroker, Stream Process,…) se ha contenerizado con Docker y mediante Kubernetes se automatizan los despliegues de los mismos en los distintos nodos disponibles.

 

Kubernetes es un sistema Open Source de Google que permite automatizar despliegues apoyándose en la tecnología de contenedores, además, gracias al concepto de Replication Controller de Kubernetes se garantiza el auto escalado de cualquiera de los módulos, manteniendo constante el número de réplicas (pods) de un determinado módulo.

 

La accesibilidad entre los pods de distintos módulos en el cluster se consigue mediante servicios, que además se encargan de realizar el balanceo de carga entre todas las réplicas de un mismo módulo.

 

Captura de pantalla 2017-04-06 a las 15.55.43

Mejoras en el despliegue y operación de la plataforma Sofia2

Sofia2 IoT example with Android: Tag, you’re it!

example-overview.png

This post is an example on how easy is to integrate an IoT scenario using Sofia2 IoT platform. The example was presented on February 17th during an introduction lecture on Sofia2 basics for the Embedded & Distributed Systems Sofware Master course at the Universidad Politécnica de Madrid (UPM).

The setup will simulate a typical IoT scenario with just a couple of elements:

  • Android Smarpthone (running at least a 4.4 Android version)
  • BLE (Bluetooth Low Energy) Beacon
  • An upgraded user for Sofia2.com platform (ROL_COLABORADOR)

 

example-overview.png

The demo app will periodically fetch data from the smartphone’s accelerometer sensor and GPS. It will also operate as a BLE scanner, triggering an asynchronous event when the selected beacon is placed nearby. Data will be modeled using a Sofia2’s Ontology. Using Sofia2 console, we will create a Dashboard to represent periodic real-time data. A Groovy script will be also generated to evaluate whether the beacon was detected. If that is the case, it will send an e-mail to the user: “Tag, you’re it!”

Seguir leyendo “Sofia2 IoT example with Android: Tag, you’re it!”

Sofia2 IoT example with Android: Tag, you’re it!

Caso ejemplo Sofia2 IoT con Android : ¡Tú la llevas!

En este post se presentará un sencillo ejemplo de integración IoT sobre la plataforma Sofia2. Este ejemplo fue presentado el día 17 de Febrero en una charla de presentación y de formación de conceptos básicos de la plataforma IoT Sofia2 a los alumnos del Máster en Software de Sistemas Distribuidos y Empotrados, en el grupo de investigación SYST de la Universidad Politécnica de Madrid (UPM).

El escenario simulará un escenario típico de IoT con un par de elementos sencillos:

  • Smartphone Android (versión igual o superior a 4.4)
  • Dispositivo beacon con BLE (Bluetooth Low Energy)
  • Usuario en plataforma Sofia2.com, con nivel de ROL_COLABORADOR

 

example-overview.png

 

Para el demostrador se obtendrán datos periódicamente de los sensores de acelerómetro del terminal móvil y de la geo-posición del mismo. Además se realizará un escaneo sobre Bluetooth Low Energy (BLE) que cuando detecte la cercanía del Beacon seleccionado, dispare un evento asíncrono. En Sofia2, se recogerán los datos en una Ontología, representando acto seguido los valores periódicos en un Dashboard, y evaluando la ocurrencia del evento asíncrono en un Script que notificará de manera instantánea la detección del evento en el e-mail del usuario: ¡Tú la llevas!

Seguir leyendo “Caso ejemplo Sofia2 IoT con Android : ¡Tú la llevas!”

Caso ejemplo Sofia2 IoT con Android : ¡Tú la llevas!

Device Management Support with Sofia2

Device management is one of the ten more relevant Internet of Things technologies for next years, according to Gardner:

image0012

In this post we will share with you all, how we understand device management, what are the tools that Sofia2 provides for it, and the evolution we are working on, for this functionality.

Seguir leyendo “Device Management Support with Sofia2”

Device Management Support with Sofia2

Gestión de dispositivos en Sofia2

La gestión de los dispositivos conectados es una de las 10 tecnologías más relevantes en el ámbito IoT para los próximos años, según la estimación de Gartner:

image0121

En este post os queremos explicar cómo entendemos  esta gestión en Sofia2, qué herramientas proveemos actualmente y cómo evolucionará en próximas versiones.

Seguir leyendo “Gestión de dispositivos en Sofia2”

Gestión de dispositivos en Sofia2

Mejoras en motor de suscripciones

En la Release 3.0 de Sofia2 se han incluido nuevas mejoras en el motor de suscripciones del SIB de Sofia2, para resolver de manera mas eficiente algunas consultas comunes a las que se suscriben las Apps Sofia2. En concreto las consultas de tipo Select * from <ontología> y las de tipo Select [*,[lista_campos]] from <ontología> where <ruta_atributo>=’<valor>’

Esta optimización cobra importancia cuando hay un gran número de Apps Sofia2 suscritas a una misma ontología:

  • Select * from <ontología>: Cuando muchas Apps están suscritos al mismo evento, Por ejemplo una misma Alarma que tiene que ser notificada en tiempo real a cientos de Apps.
  • Select [*,[lista_campos]] from <ontología> where <ruta_atributo>=’<valor>’: Cuando una misma ontología es utilizada por cientos de Apps, pero determinados eventos solo tienen que notificarse a uno o solo un grupo reducido de Apps. Por ejemplo en una ontología de comandado.

Seguir leyendo “Mejoras en motor de suscripciones”

Mejoras en motor de suscripciones

Migración a MongoDB 3

Se ha actualizado en el entorno de experimentación CloudLab la versión 3.0.0 de MongoDB.

mongo3

La migración a esta versión desde la 2.6 se realiza de manera automática, respetando las colecciones y configuración de estas (indices, campos georferenciados…). En caso de tener que migrar desde una versión previa, se debe, como paso intermedio la migración a la versión 2.6.

To upgrade an existing MongoDB deployment to 3.0, you must be running 2.6. If you’re running a version of MongoDB before 2.6, you must upgrade to 2.6 before upgrading to 3.0. See Upgrade MongoDB to 2.6 for the procedure to upgrade from 2.4 to 2.6. Once upgraded to MongoDB 2.6, you cannot downgrade to any version earlier than MongoDB 2.4.

El proceso de migración es tan sencillo como detener el servicio de MongoDB sustituir los binarios de la versión 2.6 por los de la 3.0 y volver a arrancar el servicio de MongoDB.

Las principales novedades de esta versión son:

  • Nueva API de motor de almacenamiento de MongoDB que permite optimizar la base de datos para diferentes arquitecturas de hardware y cargas de trabajo de aplicaciones.
  • MongoDB 3.0 multiplica el rendimiento entre siete y diez veces, ofrece escalabilidad vertical para las cargas de trabajo de escritura intensiva mediante  la recopilación y el bloqueo a nivel de documento. La compresión nativa reduce considerablemente los costes de almacenamiento hasta en un 80 %. Ahora, los conjuntos de réplicas pueden incluir hasta 50 miembros, lo que reduce la latencia al distribuir geográficamente los datos cerca de los usuarios.
  • Ampliación del marco de auditoría introducido en MongoDB 2.6 para incluir todas las operaciones de sistema y datos (DDL y DML) en la base de datos. Gracias a estas extensiones, ahora los administradores pueden crear y filtrar las trazas de auditoría de cualquier operación en MongoDB sin tener que recurrir a herramientas de terceros.
Migración a MongoDB 3