Tecnologías de la Onesait Platform (parte 1)

Header Technology Foundations

La Onesait Platform está construida mediante el desarrollo de un conjunto de módulos que proporcionan diferentes capacidades, así como mediante la integración de diferentes productos Open Source, aplicando las adaptaciones necesarias para proporcionar una visión única e integrada de todos ellos.

Las principales tecnologías utilizadas en la Plataforma se pueden agrupar en estos cinco bloques:

  • Tecnologías core.
  • Tecnologías de comunicación.
  • Tecnologías basadas en productos Open Source.
  • Tecnologías de almacenamiento.
  • Tecnologías de despliegue y ejecución.

En esta entrada vamos a tratar sobre los dos primeros bloques de tecnologías.

Tecnologías core

Son la base tecnológica en la que están desarrollados todos los módulos de la Plataforma, así como los conectores de integración con los productos Open Source incorporados, como por ejemplo Kafka, Drools, Camunda, etc.

  • Java 8: Proporciona el entorno de ejecución de la mayoría de módulos de la Plataforma. En la Onesait Platform, casi todos los desarrollos e integraciones con productos están programados en Java 8.
  • Spring Boot 2 Spring: proporciona un framework Java que agiliza en gran medida los desarrollos e integraciones entre los diferentes niveles de una aplicación, así como con otras aplicaciones.
    A su vez Spring Boot 2 proporciona un marco de trabajo más limpio y ordenado, proporcionando «starters» que abstraen al programador de las dependencias a importar en el proyecto. Da un mayor nivel de compatibilidad entre los distintos artefactos y además, permite que las aplicaciones se puedan ejecutar de forma «standalone» embebiendo el contenedor de aplicaciones que necesiten.
    En el caso de la Onesait Platform, cada módulo desplegado es una aplicación Spring Boot independiente que integra el software en un contenedor web Jetty. El ecosistema Spring se organiza en proyectos. Los principales que usamos son:
    • Spring MVC
    • Spring Data
    • Spring Web
    • Spring Security
  • Maven 3 + Nexus: como herramienta de soporte a la compilación de artefactos así como gestor centralizado de dependencias.
  • Docker: ofrece el entorno la ejecución contenerizada de la Plataforma. Cada módulo está contenerizado de manera que en su estructura dispone de un fichero Dockerfile, mediante el cual al ejecutarse el ciclo CI/CD de generación de una versión, se generan las imágenes Docker correspondientes a cada módulo. La dockerización depende del tipo de módulo de la plataforma. En la mayoría de los casos se trata de crear una imagen para lanzar la aplicación Spring Boot del módulo. Pero si trata de un producto de terceros (por ejemplo, Kafka), puede incluir la instalación de extensión y modificación de la configuración.
  • MariaDB y MySQL: son las dos bases de datos compatibles con la Onesait Platform para almacenar toda la información de configuración de la misma. La plataforma soporta cualquier base de datos relacional como ConfigDB, pero por defecto todos los scripts y la certificación la hacemos con MariaDB y Mysql. Por tanto se puede usar otras (PostgresSQL) pero hay que contemplar un tiempo para adaptar los scripts de instalación y certificar el funcionamiento.
  • Hazelcast: es el «datagrid» en memoria de la plataforma, proporciona funcionalidades de servidor de caché y mensajería entre los distintos componentes de la Onesait Platform. Se despliega como un módulo independiente, al que se conectan el resto de módulos de la Plataforma.
  • REST/Swagger: se trata de una tecnología muy versátil, con multitud de usos en la Plataforma, entre ellos:
    • API de gestión: Todos los conceptos de la Plataforma (usuarios, ontologías, clientes, dataflows, etc.) se pueden gestionar desde un API REST de gestión, de manera que terceras aplicaciones, pueden integrarse con la Plataforma para gestionar cualquier concepto de la Onesait Platform, sin necesidad de interacción humana a través del Control Panel.
    • Protocolo de comunicación más extendido entre los diferentes módulos. La Onesait Platform está construida bajo el paradigma de arquitectura distribuida basada en microservicios, considerándose cada módulo un microservicio. De este modo los distintos módulos se coordinan y comunican entre sí vía REST, de forma distribuida en el clúster de ejecución proporcionado por la plataforma de contenedores (CaaS), que dispone de servicio de red y DNS. Cabe destacar que no es el único protocolo de comunicación, pero si el mas habitual. Existen otros, como mensajería P/S y Colas proporcionados por Hazelcast.
  • JSON: es el formato de datos utilizado, incluyendo:
    • Información de negocio de las aplicaciones en las ontologías, validando su semántica mediante JSONSchema.
    • Protocolos de mensajería de Digital Broker y Digital Twin Broker.
    • Operaciones REST sobre el API Manager
    • APIs REST de gestión de la Plataforma.
    • Comunicaciones internas entre módulos.
  • HTML5, CSS3 y Thymeleaf: son la base para la construcción de las diferentes pantallas web de gestión del Control Panel.
  • AngularJS y VueJS: Gadgets y Dashboard se apoyan en estas dos tecnologías para la construcción de cuadros de mando.
  • Spring Security + OAuth2: la gestión de la seguridad de la plataforma se apoya en un módulo que realiza tareas de servidor OAuth2. Gestiona las sesiones de usuario así como los recursos a los que este tiene acceso. Integrado con Spring Security, proporciona seguridad tanto a nivel de plataforma como a nivel de aplicación mediante la utilización de los Realms de la Onesait Platform. Permite integración tanto con LDAP como CAS.

Tecnologías de comunicación

La Onesait Platform es una plataforma centrada en la información, que ofrece diferentes puntos de entrada y consulta de la misma. La elección de la tecnología de comunicación se hace dependiendo de la naturaleza de la aplicación que accede a la información o de la forma en que esta se genera.

Las principales tecnologías utilizadas son:

  • REST/Swagger: módulos como el API Manager, Digital Broker y Digital Twin Broker disponen de APIs REST documentadas con Swagger para enviar/consultar información.
  • MQTT y Websocket: el módulo Digital Broker ofrece tambien interfaces de comunicación utilizando estos protocolos.
  • Kafka: proporciona un broker de mensajería, con persistencia de mensajes y capaz de procesar volúmenes muy altos de información. En la Plataforma, Kafka se utiliza para diferentes propósitos:
    • Broker de entrada al Digital Broker: en escenarios de alto rendimiento, donde haya que procesar gran número de mensajes muy rápido, puede ser adecuado que los clientes de la plataforma se conecten a Kafka para hacer las inserciones de información, y desde ahí el Digital Broker procese los mensajes.
    • Procesamiento de Streams con KSQL: volcando el resultado a ontologías.
  • OPC UA, CoAP, etc: El módulo Dataflow, basado en Streamsets permite la ingesta de información desde orígenes muy dispares, mediante la utilización de conectores a estos orígenes y estableciendo una ontología de la Plataforma como destino.

Con esto damos por finalizada esta primera entrada sobre las tecnologías que utilizamos en la Onesait Platform. La semana que viene veremos los tres módulos restantes, referidos a las tecnologías basadas en productos Open Source, de almacenamiento, y de despliegue y ejecución.

Esperamos que os haya resultado interesante, y cualquier duda que os surja dejadnos un comentario.

1 Comment

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *