Componentes
Externos
ELK
Elasticsearch
Componente que forma parte del stack de ELK, sirve para almacenar logs generados por los componentes Spring, Gateway y .NET Core.
- Formato: imagen docker
- Despliegue:
servidor de administración - Ubicación docker compose:
/opt/viridian/elk/docker-compose.yml - Imagen docker base:
docker.elastic.co/elasticsearch/elasticsearch:8.17.4 - Puertos expuestos: 9200
APM
Componente que forma parte del stack de ELK, sirve para monitorear el rendimiento de los componentes Gateway y .NET Core, estos envían información sobre los endpoints consumidos, uso de cpu y uso de memoria ram. EL APM centraliza todas esta información y se la puede explorar mediante el componente Kibana.
- Formato: imagen docker
- Despliegue:
servidor de administración - Ubicación docker compose:
/opt/viridian/elk/docker-compose.yml - Imagen docker base:
docker.elastic.co/apm/apm-server:8.17.4 - Puertos expuestos: 8300
Kibana
Componente que forma parte del stack de ELK, sirve como visualizador de la información del componente APM y de los logs almacenados por el componente elasticsearch.
Se puede acceder mediante el proxy desplegado en el servidor de administración y las credenciales de acceso son generadas de forma aleatoria durante el proceso de instalación, en el punto: Configuración de ELK, los valores están disponibles en el archivo defaults/local_vars.yml en el directorio ansible del servidor de administración:
Ejemplo:
elastic:
username: elastic
password: brdR1ByJbYHrx5uLg2Bm

- Formato: imagen docker
- Despliegue:
servidor de administración - Ubicación docker compose:
/opt/viridian/elk/docker-compose.yml - Imagen docker base:
docker.elastic.co/kibana/kibana:8.17.4 - Puertos expuestos: ninguno
Vault
Componente usado para el almacenamiento de configuración confidencial, usuarios, passwords, api keys, etc, y para procesos de encriptación de datos, passwords, preguntas de seguridad y códigos de autorización.
Este componente se despliega en modo cluster donde el servidor de administración y todos los servidores de aplicaciones son nodos. La cantidad mínima de nodos para formar un cluster es de tres, con esto tenemos una Alta Disponibilidad, con esta configuración se puede tolerar la falla de uno de los nodos y aun mantener el quorum necesario para que el cluster siga operativo.

- Formato: imagen docker
- Despliegue:
servidor de administraciónyservidores de aplicaciones - Ubicación docker compose:
/opt/viridian/vault/docker-compose.yml - Imagen docker base:
hashicorp/vault:1.19.1 - Puertos expuestos: 8200,8201
Unseal keys y key threshold
Los unseal keys son un conjunto de llaves utilizadas para desellar vault después de que se haya iniciado o reiniciado. Vault emplea un método de seguridad llamado "Shamir's Secret Sharing" para dividir la llave maestra de desencriptación en varias partes (unseal keys), de este conjunto de llaves, se necesita un numero mínimo para hacer el desellado de vault (key threshold), ambos valores son definidos durante el proceso de instalación, en el punto: Configuración de Vault.
Los unseal keys generados se encuentran disponibles en el archivo defaults/vault_init.yml en el directorio ansible del servidor de administración.
Ejemplo:
unseal_keys:
- dd00094696d0043a1a5f61eddb0608fa329a09f5bc763ecfcc4bb45b8cd5898eb0
- 57b91ad8aa89b3f8d67af2587277afbaba56ec38651e3536b6090cca6be2338143
- 857b37dea42dde986693211f6b1cc7ac3433b599514cbf15f7e0e688aadaf15e1c
- f2ffb9c915796d58866b185d8372a36b106b25fb39d057cd866e07734d2a5714f2
- 1ddaceaed68989446127e0fcc723d0e15d479f684df8f5cbc96a480eafc0bd4cca
Durante el proceso de instalación, el archivo defaults/vault_init.yml existe en el directorio ansible del servidor de administración. Sin embargo según la recomendación del punto: Configuración de Vault:
Estos archivos y/o su contenido deben ser copiados fuera del servidor, puestos bajo resguardo según políticas del banco y luego eliminados del servidor.
El archivo ya no debería existir en el servidor de administración por lo tanto el banco es el custodio de los unseal keys.
Token root
El token root es un token para acceder a vault cuando ya esta desellado, este token tiene permisos para hacer cualquier operación dentro de vault, crear, editar, eliminar, etc. Su valor es generado durante el proceso de instalación, en el punto: Configuración de Vault.
El token root generado se encuentra disponible en el archivo defaults/vault_init.yml en el directorio ansible del servidor de administración.
Ejemplo:
root_token: hvs.xr1QX3v6X9r4eAJoRZElh1Of
Durante el proceso de instalación, el archivo defaults/vault_init.yml existe en el directorio ansible del servidor de administración. Sin embargo según la recomendación del punto: Configuración de Vault:
Estos archivos y/o su contenido deben ser copiados fuera del servidor, puestos bajo resguardo según políticas del banco y luego eliminados del servidor.
El archivo ya no debería existir en el servidor de administración por lo tanto el banco es el custodio del token root.
Token microservicio
El token microservicio es un token que permite leer la configuración almacenada en vault, es usado por los componentes .NET Core cuando solicitan la configuración al server-config. Su valor es generado durante el proceso de instalación, en el punto: Configuración de Vault.
El token microservicio generado se encuentra disponible en el archivo defaults/vault_tokens.yml en el directorio ansible del servidor de administración.
Ejemplo:
microservice_token: hvs.CAESIEKxB56_fYokc3nrKgc3UA2drGz4a2KrzfVofQ2OUKmyGh4KHGh2cy5nWUp1OEV5SmN3eUxueTFzNG1EWGI0dEs
Durante el proceso de instalación, el archivo defaults/vault_tokens.yml existe en el directorio ansible del servidor de administración. Sin embargo según la recomendación del punto: Configuración de Vault:
Estos archivos y/o su contenido deben ser copiados fuera del servidor, puestos bajo resguardo según políticas del banco y luego eliminados del servidor.
El archivo ya no debería existir en el servidor de administración por lo tanto el banco es el custodio del token microservicio.
Token transit
El token transit es un token que permite acceder a proceso de encriptación/desencriptación en vault, es usado por los componentes .NET Core que requieran encriptar/desencriptar data. Su valor es generado durante el proceso de instalación, en el punto: Configuración de Vault.
El token transit generado se encuentra disponible en el archivo defaults/vault_tokens.yml en el directorio ansible del servidor de administración.
Ejemplo:
transit_token: hvs.CAESIJHsOO_tzKdATkU5OXFUdJVmfv4ERl-uR-deww4_ZeRcGh4KHGh2cy5MMzJHQUtBNndwUTd3WkszMXp4RmxxMHc
Durante el proceso de instalación, el archivo defaults/vault_tokens.yml existe en el directorio ansible del servidor de administración. Sin embargo según la recomendación del punto: Configuración de Vault:
Estos archivos y/o su contenido deben ser copiados fuera del servidor, puestos bajo resguardo según políticas del banco y luego eliminados del servidor.
El archivo ya no debería existir en el servidor de administración por lo tanto el banco es el custodio del token transit.
Token admin
El token admin es un token para administrar vault, es un reemplazo del Token root ya que este solo debe usarse para casos de emergencia o para renovar los tokens. Su valor es generado durante el proceso de instalación, en el punto: Configuración de Vault.
El token admin generado se encuentra disponible en el archivo defaults/vault_tokens.yml en el directorio ansible del servidor de administración.
Ejemplo:
admin_token: hvs.CAESIB_KdD7HBonsarfg9olCma_f_wIw8__5_dxszitwsGa0Gh4KHGh2cy5jb08wdjVSdzF1SUt5TUxXcHdITUxlOVI
Durante el proceso de instalación, el archivo defaults/vault_tokens.yml existe en el directorio ansible del servidor de administración. Sin embargo según la recomendación del punto: Configuración de Vault:
Estos archivos y/o su contenido deben ser copiados fuera del servidor, puestos bajo resguardo según políticas del banco y luego eliminados del servidor.
El archivo ya no debería existir en el servidor de administración por lo tanto el banco es el custodio del token admin.
Kafka
Componente usado como message broker entre los componentes .NET Core, usando al patrón producer/consumer, donde un componente produce un mensaje y otro componente consume el mensaje para procesarlo.
Este componente se despliega en modo cluster donde el servidor de administración y todos los servidores de aplicaciones son nodos, cada uno cuenta con un kafka-controller y un kafka-broker. La cantidad mínima de nodos para formar un cluster es de tres, con esto tenemos una Alta Disponibilidad, con esta configuración se puede tolerar la falla de uno de los nodos y aun mantener el quorum necesario para que el cluster siga operativo.
Kafka Controller
Componente kafka con el rol de controller que se encarga de organizar la gestión de brokers, topics, particiones y réplicas dentro del cluster.
- Formato: imagen docker
- Despliegue:
servidor de administraciónyservidores de aplicaciones - Ubicación docker compose:
/opt/viridian/kafka-controller/docker-compose.yml - Imagen docker base:
confluentinc/cp-kafka:7.9.0 - Puertos expuestos: 9093
Kafka Broker
Componente kafka con el rol de broker que se encarga recibir datos de los producers, almacenarlos y luego entregarlos a los consumers. Cada broker maneja una parte de los datos, y los datos están replicados en varios brokers para asegurar la disponibilidad y durabilidad. Los brokers colaboran entre sí para equilibrar la carga y gestionar los datos de manera eficiente.
- Formato: imagen docker
- Despliegue:
servidor de administraciónyservidores de aplicaciones - Ubicación docker compose:
/opt/viridian/kafka-controller/docker-compose.yml - Imagen docker base:
confluentinc/cp-kafka:7.9.0 - Puertos expuestos: 9092,9992
Kafka UI
Componente para visualizar la información de los brokers, topics y consumers del cluster kafka.
Se puede acceder mediante el proxy desplegado en el servidor de administración y las credenciales de acceso son generadas de forma aleatoria durante el proceso de instalación, en el punto: Configuración de Kafka, los valores están disponibles en el archivo defaults/local_vars.yml en el directorio ansible del servidor de administración:
Ejemplo:
kafka:
username: kafka
password: 6JGEyMlXzK3x4OCN2OVi

- Formato: imagen docker
- Despliegue:
servidor de administración - Ubicación docker compose:
/opt/viridian/kafka-ui/docker-compose.yml - Imagen docker base:
ghcr.io/kafbat/kafka-ui:v1.2.0 - Puertos expuestos: ninguno
Proxy
En el servidor de administración
Componente usado como reverse proxy para dar acceso a servicios expuestos en el mismo servidor de administración.
Cuando se despliega este componente, se configuran por defecto los siguientes sitios disponibles:
- Stage
- Preproducción
- Producción
| sitio | descripción | reverse proxy | restricciones |
|---|---|---|---|
| https://sc-becla-nbdd-10.baneco.com.bo/elk | ELK | kib-01 | ninguna |
| https://sc-becla-nbdd-10.baneco.com.bo/kafka | Kafka UI | kafka-ui | ninguna |
| https://sc-becla-nbdd-10.baneco.com.bo/ansible | Ansible UI | ansible-ui | ninguna |
| sitio | descripción | reverse proxy | restricciones |
|---|---|---|---|
| https://sc-becla-nbdc-10.baneco.com.bo/elk | ELK | kib-01 | ninguna |
| https://sc-becla-nbdc-10.baneco.com.bo/kafka | Kafka UI | kafka-ui | ninguna |
| https://sc-becla-nbdc-10.baneco.com.bo/ansible | Ansible UI | ansible-ui | ninguna |
| sitio | descripción | reverse proxy | restricciones |
|---|---|---|---|
| https://sc-becla-nbdp-10.baneco.com.bo/elk | ELK | kib-01 | ninguna |
| https://sc-becla-nbdp-10.baneco.com.bo/kafka | Kafka UI | kafka-ui | ninguna |
| https://sc-becla-nbdp-10.baneco.com.bo/ansible | Ansible UI | ansible-ui | ninguna |
- Formato: imagen docker
- Despliegue:
servidor de administración - Ubicación docker compose:
/opt/viridian/proxy/docker-compose.yml - Imagen docker base:
nginx:1.27.4-alpine - Puertos expuestos: 443
En los servidores web
Componente usado como reverse proxy y balanceador de carga para los servicios expuestos en todos los servidores de aplicaciones.
Cuando se despliega este componente, se configuran por defecto los siguientes sitios disponibles:
- Stage
- Preproducción
- Producción
| sitio | descripción | reverse proxy | restricciones |
|---|---|---|---|
| https://benetdesa.baneco.com.bo | Banca web | frontend-vdb | ninguna |
| https://benetdesa.baneco.com.bo/app | Backend para la banca web | gateway-public | ninguna |
| https://managerdesa.baneco.com.bo | VIRIDIAN Manager | frontend-admin | allow 10.0.0.0/8; allow 172.16.0.0/12; allow 192.168.0.0/16; deny all; |
| https://managerdesa.baneco.com.bo/app | Backend para VIRIDIAN Manager | gateway-internal | allow 10.0.0.0/8; allow 172.16.0.0/12; allow 192.168.0.0/16; deny all; |
| https://kioscodesa.baneco.com.bo | Aplicación kiosco | frontend-kiosk | ninguna |
| https://kioscodesa.baneco.com.bo/app | Backend para Aplicación kiosco | gateway-public | ninguna |
| sitio | descripción | reverse proxy | restricciones |
|---|---|---|---|
| https://benetcerti.baneco.com.bo | Banca web | frontend-vdb | ninguna |
| https://benetcerti.baneco.com.bo/app | Backend para la banca web | gateway-public | ninguna |
| https://benetcerti.baneco.com.bo | Banca web (para EH) | frontend-vdb | ninguna |
| https://benetcerti.baneco.com.bo/app | Backend para la banca web (para EH) | gateway-public | ninguna |
| https://managercerti.baneco.com.bo | VIRIDIAN Manager | frontend-admin | allow 10.0.0.0/8; allow 172.16.0.0/12; allow 192.168.0.0/16; deny all; |
| https://managercerti.baneco.com.bo/app | Backend para VIRIDIAN Manager | gateway-internal | allow 10.0.0.0/8; allow 172.16.0.0/12; allow 192.168.0.0/16; deny all; |
| https://kioskcerti.baneco.com.bo | Aplicación kiosco | frontend-kiosk | ninguna |
| https://kioskcerti.baneco.com.bo/app | Backend para Aplicación kiosco | gateway-public | ninguna |
| sitio | descripción | reverse proxy | restricciones |
|---|---|---|---|
| https://benet.baneco.com.bo | Banca web | frontend-vdb | ninguna |
| https://benet.baneco.com.bo/app | Backend para la banca web | gateway-public | ninguna |
| https://benet.baneco.com.bo | Banca web (para EH) | frontend-vdb | ninguna |
| https://benet.baneco.com.bo/app | Backend para la banca web (para EH) | gateway-public | ninguna |
| https://manager.baneco.com.bo | VIRIDIAN Manager | frontend-admin | allow 10.0.0.0/8; allow 172.16.0.0/12; allow 192.168.0.0/16; deny all; |
| https://manager.baneco.com.bo/app | Backend para VIRIDIAN Manager | gateway-internal | allow 10.0.0.0/8; allow 172.16.0.0/12; allow 192.168.0.0/16; deny all; |
| https://kiosco.baneco.com.bo | Aplicación kiosco | frontend-kiosk | ninguna |
| https://kiosco.baneco.com.bo/app | Backend para Aplicación kiosco | gateway-public | ninguna |
- Formato: imagen docker
- Despliegue:
servidores web - Ubicación docker compose:
/opt/viridian/proxy/docker-compose.yml - Imagen docker base:
nginx:1.27.4-alpine - Puertos expuestos: 443
Ansible
Ansible es un componente utilizado para la automatización de tareas relacionadas con la gestión de configuraciones, aprovisionamiento y despliegue de componentes.
Ansible UI
Componente para ejecutar comandos ansible a través de una interfaz gráfica, incluye:
- Conexión al Active Directory del banco para usar los usuarios ya existentes.
- Control de acceso de usuarios basado en roles.
- Guardado de logs de tareas ejecutadas.
Se puede acceder mediante el proxy desplegado en el servidor de administración y las credenciales de acceso son generadas de forma aleatoria durante el proceso de instalación, los valores están disponibles en el archivo defaults/local_vars.yml en el directorio ansible del servidor de administración:
Ejemplo:
ansible:
username: admin
password: admin

- Formato: imagen docker
- Despliegue:
servidor de administración - Ubicación docker compose:
/opt/viridian/ansible/docker-compose.yml - Imagen docker base:
semaphoreui/semaphore:v2.14.1 - Puertos expuestos: ninguno
Ansible Database
Componentes para almacenar la información generada por Ansible UI.
- Formato: imagen docker
- Despliegue:
servidor de administración - Ubicación docker compose:
/opt/viridian/ansible/docker-compose.yml - Imagen docker base:
mysql:8.0 - Puertos expuestos: ninguno
Configuración
viridian-config-properties
Componente que contiene propiedades de configuración para todos los productos.
- Formato: archivo yml
- Despliegue: primero en
servidor de administracióny desde ahi se copia el archivo hacia losservidores de aplicaciones - Ubicación: en el servidor de administración en
/opt/viridian/configy se copia a losservidores de aplicacionesen/opt/viridian/config/application.yml
Rutas
vdb-routes-public
Componente que contiene todos los endpoints del producto VDB, que son expuestos para ser consumidos de manera publica desde el componente gateway-public.
- Formato: archivo json
- Despliegue:
servidores de aplicaciones - Ubicación:
/opt/viridian/routes/public
vdb-routes-internal
Componente que contiene todos los endpoints del producto VDB, que son expuestos para ser consumidos de manera interna desde el componente gateway-internal.
- Formato: archivo json
- Despliegue:
servidores de aplicaciones - Ubicación:
/opt/viridian/routes/internal
vdb-routes-bank
Componente que contiene todos los endpoints del producto VDB, que son expuestos por el servicio del banco para ser consumidos de manera interna desde el componente bank-gateway.
- Formato: archivo json
- Despliegue:
servidores de aplicaciones - Ubicación:
/opt/viridian/routes/bank
Gateway
gateway-public
Componente API Gateway que usa la librería Ocelot, su función es ser el único punto de consumo de cualquier endpoint publico expuesto para los componentes frontend: angular o flutter.
Usa todos los componentes routes-public disponibles para leer desde ahi los endpoints a exponer.
- Formato: imagen docker
- Despliegue:
servidores de aplicaciones - Ubicación docker compose:
/opt/viridian/gateway/docker-compose.yml - Imagen docker base:
viridian-netcore:8.0.0-base-debian - Puertos expuestos: 7002
gateway-internal
Componente API Gateway que usa la librería Ocelot, su función es ser el único punto de consumo de cualquier endpoint interno expuesto para el banco.
Usa todos los componentes routes-internal disponibles para leer desde ahi los endpoints a exponer.
- Formato: imagen docker
- Despliegue:
servidores de aplicaciones - Ubicación docker compose:
/opt/viridian/gateway/docker-compose.yml - Imagen docker base:
viridian-netcore:8.0.0-base-debian - Puertos expuestos: 7004
Spring
server-config
Component java que usa la librería Spring Cloud Config, su función es centralizar la configuración para los componentes Gateway y .NET Core, estos componentes al momento de bootear, se comunican con el server-config para pedir la configuración, el server-config entonces lee la configuración disponible en el componente vault y los componentes config, internamente realiza un merge de toda la configuración leída y la devuelve al solicitante.
Al ser un componente que tiene acceso a toda la configuración disponible, requiere que los componentes que soliciten obtener configuración, envien la siguiente información:
-
Token microservicio para acceder a vault: Este valor es obtenido durante el proceso de instalación, en el punto: Configuración de Vault.
-
Usuario de autenticación: Este valor es generado de manera aleatoria durante el proceso de instalación, en el punto: Variable locales.
-
Password de autenticación: Este valor es generado de manera aleatoria durante el proceso de instalación, en el punto: Variables locales.
- Formato: imagen docker
- Despliegue:
servidores de aplicaciones - Ubicación docker compose:
/opt/viridian/spring/docker-compose.yml - Imagen docker base:
viridian-java:8.0.4-base - Puertos expuestos: ninguno
server-eureka
Component java que usa la librería Spring Cloud Netflix, actúa como service registration y service discovery para los componentes Gateway y .NET Core, estos componentes al momento de bootear, se registran en server-eureka (service registration) y cuando un componente necesita consumir un endpoint de otro componente, se consulta a server-eureka (service discovery) para obtener información de las instancias disponibles del componente destino.
- Formato: imagen docker
- Despliegue:
servidores de aplicaciones - Ubicación docker compose:
/opt/viridian/spring/docker-compose.yml - Imagen docker base:
viridian-java:8.0.4-base - Puertos expuestos: ninguno
Backend
Todos los componentes del backend funcionan con el framework .NET Core 8.
bank-service
Component que simula ser el servicio del banco, esto para registrarse en el server-eureka, de manera que el componente bank-gateway pueda hacer el service discovery y obtener el host/puerto a usar.
bank-gateway
Componente API Gateway que usa la librería Ocelot, su función es ser el único punto de consumo de cualquier endpoint expuesto por el servicio del banco.
Usa todos los componentes routes-bank, lee desde ahi los endpoints disponibles para ser consumidos.
batchpayments-api
Componente con endpoints relacionados a pago de lotes.
batchpayments-hosted
Componente que procesa tareas asíncronas relacionadas a pago de lotes.
beneficiaries-api
Componente con endpoints relacionados a beneficiarios.
digitalcredit-api
Componente con endpoints relacionados a créditos digitales.
digitalpay-qr
Componente con endpoints relacionados a cobros/pagos QR.
guaranteebond-api
Componente con endpoints relacionados a fianzas bancarias.
manager-api
Componente con endpoints relacionados con la administración de usuarios, administración de clientes, administración de cuentas, marketing y temas relacionados a seguridad.
manager-hosted
Componente que procesa tareas asíncronas relacionadas a la actualización de cuentas, actualización del daily limit de los usuarios.
myfinances-api
Componente con endpoints relacionados a mis finanzas.
notifications-hosted
Componente con endpoints y procesamiento de tareas asíncronas relacionadas a notificaciones de marketing y notificaciones push.
onboarding-api
Componente con endpoints relacionados a procesos de onboarding.
servicepayments-api
Componente con endpoints relacionados a pago de servicios.
statements-api
Componente con endpoints relacionados a la generación de extractos.
trade-api
Componente con endpoints relacionados a transferencias internacionales.
transactions-api
Componente con endpoints relacionados a transferencias, pago de tarjetas, pago de prestamos y operaciones con tarjetas.
transactions-hosted
Componente que procesa tareas asíncronas relacionadas a transacciones/operaciones.
utilities-api
Componente con endpoints utilitarios generales.
wiretransfer-api
Componente con endpoints relacionados a remesas.
insurance-agents
Componente con endpoints relacionados a configuración de agentes de seguros.
insurance-sales
Componente con endpoints relacionados a venta de seguros.
assistant-requests
Componente con endpoints relacionados a asistencia de tarjetas.
Frontend
Todos los componentes del frontend funcionan con el framework Angular.
frontend-admin
Aplicación Viridian MANAGER.
frontend-kiosk
Aplicación de kioscos de autoservicio.
frontend-vdb
Aplicación de banca digital web.