TodoBI - Business Intelligence, Big Data, ML y AI TodoBI - Business Intelligence, Big Data, ML y AI

Cómo es la arquitectura de LinceBI?

Como ya os hemos contado algunas veces, nuestros amigos de Stratebi han creado la plataforma LinceBI que, en nuestra opinión, es la más completa solución Analytics basada en Open Source (originariamente se basa en Pentaho y otras muchas tecnologías open source), habiendo creado muchas aplicaciones sobre ella y dotarla de mejoras en el server (tags, buscador, responsive...), con soporte profesional además, para garantizar el deploy en entornos de producción exigentes

La gran ventaja es que permite integrarse con cualquier otra solución analytics, actuando como una plataforma hub, poder desplegarse en tu cloud favorita o 'on premise', customizar y conectar con todo tipo de datos: Big Data, real time, batch y aplicar algoritmos de Machine Learning

Aquí tienes una Demo Online para echar un vistazo

Arquitectura de LinceBI

LinceBI extiende a la plataforma Pentaho BI Server proporcionando una interfaz responsive más moderna, un buscador y un sistema de etiquetas y pestañas que permiten al usuario organizar con facilidad sus archivos.

Ha sido desarrollado pensando en la independencia de Pentaho BI Server para así facilitar su actualización a futuras versiones de la plataforma.

Componentes

Frontend

· Vue 2.

· BootstrapVue 2.

· Sass.

Backend

· Java 8.

· Tomcat 8.5.

· Pentaho BI Server 8.3 LTS o 9.1.

· Almacenamiento:

- Local.

- PostgreSQL 13.

- MySQL 5.7.

- CockroachDB 21.

- TiDB 5.

Estructura de la distribución

.
├── pentaho-solutions/
│   └── system/
│ ├── common-ui/
│ │   ├── resources/
│ │   │   └── themes/
│       │ │       │   # Tema de LinceBI para BI Server.
│ │   │       └── lincebi/
│ │   │
│ │   │   # Definición del tema de LinceBI.
│ │   └── themes.xml
│ │
│ │   # Backend implementado como plugin de BI Server.
│ ├── lincebi/
│ │
│ │   # Cambio del tema por defecto.
│ └── pentaho.xml

└── tomcat/
    └── webapps/
        └── pentaho/
            | # Reemplazo de la vista "/Home" de BI Server.
            ├── Home/
            │
            | # Reemplazo de la vista "/Login" de BI Server.
            ├── Login/
            │
            ├── mantle/
            │ ├── themes/
            │ │   │   # Tema de LinceBI.
            │ │   └── lincebi/
            │ │
            | |   # Reescritura de "Mantle.jsp" que es utilizada a modo de
            | |   # puente para que LinceBI pueda cargar las perspectivas
            | |   # originales de Pentaho BI Server.
            │ ├── MantleBridge.jsp
            │ │
            | |   # Definición del tema de LinceBI.
            │ └── themes.xml
            │
            └── WEB-INF/
                │   # Cambios en los servlets.
                └── web.xml

Integraciones

LinceBI puede integrarse fácilmente con aplicaciones externas. Ej) PowerBI

Power BI

En el caso de Power BI el backend de LinceBI implementa un proxy que permite embeber informes para que los usuarios puedan visualizarlos sin necesidad de iniciar sesión en Microsoft, la seguridad de dichos informes puede controlarse implementando Row-Level Security y filtrar los datos en función del usuario y roles dentro de LinceBI.

El flujo de autenticación es el siguiente, siendo LinceBI la aplicación ISV.

Single Sign-On (CAS) / LDAP / Seguridad JDBC

LinceBI incopora por defecto las librerías de CAS necesarias para implementar SSO.

En nuestro repositorio de GitHub se pueden encontrar distintos ejemplos de despliegue con Docker Compose de Keycloak y LinceBI configurado para poblar los usuarios y roles desde LDAPo JDBC.

URLs externas

Pueden importarse en LinceBI archivos con extensión .url con enlaces a contenido externo que LinceBI abra dentro de la plataforma de tal forma que, combinándolo con SSO y LDAP, haga que la aplicación se comporte como un hub para que los usuarios de forma centralizada y transparente interactúen con distintas herramientas de visualización como Grafana o Metabase.

Un archivo .urlpresenta la siguiente estructura:

[InternetShortcut]
URL=https://example.com

Pudiendo ser creados mediante cualquier editor de texto o desde el menú contextual de Windows.

Despliegue

LinceBI se distribuye en dos variantes, contenedores o standalone.

Docker/Kubernetes

Para su despliegue contenerizado proporcionamos imágenes OCI para su utilización con Docker o Kubernetes. Actualmente ofrecemos dos imágenes, una genérica de Pentaho BI Server y otra de LinceBI que extiende a esta.

Las imágenes son muy versátiles gracias a un sistema de capas que pueden montarse en el contenedor y son evaluadas en orden en el primer inicio, pudiendo aplicar modificaciones complejas al despliegue pero a su vez aisladas para tener un mejor control sobre los cambios que se realizan y poder reutilizarlos entre varios entornos. Los archivos o directorios montados en el directorio /etc/biserver.init.d/ son tratados de la siguiente manera:

· Archivos *.sh y *.run: son ejecutados desde el directorio de trabajo ${BISERVER_HOME}.

· Archivos *.jar: son copiados a ${CATALINA_BASE}/lib/.

· Archivos *.tar, *.tar.gz, *.tgz, *.tar.bz2, *.tbz2, *.tar.xz, *.txz, *.zip, *.kar:

- *.__root__.*: son extraídos en ${BISERVER_HOME}.

- *.__webapp_pentaho__.*: son extraídos en ${CATALINA_BASE}/webapps/${WEBAPP_PENTAHO_DIRNAME}.

- *.__webapp_pentaho_style__.*: son extraídos en ${CATALINA_BASE}/webapps/${WEBAPP_PENTAHO_STYLE_DIRNAME}.

- *.__pentaho_solutions__.*: son extraídos en ${BISERVER_HOME}/${SOLUTIONS_DIRNAME}.

- *.__data__.*: son extraídos en ${BISERVER_HOME}/${DATA_DIRNAME}.

- *.__plugin__.*: son extraídos en ${BISERVER_HOME}/${SOLUTIONS_DIRNAME}/system/.

- Todos los demás: se autodetectará si tratarse como *.__root__.* o *.__plugin__.*.

· Directorios:

- *.__root__: son copiados en ${BISERVER_HOME}.

- *.__webapp_pentaho__: son copiados en ${CATALINA_BASE}/webapps/${WEBAPP_PENTAHO_DIRNAME}.

- *.__webapp_pentaho_style__: son copiados en ${CATALINA_BASE}/webapps/${WEBAPP_PENTAHO_STYLE_DIRNAME}.

- *.__pentaho_solutions__: son copiados en ${BISERVER_HOME}/${SOLUTIONS_DIRNAME}.

- *.__data__: son copiados en ${BISERVER_HOME}/${DATA_DIRNAME}.

- *.__plugin__: son copiados en ${BISERVER_HOME}/${SOLUTIONS_DIRNAME}/system/.

- Todos los demás: se autodetectará si tratarse como *.__root__ o *.__plugin__.

Adicionalmente estas capas pueden contener archivos ERB (plantillas de Ruby) que son evaluadas y convertidas a los archivos de destino, de esta forma se pueden aplicar modificaciones amplias en las configuraciones con facilidad.

Standalone

La imagen OCI cuenta con un modo de inicio que exporta LinceBI tras ejecutar las capas a un archivo ZIP con una estructura similar a las ediciones estándar de Pentaho BI Server, siendo compatible con GNU/Linux, Windows y macOS.

De esta forma pueden generarse automáticamente distribuciones de LinceBI preconfiguradas para entornos específicos, como por ejemplo con Single Sign-On mediante CAS, autenticación mediante LDAP o seguridad por JDBC, cambios que normalmente requieren modificaciones complejas en un Pentaho BI Server tradicional.

El siguiente comando de ejemplo exportaría un ZIP de LinceBI preconfigurado para almacenar los datos en PostgreSQL:

docker run --rm --log-driver none --attach STDOUT --attach STDERR \
 --env DEFAULT_ADMIN_PASSWORD='password' \
 --env STORAGE_TYPE='postgres' \
 --env POSTGRES_HOST='localhost' \
 --env POSTGRES_PORT='5432' \
 --env POSTGRES_JACKRABBIT_DATABASE='jackrabbit' \
 --env POSTGRES_HIBERNATE_DATABASE='hibernate' \
 --env POSTGRES_QUARTZ_DATABASE='quartz' \
 repo.stratebi.com/lincebi/lincebi:8.3 /usr/share/biserver/bin/export.sh \
> ./lincebi-8.3-postgres.zip