Este documento establece la Taxonomía Oficial de Servicios para Nebula ERP. Su cumplimiento es obligatorio para garantizar la mantenibilidad y evitar la creación de monolitos inmanejables o una fragmentación excesiva ("Nano-servicios").
"Un microservicio debe ser lo suficientemente pequeño para ser mantenido por un equipo de 2-3 personas, pero lo suficientemente grande para justificar su propio ciclo de vida y base de datos."
Evitamos microservicios gigantes como nebula-accounting. En su lugar, dividimos por Contexto Acotado (Bounded Context) Funcional, limitando la división a máximo 2-3 servicios por dominio.
Nebula ERP no se construye desde cero. Se basa en el Core Framework Simappe, compuesto por dos librerías base que TODOS los servicios deben implementar obligatoriamente:
- SimappeModel: Contiene los DTOs base, Enums de sistema y utilitarios de JSON.
- Regla: Todo DTO de Nebula debe heredar o componerse de tipos de
SimappeModel.
- SimappeCommons: Provee el chasis del microservicio (Seguridad, Tracing, Clientes HTTP Base, Manejo de Excepciones).
- Regla: Todo
@Service o @Controller de Nebula extiende funcionalidades de SimappeCommons.
Estas librerías son la base sobre la que se construye CADA microservicio de Nebula.
- Extiende:
SimappeModel
- Responsabilidad: Contener TODOS los contratos de datos (DTOs), Enums y Constantes de negocio.
- Contenido:
com.centrica.nebula.model.inventory.*
com.centrica.nebula.model.accounting.*
- Regla: NUNCA contener lógica de negocio ni entidades JPA. Solo POJOs.
- Depende de:
SimappeCommons (WebClient Base)
- Responsabilidad: Exponer interfaces de cliente (WebClient/Feign) para que los servicios hablen entre sí.
- Contenido:
InventoryWebClient: Interface para consultar stock.
AccountingWebClient: Interface para crear asientos.
- Regla: Elimina la duplicidad de clientes HTTP. Si necesitas consumir un servicio, inyectas su cliente desde
NebulaShared.
- Depende de:
SimappeCommons
- Responsabilidad: Lógica de negocio reutilizable y utilitarios transversales específicos de Nebula.
- Contenido:
- Calculadoras de impuestos estándar.
- Validadores de documentos de identidad.
- Utilitarios de formato de moneda y fechas.
- Regla: Si una lógica se usa en más de 2 servicios, debe promoverse a
NebulaCore.
Cada dominio de negocio tiene su propio esquema Oracle dedicado. Esta separación física garantiza:
- Aislamiento de datos por Bounded Context
- Control de acceso granular
- Facilidad de migración y respaldo por dominio
- Claridad en la organización de tablas
| Dominio |
Esquema Oracle |
Microservicios que lo usan |
Descripción |
| Maestros Transversal |
masters |
nebula-masters |
Países, ciudades, monedas, tipos documento, impuestos |
| Contabilidad |
accounting |
nebula-accounting-core, nebula-treasury |
Plan cuentas, asientos, terceros, conciliación |
| Inventario |
inventory |
nebula-product-catalog, nebula-inventory-ops |
Productos, existencias, kardex, bodegas |
| Facturación |
billing |
nebula-invoicing, nebula-electronic-billing |
Facturas, remisiones, cartera (CXC) |
| Compras |
procurement |
nebula-purchasing, nebula-fixed-assets |
Órdenes compra, activos fijos, CXP |
| Nómina |
payroll |
nebula-payroll-settlement |
Liquidación nómina, seguridad social |
| Recursos Humanos |
hr |
nebula-hr-core |
Expedientes empleados, capacitación |
| Presupuesto |
budget |
nebula-budget-core, nebula-budget-execution |
Apropiaciones, CDPs, RPs, ejecución presupuestal |
| Tributario |
tax |
nebula-tax-core, nebula-tax-collection |
Estatuto tributario, liquidación predial/ICA |
| Contratación |
contracts |
nebula-contracts-core, nebula-contracts-management |
PAA, procesos selección, contratistas |
| Almacenamiento |
storage |
nebula-file-storage |
Gestión documental, archivos adjuntos |
| Notificaciones |
notifications |
nebula-notifications |
Correos, SMS, push notifications |
-
Tablas de dominio exclusivo: Van al esquema correspondiente del dominio
- Ejemplo:
accounting.terceros, inventory.productos, payroll.liquidaciones
-
Tablas compartidas entre microservicios del mismo dominio: Van al esquema del dominio
- Ejemplo:
accounting.cuentas_contables (usado por nebula-accounting-core y nebula-treasury)
-
Tablas de configuración global: Van al esquema masters
- Ejemplo:
masters.paises, masters.monedas
-
NUNCA duplicar tablas entre esquemas: Si necesitas datos de otro dominio, usar WebClient/Feign
| Ambiente |
Usuario Oracle |
Password Sugerido |
Descripción |
| Desarrollo |
nebula_user_dev_01 |
Nebula@Dev2026 |
Usuario para todos los microservicios en dev |
| QA/Testing |
nebula_user_qa_01 |
Nebula@QA2026 |
Usuario para ambiente de pruebas |
| Producción |
nebula_user_prod_01 |
(Generar con Vault) |
Usuario para producción |
Infraestructura de negocio necesaria para todos los módulos.
| Servicio |
Contexto |
Responsabilidad Principal |
| nebula-masters |
Maestros Globales |
Países, Ciudades, Monedas, Tipos de Documento, Impuestos Base. |
| nebula-file-storage |
Gestión Documental |
Abstracción de S3/MinIO para carga y descarga de archivos adjuntos. |
| nebula-notifications |
Comunicaciones |
Orquestador de correos, SMS y notificaciones push (integrado con Simappe). |
| Microservicio |
Responsabilidad (Bounded Context) |
Dependencias Clave |
| nebula-product-catalog |
Fichas Maestras: Definición de productos, servicios, kits, listas de precios, categorías y atributos. |
nebula-masters |
| nebula-inventory-ops |
Operación Logística: Kardex, control de existencias, movimientos, bodegas, lotes y fechas de vencimiento. |
nebula-product-catalog |
| Microservicio |
Responsabilidad (Bounded Context) |
Dependencias Clave |
| nebula-accounting-core |
Libro Mayor: Plan de cuentas, asientos, terceros, cierres, impuestos y reportes financieros. |
nebula-masters |
| nebula-treasury |
Tesorería: Bancos, cajas, conciliación bancaria y flujo de efectivo. |
nebula-accounting-core |
| Microservicio |
Responsabilidad (Bounded Context) |
Dependencias Clave |
| nebula-invoicing |
Ciclo de Ventas: Cotizaciones, Pedidos, Facturas de Venta, Remisiones y Cartera (CXC). |
nebula-inventory-ops, nebula-accounting-core |
| nebula-electronic-billing |
Integración DIAN: Firmado digital, XML, comunicación con proveedor tecnológico o DIAN directo. |
nebula-invoicing |
| Microservicio |
Responsabilidad (Bounded Context) |
Dependencias Clave |
| nebula-purchasing |
Ciclo de Compras: Requisiciones, Órdenes de Compra, Recepción de Mercancía y Cuentas por Pagar (CXP). |
nebula-inventory-ops, nebula-accounting-core |
| nebula-fixed-assets |
Activos Fijos: Inventario de activos, proceso de depreciación, mantenimiento y bajas de activos. |
nebula-accounting-core, nebula-purchasing |
| Microservicio |
Responsabilidad (Bounded Context) |
Dependencias Clave |
| nebula-payroll-settlement |
Motor de Cálculo: Liquidación de nómina, seguridad social, parafiscales y prestaciones. |
nebula-hr-core, nebula-accounting-core |
| Microservicio |
Responsabilidad (Bounded Context) |
Dependencias Clave |
| nebula-hr-core |
Talento Humano: Gestión de expedientes de empleados, capacitación, evaluación y clima. |
nebula-masters |
Nota: Este dominio maneja presupuesto tanto público (CDP/RP) como privado (Centros de Costo).
| Microservicio |
Responsabilidad (Bounded Context) |
Dependencias Clave |
| nebula-budget-core |
Planeación: Clasificadores presupuestales, Apropiación Inicial y Adiciones/Traslados. |
nebula-masters |
| nebula-budget-execution |
Ejecución: CDPs, RPs, Obligaciones y Pagos (Pasiva); Recaudo (Activa). |
nebula-budget-core, nebula-accounting-core |
| Microservicio |
Responsabilidad (Bounded Context) |
Dependencias Clave |
| nebula-tax-core |
Normativa: Estatuto tributario, tarifas, zonas y periodos fiscales. |
nebula-masters |
| nebula-tax-collection |
Rentas: Liquidación, facturación masiva (Predial/ICA) y fiscalización. |
nebula-tax-core, nebula-accounting-core |
| Microservicio |
Responsabilidad (Bounded Context) |
Dependencias Clave |
| nebula-contracts-core |
Planeación: Plan Anual de Adquisiciones (PAA), Estudios Previos. |
nebula-budget-core |
| nebula-contracts-management |
Gestión: Procesos de selección, Contratistas, Actas, Novedades y Liquidación. |
nebula-contracts-core |
Importante: Los siguientes dominios son complementarios y no hacen parte del alcance del ERP.
| Microservicio |
Responsabilidad (Bounded Context) |
Dependencias Clave |
| nebula-crm-core |
Gestión Comercial: Leads, Prospectos, Contactos y Funnel de ventas. |
nebula-inventory-ops |
| nebula-crm-sales |
Fuerza de Ventas: Oportunidades, Actividades y Metas. |
nebula-crm-core |
| Microservicio |
Responsabilidad (Bounded Context) |
Dependencias Clave |
| nebula-pos |
Punto de Venta: Cajas, turnos, ventas rápidas offline-first. |
nebula-inventory-ops, nebula-invoicing |
| nebula-projects |
Proyectos: Gestión de recursos, cronogramas y rentabilidad. |
nebula-accounting-core |
| nebula-bi |
Inteligencia: Datamarts, ETLs y Dashboards dinámicos. |
Read-Only Replicas de Todos |
graph TD
%% Estilos
classDef simappe fill:#ff9,stroke:#333,stroke-width:3px;
classDef core fill:#f9f,stroke:#333,stroke-width:2px;
classDef domain fill:#bbf,stroke:#333,stroke-width:2px;
classDef shared fill:#dfd,stroke:#333,stroke-width:2px;
classDef proposed fill:#fff,stroke:#333,stroke-width:2px,stroke-dasharray: 5 5;
subgraph Simappe [SIMAPPE FRAMEWORK BASE]
SC[SimappeCommons]:::simappe
SM[SimappeModel]:::simappe
SC --> SM
end
subgraph Librerias [LIBRERÍAS CORE NEBULA]
NC[NebulaCore]:::shared
NM[NebulaModel]:::shared
NS[NebulaShared]:::shared
NM --> SM
NC --> SC
NS --> SC
end
subgraph Transversales [SERVICIOS TRANSVERSALES]
M[nebula-masters]:::core
FS[nebula-file-storage]:::core
NT[nebula-notifications]:::core
end
subgraph Inventario [DOMINIO INVENTARIO]
PC[nebula-product-catalog]:::domain
IO[nebula-inventory-ops]:::domain
PC --> M
IO --> PC
end
subgraph Contabilidad [DOMINIO CONTABILIDAD]
AC[nebula-accounting-core]:::domain
TR[nebula-treasury]:::domain
AC --> M
TR --> AC
end
subgraph Facturacion [DOMINIO FACTURACIÓN]
INV[nebula-invoicing]:::domain
EB[nebula-electronic-billing]:::domain
INV --> IO
INV --> AC
EB --> INV
end
subgraph Compras [DOMINIO COMPRAS Y ACTIVOS]
PUR[nebula-purchasing]:::domain
FA[nebula-fixed-assets]:::domain
PUR --> IO
PUR --> AC
FA --> PUR
FA --> AC
end
subgraph Nomina [DOMINIO NÓMINA]
PYS[nebula-payroll-settlement]:::domain
PYS --> AC
end
subgraph RRHH [DOMINIO RECURSOS HUMANOS]
HRC[nebula-hr-core]:::domain
PYS --> HRC
HRC --> M
end
subgraph Presupuesto [DOMINIO PRESUPUESTO]
BGC[nebula-budget-core]:::domain
BGE[nebula-budget-execution]:::domain
BGC --> M
BGE --> BGC
BGE --> AC
end
subgraph Tributario [DOMINIO TRIBUTARIO]
TXC[nebula-tax-core]:::domain
TXL[nebula-tax-collection]:::domain
TXC --> M
TXL --> TXC
TXL --> AC
end
subgraph Contratacion [DOMINIO CONTRATACIÓN]
CNC[nebula-contracts-core]:::domain
CNM[nebula-contracts-management]:::domain
CNC --> BGC
CNM --> CNC
end
subgraph Propuestos [MÓDULOS PROPUESTOS - FUERA DE ALCANCE]
CRM[nebula-crm-sales]:::proposed
POS[nebula-pos]:::proposed
BI[nebula-bi]:::proposed
CRM --> IO
POS --> INV
end
%% Todas dependen de las librerías Nebula que a su vez dependen de Simappe
Librerias -.-> Simappe
Transversales -.-> Librerias
Inventario -.-> Librerias
Contabilidad -.-> Librerias
Facturacion -.-> Librerias
Compras -.-> Librerias
Nomina -.-> Librerias
RRHH -.-> Librerias
Presupuesto -.-> Librerias
Tributario -.-> Librerias
Contratacion -.-> Librerias
Propuestos -.-> Librerias
Documento Maestro de Arquitectura de Servicios - v1.0
| Version |
Fecha |
Autor |
Descripcion |
| 1.1.0 |
2026-03-04 |
Carlos Torres |
Revision, sanitizacion y publicacion en Wiki Arquitectura Centrica. |
| 1.0.0 |
2026-02-02 |
Carlos Torres |
Creacion del documento. |