Un poco de SOFIA2

El otro día presentábamos SOFIA2 (y aún quedan muchas novedades que seguiremos contando…) y nos quedábamos en una visión modular de SOFIA2.

En este post describiremos la funcionalidad de cada uno de estos módulos:

 

Se encarga de:

  • Publicar información al Bus de Interoperabilidad (la de un sensor, smarphone,aplicación,…)
  • Consumir información del Bus de Interoperabilidad bien a través de consultas concretas (último valor de los sensores que se encuentren cerca de mi ubicación) o bien a través de suscripciones (notificación cuando un sensor de Temperatura de la ciudad marca menos de 0º C)

En detalle:

  • Este concepto se denomina KP (Knowledge Processor)
  • Comunica con Bus (SIB) a través de lenguaje SSAP (Smart Space Access Protocol)
  • Se aplica en comunicación mecanismos de seguridad configurados
  • Se ofrecen APIs para varios lenguajes/plataformas: Java, Javascript, iOS, Android, Arduino,…

 

Se encarga de:

  • Establecer mecanismos de autenticación/autorización entre Bus de Interoperabilidad y Consumer/Publisher
  • Ofrecer Seguridad a nivel de protocolo y de aplicación

En detalle:

  • 2 Implementaciones out-of-the-box:

Basada en usuario/password

Basada en Token

  • Mecanismos de extensión a través de plugins para crear/adaptar Seguridad a requisitos identificados: Token Oauth, certificados,…
  • Seguridad aplica a todos los conceptos de la Plataforma (ontologías, KPs,…) tanto a nivel de escritura como de lectura

 

Se encarga de:

  • Ofrecer conectores para comunicación desde diversos clientes:

REST: para clientes Javascript, smartphones,..

MQTT para comunicaciones bidireccionales y dispositivos limitados

Web Services/JMS para aplicaciones empresariales

  • Comprobar permisos de cliente para consumir o publicar datos
  • Almacenar datos en Módulo de Persistencia (BDTR + BDH)
  • Rutear petición a Motor adecuado en base a la petición realizada

En detalle:

  • Este concepto de denomina SIB (Semantic Information Broker)
  • Los clientes (KPs) pueden

JOIN: registrarse para usar SIB y LEAVE (finalizar sesión)

INSERT, UPDATE y REMOVE: para almacenar información en el SIB

QUERY, SUBSCRIBE para consultar y suscribirse a cierta información

 

Se encargan de:

  • Procesar las peticiones que llegan al Bus

En detalle:

Motor Consultas: permite realizar consultas sobre la BDTR y la BDH en lenguaje SQL independiente del motor subyacente, ofrece capacidad para consultas geográficas

Motor Suscripciones permite suscribirse a una Query cada X tiempo y cuando se cumpla condición

Motor Reglas: permite definir de forma sencilla a través de la UI Reglas que se ejecutarán cuando se cumplan ciertas condiciones (llegada de un datos de cierto tipo o que cumpla cierta regla) y ejecutar un conjunto de acciones preconfiguradas y ampliables

Motor CEP: Permite definir Reglas CEP que aplican a los datos que llegan y que desencadenan notificaciones (pj media de medidas de Temperatura mayor de 50, o no se ha recibido cierto dato en 1 día)

 

Se encarga de:

  • Ofrecer mecanismos de extensión sobre la Plataforma
  • Con los plugins se pueden crear nuevos conectores, cambiar autenticación, auditar información, persistir en otros repositorios, generar KPIs, monitorizar,…

En detalle:

  • Permite pre y postprocesar cualquier acción realizada dentro del SIB.
  • Plugin de Seguridad: permite ampliar o cambiar modelo de autenticación y autorización
  • Plugin de Ciclo de Vida del SIB realizar acciones al parar o arrancar
  • Plugin de Procesado de Mensajes SSAP: permite preprocesar y postprocesar cualquier
  • Plugin de Motores: permite interceptar las acciones que realizan los diversos motores

 

Se encarga de:

  • La BDC (Base de Datos de Configuración) almacena todos los datos de configuración de la Plataforma.

En detalle:

  • Entre los datos configurables se encuentran Ontologías, Plantillas de Ontologías, Reglas CEP, Reglas Script, Consultas Predefinidas, KPs, Inventario de Dispositivos,…
  • La BDC puede ser cualquier base de datos relacional con driver JDBC. Versiones montadas sobre MySQL y Oracle.

 

Se encarga de:

  • La BDTR (Base de Datos de Tiempo Real) almacena todos los datos recibidos por el Bus que se consideran de Tiempo Real

En detalle:

  • Para cada Ontología se puede configurar que representa el Tiempo Real y que representa el Histórico (por ejemplo para un Sensor de Temperatura podría sólo interesarme la última medida y para un Sensor georreferenciado las del último día).
  • Se soporta sobre base de datos MongoDB que ofrece características muy interesantes como:

Almacenamiento documental (JSON)

Alto rendimiento

Consultas complejas incluyendo consultas geoespaciales

Escalabilidad horizontal incluyendo Sharding

 

Se encarga de:

  • La BDH (Base de Datos Histórica) almacena todos los datos que ya no forman el tiempo real y han pasado a ser históricos

En detalle:

  • La BDH está implementada sobre Hadoop en el datawarehouse HIVE lo que permite:
    • Capacidades para almacenamiento prácticamente ilimitado
    • Capacidades de procesamiento de toda esta información cuando se necesite
    • Lenguaje de consultas SQL
    • Posibilidad uso Impala para consultas online
  • Los datos del tiempo real se pasan automáticamente a datos históricos.
  • Los datos históricos pueden consultarse a través el SIB con mensaje SSAP Query

 

Se encarga de:

  • Ofrecer mecanismos para que la gestión de los conceptos de la Plataforma sea sencilla

En detalle:

  • UI Web con tecnología HTML5 y Spring
  • API REST para poder interactuar con la configuración de la Plataforma o crear nuevas UIs
  • Control a nivel de UI y API de acciones que puede realizar cada rol y cada usuario
  • UI Extensible en proyectos

 

Se encarga de:

  • Ofrecer APIs en diversos lenguajes para el desarrollo de clientes
  • Ofrecer Herramientas de Productividad para el desarrollo rápido de clientes de la Plataforma
  • Ofrecer APIs para el desarrollo de plugins que extiendan el Bus
  • Ofrecer Guías, Ejemplos y Documentación para agilizar el desarrollo sobre la Plataforma

En detalle:

  • API multilenguaje KPs: Java, Javascript, Arduino, Android,…
  • API para extender el Broker con plugins
  • Entorno de Simulación de la Plataforma (SIB+KPs) para pruebas locales
  • Entorno disponibilizado en Cloud para pruebas de integración
  • Plugin Eclipse para desarrollo de KPs
  • Guías de uso + ejemplos de todo el Kit de Desarrollo

 

Se encarga de:

  • Garantizar la compatibilidad de la Plataforma con las principales Plataformas Cloud
  • Dotar a la Plataforma de capacidades de autodimensionamiento en función de necesidades no fácilmente estimables

En detalle:

  • Despliegue en varios IassS/PaaS: Amazon, Azure, Jelastic ,…
  • Despliegue en Plataforma PaaS de Indra: G@PASS
  • Despliegue en Cloud Privado y Público

Humor:El jefe siempre implicado!

Publicado en Humor. Leave a Comment »
A %d blogueros les gusta esto: