Marco de Referencia Plataforma

Introducción

Definimos Onesait Platform como el framework de desarrollo de productos. Es una plataforma abierta, basada en componentes open-source, capaz de usar servicios PaaS y que contiene las herramientas y servicios técnicos necesarios para soportar el desarrollo y la operación de soluciones.

Dicho de otra forma, Onesait Platform permite usar los estándares Onesait de una forma sencilla, eficiente y estructurada.

En los siguientes puntos veremos la propuesta de plataforma para utilizar las tecnologías propuestas en los estándares Onesait.

Componentes de Plataforma 

Como podemos ver en el diagrama la Plataforma se estructura en 3 distribuciones lógicas/comerciales: Engine, Intelligence y Things. 

Es importante recalcar que Onesait Platform es una plataforma modular que permite que los productos puedan seleccionar sólo los componentes que se requieran (de cualquiera de las distribuciones), permitiendo ir creciendo progresivamente conforme surgen nuevas necesidades en el producto. 

Soporte Arquitectura Backend

Concepto

Componentes Onesait Platform

Detalles

Apificación

APIficación

API Manager básico

API Manager on Gravitee

Flow Engine

La Plataforma ofrece diversos componentes para dar soporte a la apificación.

API Manager básico: permite publicar como APIs Open API 3 consultas sobre ontologías (operaciones CRUD y consultas SQL custom con parámetros). También permite hacer de proxy a APIs OPEN API. Integra en el Control Panel un API Portal básico controlado el ciclo de vida de las APIs. Soporta postprocesado de APIs, caché, control del throtling,...

API Manager on Gravitee: para escenarios más avanzados la plataforma integra Gravitee que permite controlar con mayor detalle el flujo de las APIs.

FlowEngine: este componente permite crear visualmente lógicas de negocio que luego pueden publicarse fácilmente como APIs REST.

Arquitectura Microservicios

Arquitectura de Microservicios (MSA)

Soporte Microservicios

Data Flow

Soporte micro-servicios: esta herramienta da soporte al ciclo de vida completo de los micro-servicios, permite crear un micro-servicio en base a una plantilla estandarizada (que puede ser la plantilla de Arquitectura), generando el fichero Dockerfile correspondiente para construir la imagen del contenedor. También se encarga de crear una pipelineCI/CD de acuerdo a las Plantillas Estandarizadas Onesait DevOps, habilitando la integración contínua de los cambios y la generación automática de la imagen del contenedor. Esta pipeline también se encarga de publicar la imagen en el Registro de Contenedores Onesait y finalmente, de su despliegue en el CaaS, junto a plataforma.

Data Flow: este componente está pensado para el tratamiento en streaming de la información y permite crear visualmente una lógica que se publique como un micro-servicio y que posteriormente se podrá apificar en plataforma.

Integración

Integración Onesait

Data Flow

Flow Engine

Digital Broker

Kafka on Ontologies

Data Flow: este componente permite modelar visualmente pipelines, estos pipelines pueden ser flujos de integración, tanto en streaming como en batch, ya que el Data Flow ofrece un gran número de conectores para bases de datos, buses, sistemas Cloud,... detalle conectores

Flow Engine: este componente se usa para integraciones para muchos escenarios ya que es muy sencillo de usar por su programación visual y además ofrece un amplio número de componentes (pj con bases de datos, Kafka, servicios REST y Web,...). Además ofrece una librería (Node-RED Library) con otros componentes que se pueden instalar en plataforma.

Digital Broker: este es el Broker de Plataforma. Permite comunicar con plataforma con diversos protocolos (REST, WebSockets, MQTT, Kafka,...) permitiendo realizar cualquier operación sobre ontologías, desde inserciones, consultas, suscripciones,...maneja el modelo de seguridad y comunica con tokens gestionados desde plataforma.

Kafka on Ontologies: esta integración permite crear un tópico de publicación y otro de suscripción para manejar las ontologías de plataforma. Por tanto cualquiera puede comunicar con plataforma vía Kafka. Si además configuramos la ontología como No Persistente la comunicación es casi transparente.

Seguridad

Seguridad en las APIs

Identity Manager

Realms

Identity Manager: la plataforma incluye un Identity Manager que ofrece autenticación y autorización a través de tokens OAuth2. Este IM permite gestionar la seguridad de todos los elementos de plataforma asociados a través de un proyecto y además permite manejar los Realms de Plataforma. El IM funciona sobre los usuarios gestionados en Plataforma (ConfigDB) aunque se puede configurar para atacar a un LDAP, además permite crear plugins para adaptar el comportamiento. Para escenarios más avanzados la plataforma integra Keycloak.

Realms: permite crear dominios de seguridad para lasaplicaciones y utilizar estos dominios desde las aplicaciones a través de la autenticación y autorización del Identity Manager. En un dominio se pueden crear mis propios roles y asignarles usuarios de la plataforma.

Flujos de Negocio

Tecnología BPM

BPM Engine

Flow Engine

BPM Engine: la plataforma integra el BPM open-source Camunda. Para cada usuario que crea flujos de negocio en el BPM se creará un tenant que se gestiona automáticamente desde plataforma.

Flow Engine: este motor se usa a menudo para desarrollar flujos de negocio ya que ofrece muchos componentes para usar out-of-the-box además del nodo función que permite programar en Node.js. Además tiene la ventaja de que estos procesos pueden construirse y depurarse desde el mismo entorno de ejecución. Podéis revisar algunos de los ejemplos.

Reglas de Negocio

Tecnología BRMS

Rules Engine

Rules Engine: la plataforma integra el motor de reglas Drools. Desde el propio Control Panel se pueden crear reglas en formato DRL (Drools Rules Language) o bien como Tablas de decisión. Se ofrecen APIs para comunicar con las ontologías en las reglas y poder crear reglas de contexto. Las reglas pueden invocarse a la llegada de una ontología o bien con un endpoint REST.

Data Grid

Data Grid

Cache Service

Cache Service: la plataforma integra Hazelcast para comunicación entre componentes y caché distribuida. Desde el propio Control Panel pueden crearse diferentes configuraciones de caché y recuperar datos a través de endpoint REST.

Reports

Tecnología de informes- JasperReports

Report Engine

Reports Engine: la plataforma integra Jasper Reports, de modo que al propio Control Panal puedes subir las plantillas Jasper creadas en Jasper Studio o equivalente y la plataforma te permitirá invocar a esta plantilla para generar los informes en diversos formatos. La plataforma ofrece un endpoint REST para eto y permite guardar los reports generados.

Log centralizado

Gestión de Logs

Centralized Logs

Centralized Logs: la plataforma integra Graylog como tecnología de centralización y explotación de logs. Todos los módulos de plataforma envían sus logs a este componente, además de poder integrar los logs de las aplicaciones construidas alrededor de plataforma.

Arquitectura Multitenant

Arquitectura Multitenant

Soporte Multitenant

Soporte multitenant: la plataforma permite funcionar en modo multi-tenant en el que una misma instancia de plataforma desde un único Control Panel es capaz de gestionar diversos verticales (entendiendo por vertical a un producto con su propia ConfigDB) y para cada vertical diversos tenants (entendiendo por tenant un cliente de un producto, con su propia RealTimeDB on Mong).

Arquitectura EDA

Arquitectura Dirigida por Eventos(EDA)

Digital Broker

Kafka on Ontologies

Digital Broker: este es el Broker de Plataforma. Permite comunicar con plataforma con diversos protocolos (REST, WebSockets, MQTT, Kafka,...) permitiendo realizar cualquier operación sobre ontologías, desde inserciones, consultas, suscripciones,...maneja el modelo de seguridad y comunica con tokens gestionados desde plataforma.

Kafka on Ontologies: esta integración permite crear un tópico de publicación y otro de suscripción para manejar las ontologías de plataforma. Por tanto cualquiera puede comunicar con plataforma vía Kafka. Si además configuramos la ontología como No Persistente la comunicación es casi transparente.

Utilidades Arquitectura

Auditoría

Configuración centralizada

Servicio de Internacionalización

File Repository

Monitoring UI

Planner Servicios REST

Proyectos

WebApps Manager

Transacciones Distribuidas

Mail Service

 

 

Configuración centralizada: esta utilidad permite gestionar configuraciones de los productos, estas pueden editarse desde el Control Panel. La propia plataforma define sus configuraciones aquí. Ofrece un API REST además de UI.

Servicio de internacionalización: permite definir internacionalizaciones en diversos idiomas y gestionarlas desde el propio Control Panel. Se integra con el Dashboard Engine y es compatible con APIs JS. Ofrece un API REST además de UI.

File Repository: esta utilidad permite subir ficheros a plataforma a través de un UI o de sus APIS REST asignándole permisos como al resto de elementos de plataforma, de modo que puede funcionar como un sencillo gestor documental al estilo Dropbox.

Monitoring UI: los componentes de plataforma usan Spring Actuator para ofrecer unos endpoint REST con información del estado y monitorización, además estos se registran en una consola Spring Boot Admin integrada con la seguridad de plataforma.

Planner Servicios REST : esta utilidad permite planificar la invocación de Servicios REST desde el propio Control Panel de Plataforma.

Proyectos: el concepto de proyecto permite crear un espacio colaborativo para varios usuarios en el que se comparten los elementos creados en plataforma.

WebApps Manager: esta utilidad permite subir aplicaciones web completas (HTML + JS + CSS) a la plataforma para que esta sirva su contenido desde su LoadBalancer.

Transacciones distribuidas: este servicio permite gestionar diferentes operaciones realizadas a través del Digital Broker de plataforma dentro de una transacción distribuida.

Mail Service: esta utilidad permite el envío de correos electrónicos, bien usando su API REST, bien desde el componente del FlowEngine.

Soporte Data

Concepto

Soporte Onesait Platform

Detalles

Arquitectura del Dato: Ciclo de vida y Herramientas

Ciclo de vida del Dato

Stack tecnológico Arquitectura del Dato

 

Ingesta: Data Flow y Flow Engine

Data Lake: Ontologías + Storage Engines para Ontologías

Transformación: Data Flow + Flow Engine + Notebooks

Minería: Data Flow + Notebooks + Data Refiner + Data Mining Tools

Publicación y Visualización: API Manager + Dashboard Engine + Report Engine

La plataforma ofrece herramientas para cubrir todas las fases del ciclo de vida del dato en los productos Onesait. Algunas herramientas como el DataFlow pueden usarse en diferentes fases en función de la necesidad concreta o el expertise del equipo.

 

Arquitectura del Dato: Big Data

Big Data

Data Flow

Kafka on Ontologies

Ontologías sobre HIVE/Impala

Ontologías sobre Kudu

Ontologías sobre PrestoDB+MinIO

La Plataforma ofrece soporte para escenarios Big Data a través de diferentez piezas:

Data Flow: esta pieza está pensada para ingestar grandes volúmenes de datos desde fuentes Big Data (por ejemplo desde un Bus Kafka, un Hadoop, un BigTable).

Kafka: la plataforma integra un Bus Kafka que puede usarse para ingesta y para publicar datos hacia el exterior.

Entidades sobre Presto+MinIO: para escenarios BigData en los que no aplique tener un Hadoop ya que se necesita un escenario más dinámico y escalable con menos gestión la plataforma permite manejar el concepto de ontología almacenadas sobre MinIO y consultables vía Presto.

Entidades sobre HIVE/Impala: la plataforma puede usar HIVE como repositorio permitiendo hacer consultas online vía Impala

Entidades sobre Kudu: Kudu es una tecnología Big Data que cubre el escenario de uso de HIVE y el de HBase con una única tecnología. La plataforma está preparada para crear ontologías y consultar sobre Kudu a través de ontologías.

Arquitectura del Dato: Soporte SQL

Almacenamiento SQL

Ontologías sobre BD relacionales

La plataforma ofrece un soporte completo sobre bases de datos relacionales que tengan un driver JDBC.

En este caso se crea una conexión JDBC a esa base de datos desde el propio Control Panel y una vez tengo esta conexión puedo generar las ontologías a partir de las tablas existentes, además de poder crear ontologías que hacen la creación de la tabla subyacente.

Se soportan bases de datos como Oracle, MySQL, Postgresql, SQL Server, AWS AuroraDB, Google CloudSQL,...

Para escenarios más custom existe el concepto de Agente JDBC que permite crear conexiones de sólo lectura a través del conector Apache Calcite, así ofrecemos conexión con Google BigQuery.

Arquitectura del Dato: Soporte NoSQL

Almacenamiento NoSQL

Ontologías sobre MongoDB

Ontologías sobre DocumentDB
Ontologías sobre Elasticsearch

Ontologías sobre CosmosDB

El concepto de Ontología/Entidad tiene el objetivo de aislar de la base de datos subyacente y en ese sentido la plataforma soporta no sólo bases de datos SQL, si no diferentes motores NoSQL.

Una de las ventajas de la integración de estos motores en plataforma es que plataforma se encarga de interactuar con ellos haciendo la creación de los elementos necesarios (por ejemplo colecciones en MongoDB) y de ofrecer un motor de consultas SQL sea cual sea la base de datos subyacente.

En Plataforma existe una integración muy completa con MongoDB, ya que es una base de datos que soporta diferentes casos de uso, y se permite para esta base de datos el modelado TimeSeries, consultas y modelado geográfico,... pero además de Mongo se soportan otras tecnologías NoSQL como Elastic (base de la auditoría de plataforma), DocumentDB, CosmosDB,...

El instalador de plataforma en entornos de desarrollo típicamente plataforma despliega Mongo y Elasticsearch contenerizados, en entornos productivos se crea un cluster o se usa servicios Cloud.

Gobierno del Dato

Gobierno del Dato

Data Governance en Plataforma

Linaje del Dato

En la primera entrada se muestran diversas capacidades ofrecidas por plataforma en el ámbito del Data Governance.

Además hay una línea de trabajo abierta en el ámbito de Gobierno del Dato para mejorar las herramientas de plataforma y se ha comenzado con la herramienta de Linaje del Dato.

Analítica y Algoritmia

Analítica y algoritmia

Notebooks

https://onesaitplatform.atlassian.net/wiki/pages/createpage.action?spaceKey=DOCT&title=Models%20Manager%20Guides

BaseModelService

 

En este ámbito la plataforma proporciona el módulo Notebooks, que provee a los científicos de datos de un entorno web multiusuario en el que elaborar modelos de análisis de la información almacenada en la Plataforma con sus lenguajes favoritos (Python, Spark, R, Tensorflow, Keras, SQL,…) de manera interactiva.

Este componente está basado en Apache Zeppelin e incluye un intérprete de plataforma que permite interactuar con las ontologías de plataforma desde el propio Notebook.

Además se ha creado el BaseModelService, que dentro de la librería Python de plataforma ofrece el soporte para el desarrollo de Modelos con un enfoque MaaS (Model As a Service) permitiendo entrenar modelos desde ontologías o ficheros del FileRepository, almacenar ejecuciones de modelos en ontologías y almacenar modelos en el FileRepository de forma sencilla.

Visualización

Dashboard Engine

Report Engine

 

El Dashboard Engine permite la creación interactiva y visual de completos cuadros de mando.

El Report Engine permite la gestión y ejecución de reports Jasper.

Analítica geoespacial

Analítica Geoespacial

Visores GIS

Soporte Geográfico MongoDB

Soporte geográfico PostGIS

 

El concepto de Visor GIS permite crear visualizaciones GIS de forma sencilla simplemente seleccionado las diferentes capas que componen el visor sobre ontologías con información geográfica.

Esta información geográfica puede venir de MongoDB o PostGIS y se representan sobre un visor generado en tecnología Cesium, del que luego tenemos el código Javascript para poderlo ir ampliándolo.

Computer Vision

Marco de referencia Computer Vision

Video Broker

El componente VideoBroker permite conectarse a diversos streams de vídeo y asociarle un algoritmo de ejecución de los incluidos en el componente o bien asociarle un endpoint HTTP. El motor se encarga de pasar el stream de vídeo a frames según la configuración del componente y pasar cada imagen al algoritmo o endpoint que devolverá la imagen anotada y un array JSON con los objetos reconocidos que el componente almacena en una ontología.

NLP

Marco de Referencia de NLP

Intelligence REST APIs

La plataforma ofrece un conjunto de APIS REST que actúan de wrappers sobre modelos propios de un producto o de las APIs disponibilizadas por Clouds como Azure, Google o AWS de modo que sea quien sea el proveedor siempre funcionen igual.

Dentro de estas APIs tenemos APIs para traducción, de análisis del sentimiento, de OCR,... y se pueden extender y crear más.

Soporte DevOps & Infraestructura y Operaciones

Concepto

Soporte Onesait Platform

Detalles

DevOps

Estrategia DevOps Plataforma

En esta guía se explica la estrategia DevOps de plataforma.

Despliegue de Plataforma

Estrategia de despliegue de Plataforma

Helm Charts de Plataforma

Despliegue típico de plataforma

 

En la guía de Estrategia de despliegue se explica toda la estrategia de despliegue de plataforma, basada en contenedores, orquestada por Kubernetes. Para productos basada en OpenShift y para proyectos en Rancher como CaaS.

En la guía de Chart Helm se explica la separación en diferentes charts Helm de los despliegues de plataforma.

En el despliegue típico de plataforma se dan recomendaciones para dimensionar un despliegue típico de plataforma.

Despliegue de Soluciones

Consola Operaciones

Best Practices despliegue sobre K8s

La Consola de Operaciones es una nueva herramienta que permite el despliegue de una solución construida sobre Onesait Platform de una forma sencilla desde una UI sobre un cluster OpenShift ya existente, además integra la información de facturación.

Soporte UX

Concepto

Soporte Onesait Platform

Detalles

Desarrollo Frontend

Desarrollo Frontend

Dashboard Engine

Low Code tool: FIGMA To Vue.js

Visores GIS

Template Web

Dashboard Engine: esta herramienta permite crear cuadros de mando interactivos a partir de las ontologías almacenadas en plataforma. Estos gadgets pueden seguir el sistema de diseño ODS y se están ya usando en varios productos

Low Code Tool: FIGMA to Vue.js: esta herramienta de prototipado permite que a partir de un diseño en FIGMA anotado de cierta forma se genere la aplicación Vue.js y se mapee a las APIs REST de plataforma generando de forma sencilla una aplicación web completamente operativa.

Visores GIS: esta utilidad permite crear visualizaciones GIS de forma sencilla simplemente seleccionado las diferentes capas que componen el visor sobre ontologías con información geográfica.

Template Web: esta utilidad permite generar un esqueleto de aplicación incluyendo menú izquierdo y login que interactúa de forma muy sencilla con los dashboards y se despliega como proyecto Web. Se está costruyendo una versión sobre ODS, además de generar el Dashboard Vue CLI que generará el esqueleto base de la aplicación.