Usuario:Sgomezeyles/Taller

De Wikipedia, la enciclopedia libre

Sofia2[editar]

Sofia2 es un middleware + repositorio desarrollado y comercializado por Indra que permite la interoperabilidad de múltiples sistemas y dispositivos, permitiendo poner información del mundo real a disposición de aplicaciones inteligentes (Internet of Things). Sofia2 es capaz de procesar miles de eventos por segundo, tiene capacidades Big Data, reglas integradas, un enfoque open source, multilenguaje y agnóstico de las comunicaciones, y todo es operable desde una consola web centralizada.

Ver más...

IoT[editar]

Sofia2 se posiciona como Plataforma de Interconexión dentro del mundo del IoT, ya que esta plataforma interconecta dispositivos IoT, entendiendo por IoT (Internet Of Things) a la interconexión de cosas/objetos a través de Internet. Estas cosas pueden ser desde dispositivos embebidos, móviles o sensores, hasta sistemas empresariales.

IoT representa una visión de un futuro, conectando los mundos físicos y virtuales, donde billones de dispositivos colaboran entre ellos y con otros sistemas para proveer servicios personalizados a los usuarios. En IoT las cosas ofrecen las funcionalidades primarias pero es necesario un Servicio IT alrededor que añada funcionalidades secundarias o servicios a las Things. Ahí es donde entran en juego las Plataformas IoT que ofrecen ese servicio gestionando entre otros, los siguientes conceptos:

  • Dispositivos: permite la interconexión de todo tipo de dispositivos
  • Conectividad: ofreciendo diferentes mecanismos de conexión (REST, MQTT, Web Services, WebSockets, JMS,..)
  • Seguridad: las conexiones entre los dispositivos y la Plataforma deben ser seguras
  • Redes: la Plataforma debe soportar conexiones por diversas redes: TCP, Bluetooth, Zigbee,…
  • Base de Datos: Una Plataforma IoT debe integrar una base de datos en la que almacene la información sensórica
  • Apps & Analytics: una Plataforma IoT debe soportar el desarrollo de aplicaciones y permitir explotar la información vía analítica de negocio.

Conceptos Fundamentales[editar]

Los conceptos fundamentales de la Plataforma Sofia2 son:

Smart Space[editar]

Representa el entorno virtual donde diferentes aplicaciones interoperan para ofrecer una funcionalidad compleja.

SIB[editar]

Es el núcleo de la Plataforma. Recibe, procesa y almacena toda la información de las aplicaciones conectadas al Smart Space actuando como Bus de Interoperabilidad

KP[editar]

Representan a cada una de las aplicaciones que interopera en el Smart Space a través del SIB. Cada aplicación trabaja con instancias de los conceptos relevantes del dominio (ontología) para el que están diseñadas.

Ontología[editar]

Representa una Definición de Entidad dentro de mi Sistema. Existen predefiniciones para ámbito ciudad, y también pueden crearse adhoc en el proyecto. Serán la unidad de información semántica (lenguaje) mediante el cual se comunicarán los sistemas cliente de Sofia2 (KPs).

Ver más...

Características[editar]

Entorno de Experimentación gratuito: CloudLab[editar]

Dentro del Offering de la Plataforma se ofrece un Entorno de Experimentación en el que los desarrolladores pueden probar todas las capacidades de la Plataforma sin coste. Esto permite poner en valor la Plataforma.

Adicionalmente, a través de CloudLab, se ofrece la instalación de un entorno a medida y de horas de soporte a un precio asequible para el desarrollo de pilotos para mostrar la viabilidad de un proyecto.

Operación y gestión de la Plataforma 100% web[editar]

Toda la Plataforma se gestiona, mantiene y opera desde una Consola Web, tanto la definición de entidades (ontologías), seguridad, creación de clientes, reglas,…

Además se ofrece APIs REST para toda esta gestión, lo que permite integrar esta gestión en otras consolas de administración

Enfoque Semántico (ligero)[editar]

La Plataforma ofrece un enfoque semántico, lo que permite aprovechar esta semántica a la hora de hacer consultas, procesos analíticos,…

Se propone un enfoque semántico ligero basado en JSON, apropiado para todo tipo de dispositivos, incluso para los menos potentes.

Se ofrecen modelos creados para diversos dominios, como dominio en el ámbito Smart City, Smart Energy. Estos modelos pueden ampliarse.

Desde la consola Web se pueden crear las entidades conforme a los dominios creados.

Independencia del protocolo de comunicación[editar]

Los mensajes intercambiados entre los clientes y la Plataforma son independientes de la Plataforma, se ofrecen conectores out-of-the-box para MQTT, REST, WebSockets, WebServices y JMS.

Los desarrolladores pueden crear nuevos conectores plugeables.

Modular, Extensible y personalizable[editar]

La Plataforma está creada con un enfoque modular lo que permite sustituir la implementación de un módulo por otra contemplando las interfaces (por ejemplo uso de SAP HANA en lugar de base de datos MongoDB de Implementación de referencia).

La Plataforma está pensada para extenderse en el proyecto a través del concepto de plugin. Los plugins se despliegan como JARs y permiten crear nuevos conectores, definir el modelo de seguridad adecuado,…

La instalación puede personalizarse según las necesidades, instalando sólo los módulos adecuados, definiendo parametrización…

Seguridad integrada[editar]

Dentro de la Plataforma la seguridad es un concepto fundamental.

Se ofrece seguridad a nivel de comunicación (HTTPS, MQTTS,…) y también a nivel de permisos sobre las entidades, pudiendo ser entidades privadas, públicas o bien con acceso personalizado.

APIs multilenguaje[editar]

Aparte del conector REST, que puede usarse de forma sencilla desde cualquier lenguaje, se ofrecen APIS multilenguaje para cuando se necesiten protocolos más avanzados y eficientes.

Las APIs permiten comunicarse de forma más sencilla con la plataforma.

Se ofrecen APIS Java, Javascript, C/C++, Python, Android, iOS, Node.js, Arduino,…

Todas estas APIs se ofrecen bajo licencia Apache y sin coste.

Ver más...

API Manager integrado[editar]

Las APIS como mecanismo de integración son ya una realidad como prueban grandes como Facebook, Twitter, Google, Bancos a nivel internacional,…

Permite, por un lado, disponibilizar como APIs REST las entidades que maneja, permitiendo llevar al concepto Open Data el dinamismo de las APIs REST. Por otro lado, permite disponibilizar APIs Externas bajo un enfoque RESTful ofreciendo un acceso unificado.

Motor de Reglas y Motor CEP integrado[editar]

La Plataforma incluye un motor de Reglas que permite definir en un lenguaje sencilla y a través de la consola Web las reglas a aplicar antes la llegada de un evento o dato o bien temporizada. Permite a los usuarios con permisos crear en un lenguaje de scripting nuevas lógicas reutilizables e invocables desde el motor (por ejemplo enviar SMS o mail,…).

Además se incluye un motor CEP que permite definir reglas en las que interviene el tiempo (por ejemplo que no ha llegado una cierta medida en 1 día). A los eventos generados por el motor CEP pueden suscribirse los clientes o servir como entrada al motor de Reglas.

Capacidades Social Media integradas[editar]

Desde la propia consola pueden realizarse diversas búsquedas (perfiles, timeline, grupos, hashtags, tendencias) para las principales redes sociales.

Estas búsquedas se persisten sobre la plataforma para realizar procesos analíticos.

Implementación de referencia (RI) sobre software Open-Source[editar]

La RI de la Plataforma se basa por completo en software open-source sin restricciones, esto permite que la plataforma no acarree costosas licencias en su implantación.

Además existen otras implementaciones creadas a medida en la que unas piezas son reemplazadas por otras (pj HANA en lugar de Mongo y Hadoop, Motor CEP Oracle en lugar del Motor CEP WSO2, …)

Despliegue On-Premise y On-Cloud[editar]

La Plataforma puede instalarse tanto On-Premise como On-Cloud, bien públicas o privadas.

Se soportan diversos modelos de operación y diversos tipos de soporte en función de las necesidades de la organización.

En cloud puede optarse por un modelo PaaS en el que se cobra por la infraestructura montada o bien SaaS en el que se cobra por el número de mensajes procesados o por TB usados.

Integrada capacidades Big Data out-of-the-box[editar]

La Plataforma integra de forma nativa un enfoque Big Data, de modo que, para cada entidad (ontología), se puede definir cuándo los datos pasarán de la RTDB (base de datos Tiempo Real) a la HDB (base de datos histórica) (RI sobre Hadoop).

La Plataforma integra capacidades para realizar consultas online tanto sobre la RTDB como sobre la HDB

La Plataforma permite lanzar procesos analíticos sobre la BDH de forma sencilla e integrada.

Gestión de SW y configuración dispositivos centralizada[editar]

Además de las APIs multilenguaje se ofrece una Infraestructura Java que permite construir aplicaciones para dispositivos embebidos autogestionados.

Desde la consola central se puede cargar el SW y la configuración que va a cada dispositivo o grupo de dispositivos de modo que a través de esta infraestructura se disponibilice.

Sectores de mercado y soluciones[editar]

  • Utilities: Smart meters para el control eléctrico y del agua. Smart grid permite una mejor gestión de los recursos.
  • Seguros: Telemedida en la gestión de la conducción y vida para una mejor precisión en el calculo de riesgos.
  • Agricultura: ‘Precision agriculture’ para la gestión de los recursos agrícolas con técnicas analíticas y recomendaciones en tiempo real.
  • Healthcare: Optimización del capital humano en hospitales, reducción de costes en procesos clínicos y teleasistencia.
  • Factory automation: Monitorización y optimización de los procesos de fabricación.
  • Lighting: Smart lighting en la gestión empresarial, residencial y de infraestruturas.
  • Ocio: Incremento de la user experience, satisfacción y control de costes.
  • Retail/Brands/Apparel: Mejora de la gestión de la cadena de suministros y smart marketing.
  • Smart Trade: Mejora de los procesos de compra, trazabilidad de alimentos y logística.
  • Consumer Wearables: Extender los ecosistemas digitales de marcas y atraer a a mas clientes.
  • Automobiles: Coches conectados.

Ver más...

Arquitectura de Alto Nivel[editar]

Sofia2 Router[editar]

El intercambio de información con Sofia2 se lleva a cabo a través de la capa de comunicaciones denominada Router. Esta capa, por tanto, es responsable de:

  • Publicación de información al Bus de Interoperabilidad: ej. desde cualquier sistema, dispositivo, smartphone, aplicación, etc.
  • Consumo de información del Bus de Interoperabilidad: o bien a través de queries específicas (ej. último valor enviado por sistemas y dispositivos que están cerca de mi ubicación) o bien a través de suscripciones (ej. notificación cuando se cumple cierta condición).

El modulo Router provee a la Plataforma de capacidades de interconexión con sistemas, dispositivos y usuarios mediante un gran abanico de protocolos, destacando REST, MQTT, Websockets y SOAP. Sofia2 dispone de artefactos técnicos denominados gateways que manejan la publicación de interfaces de comunicación para cada uno de estos protocolos, permitiendo a los dispositivos y sistemas comunicarse a través del más apropiado. La Plataforma está diseñada con la idea de ser extensible, siendo poco compleja la creación de nuevos gateways en caso de ser necesario.

La comunicación entre KPs (clientes de Sofia2) y la Plataforma se lleva a cabo a través del protocolo SSAP (Smart Space Access Protocol). El protocolo define los siguientes métodos:

  • JOIN, LEAVE: Para iniciar y finalizar la sesión de comunicación entre Dispositivo o Sistema y Plataforma.
  • INSERT, UPDATE, REMOVE: Métodos que habilitan la gestión de información desde los dispositivos y sistemas.
  • QUERY, SUBSCRIBE, UNSUBSCRIBE: Métodos de gestión de la recepción de información desde los KPs (Sofia2 clients), o bien bajo petición ejecutando queries contra la Plataforma o bien bajo suscripción al cumplimiento de ciertas condiciones, quedando en espera de que la Plataforma comunique los eventos a modo "push".
  • GET_VERSION, GET_CONFIG: Métodos de gestión de la configuración de los dispositivos de forma remota, prerrequisito en cualquier despliegue a gran escala. En caso de no tener sistemas de gestión remota, Sofia2 permite la actualización remota de los KPs, además de permitir cambiar también sus propiedades de configuración.

La plataforma viene provista de APIs que facilitan la implementaión del protocolo SSAP en muchos lenguajes y plataformas: Java, Javascript, iOS, Android, Arduino, etc. de forma que independientemente de la infraestructura del KP, se pueda comunicar de forma simple con la Plataforma.

Sofia2 Brain[editar]

Toda la información recibida a través del módulo Router alcanza el módulo Brain donde la información persiste y puede ser pre-procesada y/o post-procesada. Este módulo está formado por una serie de motores/mecanismos que proporcionan a la plataforma diferentes capacidades para procesar la información recibida:

  • Query Engine: permite enviar querys a la BDTR y a la BDH. Permite utilizar lenguaje el lenguaje nativo de la base de datos así como lenguaje SQL independiente del motor utilizado. Esto, por un lado, abre la posibilidad para que cualquier sistema se comunique utilizando el lenguaje estándar para querys y además permite aprovechar las ventajas del uso de las querys nativas del motor utilizado. Por otro lado, permite independizar la base de datos del resto, ya que las consultas SQL permiten “esconder” la implementación interna del motor utilizado por la BDTR y la BDH.
  • Subscriptions Engine: permite suscribirse a una query cuando se cumplen una serie de condiciones. Gracias a esto el cliente recibe notificaciones de eventos sin tener que estar preguntando al servidor continuamente (polling). Esto se realiza mediante un modo push desde la plataforma hacia el KP.
  • Rules Engine: proporciona interfaz sencilla para definir reglas que serán ejecutadas cuando se cumplan ciertas condiciones (llegada de un cierto tipo de dato o si se cumple una regla concreta) para posteriormente ejecutar una serie de acciones preconfiguradas y ampliables. Los scripts de las reglas se implementan en Groovy, permitiendo definirlas de una de una manera rápida independiente del lenguaje?. Por otra parte el compilador también acepta la inclusión de código java abriendo la solución a aquellos desarrolladores que no hayan superado la curva de aprendizaje de Groovy todavía. Las reglas se despliegan en “caliente” con lo que se consigue una implementación instantánea sin tener que reiniciar o volver a desplegar la Plataforma.
  • CEP Engine: permite definir reglas CEP sobre los datos y definir los disparadores que se activarán cuando las reglas se cumplan. Estas reglas permiten configurar ventanas de tiempo y detección de patrones durante la ejecución de las consultas con lo que se consigue que el rango de consultas/reglas sea mucho mayor que si simplemente se utilizara un motor SQL. Las reglas añadidas tienen una gran utilidad, por ejemplo: “media del tráfico por hora mayor que X” máximos, mínimos…, detección de ausencias (no haber recibido información en un intervalo de tiempo)…

El módulo Brain también ofrece mecanismos de extensión adaptación de la plataforma. Es resaltable el motor de plugins que permite la implementación de cualquier código en Java en ad-hoc. Mediante los plugins se pueden crear nuevos conectores, configurar mecanismos de autenticación, auditar información, hacer información persistente en otros repositorios, crear KPIs, monitorizar, etc. En otras palabras, el motor de plugins proporciona máxima flexibilidad a la plataforma. Existen varios tipos de plugins que se pueden desarrollar en la Plataforma:

  • Plugins de pre/post-procesamiento: permiten procesar cualquier acción baje el sib antes o después de su persistencia en la BDTR.
  • Plugins de seguridad: permite extender o cambiar el modelo de autenticación y autorización, por ejemplo configurándolo a través de de un repositorio corporativo LDAP o una base de datos externa.
  • Plugins de ciclo de vida del SIB: para la ejecución de acciones en el arranque o parada de la Plataforma.
  • Plugins de procesamiento de mensajes SSAP: permite el pre y post procesado de cualquier mensaje incluyendo aquellos que invocan otros Backends.
  • Plugins de motor: permiten interceptar acciones realizadas por los distintos motores del sistema.

Sofia2 Integral DB[editar]

Sofia2 está compuesta por varias bases de datos, tanto SQL como NoSQL que permiten explotar tanto la información en tiempo real como la información histórica que fluye en la plataforma. La base de datos integral tiene capacidades BigData y, por lo tanto, se utiliza para almacenar toda la información que circula a través de la plataforma además de proporcionar escalabilidad de acuerdo al volumen de datos esperado. Además facilita la incorporación de nuevo contenido y aumenta la cantidad de información asociada a la expansión de las instituciones existentes, incorporando información proporcionada por su gestión. La base de datos integrada representa el repositorio global de la Plataforma. Este repositorio esta a su vez formado por distintos tipos de repositorios dependiendo del tipo de datos:

  • Base de datos de Configuración (BDC): Base de datos relacional para almacenar y centralizar la configuración de la Plataforma.
  • Base de datos de Tiempo Real (BDTR): Es el repositorio responsable de almacenar la información introducida por los KPs y permite a otros KP hacer consultas sobre esta información:
    • La información de la BDTR conforma la información conocida como información de tiempo real. Esta definición de tiempo real es configurable ya que los datos almacenados pueden ir desde el ultimo valor tomado hace segundos o minutos hasta algunos valores tomados hace días o meses.
    • La BDTR debe estar basada en una infraestructura que pueda ofrecer capacidades interesantes como:
      • Proporcionar soporte para necesidades crecientes de rendimiento, escalabilidad y velocidad.
      • Proporcionar flexibilidad dependiendo del modelo de datos (por ejemplo para modelos de datos dinámicos una base de datos relacional no sería recomendable).
      • Escalabilidad Horizontal.
      • Persistencia de los datos y alta disponibilidad.
    • Su implementación de referencia está basada en MongoDB, una base de datos NoSQL orientada a documentos.
  • Base de datos Histórica (BDH): proporciona persistencia a la información que ha sobrepasado el rango de la base de datos de tiempo real. La Plataforma proporciona funcionalidades para la ejecución de consultas online en la BDH y para pasar información de la BDTR a la BDH. Esta base de datos integrada unifica toda la información relevante para poder seguir el ciclo de vida completo de los datos en la Plataforma. Ofrece las siguientes funcionalidades:
    • Orientación al análisis de la información de la Plataforma teniendo en cuenta su dimensión temporal.
    • Monitorización y análisis de información de lo que ha estado pasando integrada con otra información de negocio que relacionada con calidad y eficiencia de servicios.
    • Depuración y consolidación de los datos existentes en repositorios informacionales, permitiendo su extensión para enriquecer la información interna con información de entidades gubernamentales, privadas u orígenes externos.
    • Suficiente capacidad de almacenamiento para datos históricos permitiendo la trazabilidad de la información en el momento.
    • Escalabilidad para permitir la incorporación de nueva información, procesos gestionados por la plataforma, etc.
    • Integración continúa de los datos almacenados, siendo el único repositorio, y actualización de la información relevante.
    • No está enfocado a los procesos. Proporciona información sobre su estado sin importar las etapas que se hayan pasado.
    • No enfocado a los procesos. Proporciona información sobre su estado sin importar las etapas que se hayan pasado.
    • Gestión de usuarios y roles para definir las funciones de los usuarios que tienen acceso al sistema.
    • Soporte para los procesos de toma de decisiones permitiendo escuchar, entender y participar de la realidad, respondiendo tanto de manera interna como externa.

En su implementación de referencia, la BDH está basada en Hadoop y varios productos de su ecosistema que permiten construir un datawarehouse basado en las ontologías definidas en la Plataforma.

Sofia2 Config.[editar]

Toda la configuración de la Plataforma se puede realizar desde un único punto: la consola web de la Plataforma. Provee mecanismos para la gestión de los conceptos de la Plataforma de manera simplificada. Características:

  • IU con tecnología HTML y Spring.
  • API REST para interactuar con la configuración de la Plataforma o crear nuevas interfaces de usuario.
  • Control a nivel de interfaz y API de las acciones a realizar por cada usuario y rol.
  • IU extensible en proyectos.

La consola web provee a los usuarios las siguientes funcionalidades (algunas serán exclusivas de los roles con mayor privilegio, y por tanto ocultas para los usuarios más básicos):

  • Gestión de usuario y roles.
  • Gestión y modelización de ontologías.
  • Gestión de KPs y sus tokens (requeridos para interacción con la plataforma).
  • Gestión de la configuración de KPs.
  • Configuración de reglas y scripts.
  • Gestión de publicación de APIs.

Sofia2 Security[editar]

La seguridad en un concepto transversal a toda la Plataforma. En este módulo, los mecanismos de seguridad son aplicados para asegurar que sólo aquellos sistemas autorizados puedan tener acceso a escribir, leer y modificar información de la Plataforma. Además, la comunicación se autentica y encripta de forma que ni la identidad del emisor ni el contenido del mensaje puedan ser descifrados. Las características de este módulo incluyen:

  • Establecimiento de mecanismos de autenticación/autorización entre Bus de Interoperabilidad y Publicador/Consumidor
  • Proveer seguridad a nivel de protocolo y aplicación:
  • 2 implementaciones out-of-the-box:
    • Basada en user/password
    • Basada en Token
  • Mecanismos para extender la seguridad mediante el uso de plugins para crear y/o adaptar la Seguridad a los requisitos identificados: tókenes Oauth, certificados, etc.
  • La seguridad aplica a todos los conceptos manejados por la Plataforma (ontologías, KPs, etc..) a nivel tanto de lectura como de escritura.
  • Encriptación de las couminicaciones, tanto out-of-the-box utilizando un protocolo básico de encriptación por clave simétrica (XXTEA) para prevenir el envío de información en texto claro, como también permitiendo la comunicación sobre SSL por ejemplo utilizando MQTT/SSL o HTTPS.

Sofia2 API Manager[editar]

Una de las funcionalidad core implementadas sobre la Plataforma es la existencia de un módulo API Manager. Este módulo permite la publicación de servicios a través de interfaces estándar (ej. HTTP REST) para "abrir" la Plataforma a prácticamente cualquier sistema, dada su estandarización (ej. Smartphones, browsers, sistemas empresariales, etc.). Los usuarios pueden tanto consumir servicios como buscarlos en base a palabras clave (keywords) y suscribirse a los APIs. Esto concepto se utiliza mucho habitualmente en el entorno de las redes sociales, permitiendo a cualquier usuario y sistema interoperar con la Plataforma.

Este módulo además dispone de un componente Open Data con capacidades de publicación de ciertos contenidos de la Plataforma públicamente al exterior.

Developer Kit[editar]

La Plataforma viene provista con un Java Development Kit que permite la extensión y adaptación de la Plataforma.

Esta SDK ofrece las siguientes funcionalidades:

  • APIs en diversos lenguajes para el desarrollo de clientes: Java, Javascript, Arduino, Android, ...
  • Herramientas de alta productividad para desarrollo rápido de clientes de la Plataforma.
  • APIs para el desarrollo de plugins que extiendan la Plataforma.
  • Guiás, ejemplos y documentación para acelerar el desarrollo sobre la Plataforma.
  • Entorno de simulación de la Plataforma (SIB+KPs) para pruebas en local.
  • Entorno desplegado en la nube para pruebas de integración.
  • Plugin de Eclipse para desarrollo de KPs.
  • Guías de usuario y ejemplos para todo el Development Kit.

Ver más...

Keywords[editar]

Keywords
Sectores Smart Cities · Smart Health · Smart Energy · Smart Retail · Smart Transport & Traffic · Wearables
APIs Java · Javascript · C · Android · iOS · Arduino · NodeJS
Protocolos MQTT · REST · Websockets · TCP · DWR
Tecnologías Java · MongoDB · Hazelcast · Hadoop · RDBMS
Capacidades IoT · BigData · Interoperabilidad · Tiempo Real · Reglas de Negocio