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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | Servicio de Internacionalización
| 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 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 | 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 | 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 | 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 | 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 |
| 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 |
| 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 |
| 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 | 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 | 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 | En esta guía se explica la estrategia DevOps de plataforma. | |
Despliegue de Plataforma | Estrategia de despliegue 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 | 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 | 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. |