Explica cómo identificar y priorizar objetivos, funcionalidad crítica, atributos de calidad, restricciones y riesgos que justifican decisiones arquitectónicas.
Última actualización
Actualizada
Nivel
Fundamentos
Los drivers arquitectónicos son las fuerzas concretas que justifican una decisión estructural. Sin drivers priorizados, la arquitectura se convierte en una colección de gustos técnicos imposibles de evaluar.
Antes de elegir módulos, bases de datos, estilos de integración o topologías de despliegue, necesitas comprender qué debe proteger el sistema y bajo qué restricciones debe hacerlo.
Los drivers arquitectónicos conectan el problema con la estructura:
Texto
objetivos de negocio
+ comportamiento crítico
+ atributos de calidad
+ restricciones
+ riesgos
↓
alternativas arquitectónicas
↓
trade-offs y decisión
↓
evidencia de que funciona
Un driver no es una palabra como “escalabilidad” ni una preferencia como “usar microservicios”. Debe expresar una necesidad significativa, su contexto y el impacto de no cumplirla.
Explican qué resultado pretende alcanzar o proteger la organización.
Ejemplos:
Reducir el tiempo necesario para abrir una nueva sucursal.
Vender el producto como SaaS a negocios independientes.
Cumplir una regulación de residencia de datos.
Reducir el costo de soporte por incidentes repetitivos.
Lanzar una primera versión con un equipo pequeño.
El objetivo por sí solo no determina la arquitectura, pero da sentido a las prioridades. “Entrar en tres países” puede implicar idiomas, monedas, latencia regional, impuestos y residencia de datos; cada una necesita análisis adicional.
No toda funcionalidad afecta la estructura global. Una feature se vuelve arquitectónicamente significativa cuando introduce alguno de estos factores:
Concurrencia e invariantes importantes.
Alto volumen o carga desigual.
Integraciones externas.
Seguridad o regulación.
Procesamiento prolongado o asíncrono.
Necesidad de auditoría.
Dependencias entre varias capacidades.
En DomiSys, cambiar el color de una tarjeta no es arquitectónicamente significativo. Reservar inventario durante pedidos simultáneos sí lo es porque exige definir ownership, consistencia, transacciones y comportamiento ante fallos.
Describen cómo debe comportarse el sistema, no qué función completa.
Algunos ejemplos:
Disponibilidad.
Rendimiento.
Seguridad.
Modificabilidad.
Observabilidad.
Testabilidad.
Resiliencia.
Interoperabilidad.
No deben permanecer como etiquetas. “Debe ser rápido” no permite diseñar ni validar nada. Un atributo útil se convierte en escenario medible, como se desarrolla en la siguiente nota.
Durante campañas de fin de semana,
el catálogo debe soportar 800 lecturas por segundo
con p95 menor a 300 ms,
mientras la escritura de pedidos permanece por debajo de 80 solicitudes por segundo.
Esta versión sugiere alternativas concretas: caching para catálogo, índices adecuados, pools dimensionados y aislamiento de recursos. No obliga automáticamente a distribuir toda la aplicación.
Pregunta qué valor se espera y qué fracaso sería inaceptable.
No basta con “crear una plataforma de pedidos”. Debes conocer si la prioridad es evitar pedidos perdidos, controlar inventario, reducir atención por WhatsApp o habilitar múltiples negocios.
No todos los drivers pueden recibir prioridad máxima. Utiliza criterios como:
Impacto del incumplimiento.
Probabilidad de ocurrencia.
Costo de corregir tarde.
Diferenciación para el producto.
Irreversibilidad de la decisión.
Incertidumbre actual.
Una matriz sencilla puede separar:
Texto
alta importancia + alta incertidumbre
→ investigar primero
alta importancia + baja incertidumbre
→ diseñar y verificar
baja importancia + alta complejidad
→ evitar sobrearquitectura
Una reserva de inventario puede preferir rechazar temporalmente una operación antes que confirmar stock inexistente. Un catálogo público puede servir datos ligeramente antiguos para permanecer disponible.
Un monolito modular puede acelerar entrega con un equipo pequeño. Microservicios podrían aportar independencia futura, pero exigen pipelines, observabilidad, contratos y soporte que retrasan el lanzamiento.
Autenticación adicional, separación de funciones y auditoría aumentan control, pero también pasos y costo de implementación. El nivel adecuado depende del activo y la amenaza.
El equipo no tiene una plataforma dedicada ni on-call para decenas de servicios. Esto favorece menos unidades de despliegue y observabilidad centralizada.
alternativa A: microservicios desde el inicio
+ independencia potencial
- alta carga operativa
- contratos prematuros
- consistencia distribuida
alternativa B: monolito sin límites
+ implementación inicial rápida
- ownership difuso
- extracción futura difícil
alternativa C: monolito modular
+ transacciones locales
+ menor operación
+ límites explícitos
- despliegue conjunto
- necesita enforcement interno
La alternativa C puede ser la mejor hipótesis inicial. No porque el monolito sea universalmente superior, sino porque se ajusta mejor a los drivers actuales.
“Necesitamos Kafka” no es un driver. Investiga si el problema es fan-out, desacoplamiento temporal, replay o throughput. Quizá una outbox y una cola sencilla sean suficientes.
Si disponibilidad, consistencia, costo, velocidad y flexibilidad son prioridad máxima, no existe guía para decidir. Explicita qué cede cuando entran en conflicto.
Producto puede priorizar velocidad; operaciones, estabilidad; legal, cumplimiento. La arquitectura no resuelve el conflicto en secreto. Debe hacerlo visible y requerir una decisión de negocio.
Atributos de calidad profundiza en las propiedades que convierten los objetivos en comportamiento observable y que generan los principales trade-offs arquitectónicos.