Ingeniería de IbisQuest
Arquitectura, decisiones y prácticas que sostienen una plataforma de OKRs preparada para evolucionar.
Detalles de ingeniería
La arquitectura de IbisQuest busca mantener límites claros, una operación sencilla y una base preparada para evolucionar. Estos son los criterios técnicos y las decisiones que sostienen el producto.
Resumen técnico
Arquitectura
Límites claros para evolucionar
El sistema combina módulos independientes, organización por funcionalidad y separación de lecturas y escrituras para mantener el crecimiento bajo control.
Producto SaaS
Organizaciones con límites propios
El producto contempla organizaciones, equipos, colaboradores, roles y permisos dentro de un workspace multitenant.
Calidad
Decisiones verificables
La calidad se valida en distintos niveles: límites arquitectónicos, colaboración entre componentes y comportamiento aislado.
Arquitectura y límites
Interfaz y API
Blazor, ASP.NET Core y REST APIs exponen la experiencia y los contratos de entrada del producto.
Casos de uso por funcionalidad
La organización por feature slices mantiene cada flujo cerca de sus reglas y colaboradores.
Dominio y reglas de negocio
Los límites del dominio concentran las reglas que permiten configurar, alinear y seguir objetivos.
Persistencia e integraciones
Entity Framework, Azure SQL, Microsoft Entra y Azure Communication Services soportan datos, identidad e invitaciones.
Decisiones y tradeoffs
| Decisión | Motivo | Beneficio | Tradeoff y revisión |
|---|---|---|---|
| Monolito modular | Mantener una operación sencilla mientras crece el producto. | Despliegue y colaboración entre módulos con menor complejidad operativa. | Menor independencia que microservicios; revisar si los módulos requieren escalar o desplegarse de forma independiente. |
| CQRS | Separar las necesidades de lectura y escritura por caso de uso. | Flujos más explícitos y modelos ajustados a cada operación. | Más código y posibles duplicaciones; revisar si la complejidad supera el beneficio. |
| Multitenancy | Soportar varias organizaciones dentro del producto. | Modelo SaaS con límites organizacionales centralizados. | Mayor complejidad de autorización y aislamiento; revisar controles si cambia el modelo de confianza. |
| Mensajería síncrona | Mantener explícita la colaboración entre módulos. | Flujos fáciles de seguir dentro del monolito. | Acoplamiento temporal; revisar si aparecen procesos largos o necesidades de resiliencia asíncrona. |
| REST APIs | Separar clientes y servicios mediante contratos conocidos. | Interoperabilidad y evolución independiente de la interfaz. | Necesidad de mantener contratos; revisar versionado si crecen los consumidores. |
| Entity Framework y persistencia relacional | Organizar el acceso a datos y mantener consistencia transaccional. | Productividad y modelo relacional adecuado para los flujos actuales. | Acoplamiento al modelo relacional; revisar si cambian las necesidades de volumen o consulta. |
Stack tecnológico
Aplicación
Experiencia y servicios
La aplicación utiliza .NET, ASP.NET Core, Blazor y REST APIs para organizar la experiencia y los casos de uso.
Datos
Persistencia organizada
Entity Framework junto con Unit of Work y Repository organizan el acceso a SQL Server y Azure SQL.
Cloud e integración
Servicios preparados para un producto real
La identidad y el acceso se gestionan con Microsoft Entra y las invitaciones por correo con Azure Communication Services.
Seguridad conceptual y calidad
Identidad y multitenancy
La identidad se gestiona con Microsoft Entra. Las organizaciones, roles y permisos forman parte del modelo conceptual de acceso al workspace, manteniendo el aislamiento entre contextos organizacionales.
Pruebas por nivel
Architecture Testing valida límites, Integration Testing valida colaboración entre componentes y Unit Testing valida comportamientos aislados.
Forma de trabajo
Principios de implementación
SOLID y Clean Code guían la implementación. La mensajería síncrona entre módulos mantiene explícita la colaboración dentro del monolito.
Herramientas de asistencia
Codex y GitHub Copilot aceleran la exploración, documentación y tareas repetitivas, mientras las decisiones y la validación final permanecen bajo responsabilidad humana.
¿Quieres volver a la narrativa del producto?