Este es un documento interno o avanzado que presenta el diseño de OnMind y el portafolio de proyectos como base de conocimiento técnico del producto, su arquitectura, así como información de referencia técnica sobre el producto.
Sistema de gestión de base de datos de OnMind
OnMind incorpora o acopla un mecanismo que gestiona los datos con un alcance, esto puede variar al interior de nuestra plataforma y planes de servicio en la nube. OnMind-EPI es el nombre otorgado a nuestro gestor de base de datos, significando Implementación de Procesamiento Embebido, el cual se refiere a (1) nuestra implementación de gestor de nivel superior, (2) nuestra API o capa JSON, (3) nuestro modelo de datos abstracto, (4) nuestro repositorio con metadatos, (5) base de datos Java internamente embebida y (6) función para respaldo (backup). Aunque OnMind-EPI puede involucrar dentro una capa de SQL (Structured Query Language) su conexión se hace a través de la API, clasificándose como base de datos NoSQL. Está diseñada para acompañar a OnMind sin interfaz gráfica de usuario y hacer posible cierta auto-administración (aparte de los respaldos). OnMind-EPI es recomendable para archivo de base de datos hasta un tamaño de 3GB (suele ser suficiente para la mayoría de planes), acercarse a esa dimensión es señal de revisar un nuevo plan (como OnMind Optimus).
En plan OnMind Optimus es posible evaluar proyecto con base de datos de interés específico que sea viable adaptar a través de nuestra Interfaz Adaptadora de Base de Datos denominada OnMind-DAI (sustituta de OnMind-EPI sin base de datos). OnMind no provee el motor de base de datos en este último escenario y debe ser adquirido o aprovisionado, sólo incorporaría como mecanismo OnMind-DAI que posibilita la conectividad de bases de datos de fabricantes, actualmente versión diseñada principalmente para MySQL/MariaDB (incluso Amazon Aurora sobre AWS), así como Oracle 18c (incluso XE o 12c, no menor). Por lo tanto se concluye que, si los requisitos exceden el alcance de OnMind-EPI debe utilizarse OnMind-DAI conectando una base de datos de terceros adoptada o viable de adaptar bajo proyecto. Quizás pueda verse nuestra tecnología como una capa superior a la base de datos (supra base de datos) o multi-motor (tal como MySQL o MariaDB), o simplemente considerar OnMind-DAI como una pseudo-base de datos pero es un sistema de gestión.
Su valor agregado consiste en posibilitar independencia del motor de base de datos (al menos no depender de uno solo), así como también aplicar un modelo de datos abstracto orientado bajo el Método OnMind que promueve proyectos ágiles.
Para empezar es importante comprender como se encuentra diseñado OnMind, teniendo en cuenta la siguiente gráfica.
Comprendiendo que haciendo uso de ingenio se concibe un producto de carácter técnico, se obtiene una base sólida sobre la que se soportan las aplicaciones y planes de carácter comercial, incluso un modelo de negocio. OnMind se ha enfocado primero en invertir en su infraestructura de software antes que remitirse a una aplicación específica, proyectando innovación, servicio y beneficio a otro nivel. Veamos a continuación el portafolio de proyectos de OnMind.
Proyecto | Descripción |
---|---|
GUI | Diseño estático para la UI de las “Apps” (frontend). Mezcla controles de datos, módulos o componentes web que involucran al proyecto UIK. Actualmente es usado internamente por ASI. |
ASI | Interfaz de servicios de aplicaciones (backend). Servidor lógico para aplicaciones web estáticas (GUI) y para orquestar funciones del servicio. En el caso de sistemas Linux se vincula NGinx como proxy invertido. |
DAI | Interfaz adaptadora de base de datos (dbms-like). Conecta bases de datos adoptadas usando JVM y brindando API-Rest en JSON. |
EPI | Implementación de procesamiento embebido, respecto a ASI (database-alternative). Es un gestor de base de datos que basándose en gran parte de DAI utiliza base de datos Java internamente embebida. Puede clasificarse como base de datos NoSQL, siendo autoadministrable y brindando API-Rest en JSON. EPI es la alternativa a DAI siendo mutuamente excluyentes. |
CLI | Interfaz de línea de comandos. Útil para respaldo indistintantemente de la base de datos, así como otras utilidades. |
AVE | Entorno visor de aplicaciones web (“freeware”). Es la “app” visora de la plataforma OnMind para móviles (actualmente Android) y como sustituta de navegador en el escritorio (Windows & macOS). |
UIK | Utilidades (Kit) de interfaz de usuario. Controles de datos (o componentes web) y estilos para GUI. Se apoya a su vez en proyectos comunitarios (ej. Fomantic-UI, Riot JS). A futuro, bajo proyecto podría llegar a ser independiente si se reorganiza y presenta alguna parte como una librería de estilos y componentes web, seguramente OpenSource. Esto depende de la orientación del momento y el recurso financiero para sostener otro proyecto. |
BOX | Frontend + Backend + Database. Se refiere a nuestro servidor interno y plataforma para pruebas de producto que combina ASI + EPI sin requerir infraestructura ni NGinx. A futuro, bajo proyecto podría llegar a ser independiente si se reorganiza y presenta alguna parte como una herramienta de estudio para desarrollador o usuario avanzado. Esto depende también del proyecto UIK, la orientación del momento y el recurso financiero para sostener un proyecto adicional. |
OnMind, siendo una plataforma orientada para la nube, puede tener proyectos exclusivos para su equipo interno (ej. UIK, BOX). De hecho, cada “app” es un proyecto interno.
“Freeware” o “Freemium” puede traducirse en este contexto como software libre de costo de licenciamiento para el usuario, bajo términos comerciales con restricciones más delimitadas, de código cerrado, sin garantía alguna y sin soporte.
Teniendo presente lo anterior, los frentes de desarrollo de software de OnMind son los siguientes:
Puedes consultar nuestra Ficha Técnica.
Comprendiendo que la visión ya es amplia y es importante un alcance, logrando cubrir nuestras necesidades con lenguajes como Javascript
y Kotlin
, incluso ABCode
, si no se ha mencionado otro lenguaje en principio estaría fuera de nuestro radar, estando abiertos a algún otro para un proyecto concreto que significativamente amerite otro enfoque.
OnMind posee una interfaz de programación de aplicaciones (API) y microservicios internos para procesos de negocio, utilizando tecnologías (Node.js, Vert.x, Nginx) que dan respuesta al denominado “problema de las diez mil conexiones” (C10K) y posibilitan proyectos para el internet de las cosas (IoT). El método singular y la disposición de nuestro sistema (o manera de concebirse) también supone una base para el desarrollo de proyectos modernos, multicanal (para la Web y habilitándo funciones para móviles), para construir procesos de negocio personalizados y para las aplicaciones que se lideran al interior de OnMind.
Visualizamos a OnMind con lo que hemos catalogado como “Entorno de datos orientado a la misión o gestión” (MODE), combinando un sistema (como Linux), una interfaz adaptadora de base de datos (OnMind-DAI), microservicios web y nuestro componente visual (con OnMind-AVE o bajo Navegador admitido). En otras palabras, sobre la base de un sistema (como Linux) se vincula nuestra plataforma con la cual puedes gestionar tu servicio o procedimientos, es decir, es posible integrar y orquestar actividad de negocio, principalmente si se opera a través de internet y se usan dispositivos móviles.
Se podría pensar como un sistema operable para la nube con un paquete de aplicaciones para negocios y la oficina.
OnMind, en versión para servidor, suele simplificar su implementación de seguridad acogiendo el acompañamiento y la buena práctica de un proxy reverso como Nginx, evitando exponer sus puertos y brindando una mejor modalidad de enrutamiento al publicar servicios localmente, el proxy resuelve esto hacia afuera con único puerto de navegación (443) bajo protocolo seguro (https). De allí, que se gestionan también los certificados de seguridad con Nginx (actividad de configuración que corresponde a quién administre la infraestructura una vez adquiridos los certificados). Incluso se posibilitaría crecimiento horizontal adquiriendo licencia de Nginx Plus (Nginx+).