Integra drivers, cualidades, límites, estilos, datos, comunicación, resiliencia, seguridad, equipos y evolución en un modelo completo de arquitectura de software.
Última actualización
Actualizada
Nivel
Profundización
La arquitectura de software es un proceso continuo de reducción de riesgo. Conecta objetivos, restricciones, atributos de calidad, límites, datos, comunicación, operación, equipos y evolución mediante decisiones que deben poder explicarse y verificarse.
Después de estudiar patrones, datos, resiliencia y migraciones, el riesgo es tratar cada tema como una herramienta independiente.
El modelo mental integrador es:
Texto
contexto y objetivos
→ drivers y restricciones
→ escenarios de calidad
→ dominio e invariantes
→ boundaries y ownership
→ comunicación y datos
→ tácticas y topología
→ decisiones y trade-offs
→ implementación y gobierno
→ evidencia operacional
→ aprendizaje y evolución
La arquitectura no comienza preguntando “¿qué patrón usamos?”. Comienza preguntando qué problema existe, qué cualidades importan y qué decisiones serán costosas si están equivocadas.
problema:
negocios controlan inventario y pedidos mediante herramientas desconectadas
resultado:
operar ventas, pedidos e inventario con información confiable por negocio y sucursal
La arquitectura debe proteger ese resultado, no demostrar sofisticación técnica.
Durante hora pico,
cuando dos cajeros intentan vender la última unidad,
solo una venta debe reservarla,
ningún stock puede quedar negativo
y las respuestas deben completarse en menos de 500 ms para p95.
El escenario conecta:
Integridad.
Concurrencia.
Rendimiento.
Observabilidad.
Ahora es posible discutir transacción, constraint, aislamiento y pruebas.
Inventario posee:
- stock disponible
- reservas
- movimientos
- reglas de recepción y ajuste
Ventas solicita una reserva;
no modifica la tabla de stock directamente.
Las invariantes ayudan a elegir boundaries. Si dos partes necesitan una transacción constante, separarlas mediante red puede aumentar riesgo sin beneficio.
Sales
→ posee venta, total, pago asociado y devolución
Inventory
→ posee stock, reservas y movimientos
Orders
→ posee ciclo del pedido y fulfillment
Ownership significa autoridad de escritura y evolución. Otros módulos pueden consultar mediante contratos o proyecciones, pero no compartir reglas implícitas.
venta confirmada + movimiento de inventario
→ transacción local cuando comparten boundary operativo
búsqueda de catálogo
→ proyección derivada con consistencia eventual
No todo requiere la misma consistencia. Dinero e inventario suelen necesitar coordinación fuerte; analítica y búsqueda pueden tolerar retraso explícito.
La táctica debe justificarse mediante escenario y trade-off. Caching mejora latencia, pero introduce staleness. Retries recuperan fallos transitorios, pero aumentan carga.
Decisión:
Mantener Inventario y Ventas en monolito modular.
Razón:
Equipo único, transacciones críticas y ausencia de necesidad de despliegue independiente.
Costo:
Escalado y despliegue conjunto.
Revisar cuando:
Existe equipo separado o volumen independiente sostenido.
La decisión puede cambiar sin que la original haya sido incorrecta.
regla: Sales no escribe Inventory
implementación:
- repository de Inventory es interno
- permisos de DB limitan escritura
- Sales usa InventoryPort
- test de arquitectura bloquea imports
- auditoría registra ajustes
1. Describe el problema.
2. Escribe el escenario.
3. Identifica invariantes y ownership.
4. Compara al menos dos alternativas.
5. Elige la opción más simple suficiente.
6. Registra trade-offs.
7. Define cómo comprobarla.
8. Define cuándo revisarla.
¿Cuáles son los tres drivers prioritarios de tu sistema?
¿Qué invariante más importante debe proteger?
¿Qué módulo o equipo posee cada dato crítico?
¿Qué interacción debería ser síncrona y cuál asíncrona?
¿Qué decisión es más costosa de revertir?
¿Qué fitness function protege un boundary central?
¿Cómo se recupera el sistema después de pérdida o corrupción?
¿Qué señal justificaría una nueva topología?
¿Qué deuda se acepta conscientemente y cuál es su trigger?
¿Qué evidencia demuestra que la arquitectura funciona hoy?
Guía para evaluar tus respuestas
Una respuesta sólida no nombra únicamente tecnologías. Conecta cada decisión con un driver, explica ownership y garantías, reconoce trade-offs y define una forma de verificación o revisión.