Elegir y conectar arquitecturas
Biblioteca creada y mantenida con agentes de IA. Las personas son responsables de la revisión y publicación.
Propuesta · requiere revisión humana · r2
Elegir según las restricciones y las responsabilidades
Registra los límites de las transacciones, las necesidades de latencia y recuperación, la sensibilidad de los datos, la forma de la carga y quién puede operar el sistema. Compara el diseño viable más sencillo con la alternativa propuesta. La tabla siguiente es un marco de decisión original de esta biblioteca; los documentos de patrones citados explican mecanismos y compensaciones relevantes, no una clasificación universal.
| Enfoque | Una condición inicial útil | Coste y motivo para reconsiderarlo |
|---|---|---|
| Sitio estático | Contenido público sin escrituras de confianza en el servidor | Límites de compilación y caché; añade una API protegida para cambios autenticados |
| Monolito modular | Un producto necesita transacciones coordinadas y cambios frecuentes | Disciplina en las dependencias entre módulos; extrae solo una restricción medida o una capacidad con responsabilidad independiente |
| Funciones | Trabajo acotado y con picos que encaja en el contrato de ejecución del proveedor | Arranques en frío, cuotas, presión sobre conexiones y reintentos; reconsidera el trabajo sostenido o de larga duración |
| Servicios | La responsabilidad, la publicación o el aislamiento de fallos independientes aportan un beneficio concreto | Fallos de red, contratos versionados, observabilidad y operación de la coherencia |
| Trabajo dirigido por eventos | El trabajo puede terminar después y los consumidores tienen responsabilidades distintas | Entrega duplicada o fuera de orden, retraso, repetición y evolución de esquemas |
| Flujos de trabajo duraderos | Los pasos de negocio de larga duración deben sobrevivir a interrupciones | Restricciones del motor, retención del historial, actualizaciones del código y conciliación de efectos externos |
Estas opciones se pueden combinar. Un monolito puede servir un frontend estático y usar una cola sin convertirse en un sistema de microservicios. La dirección de las dependencias en el código y la topología de despliegue son decisiones distintas: dividir procesos no crea por sí mismo límites de dominio útiles.
CQRS separa los modelos de lectura y escritura; puede empezar dentro de una sola base de datos. Los almacenes separados añaden retraso de sincronización y un contrato para las lecturas desactualizadas. Event sourcing convierte el historial de eventos en la fuente autoritativa y exige decidir sobre evolución de eventos, repetición, privacidad y retención. Una cola o una tabla de auditoría no constituyen por sí solas event sourcing. Introduce estos patrones de forma selectiva cuando su beneficio específico compense las obligaciones adicionales de recuperación y pruebas.
Hacer que los límites se puedan revisar
Para cada conexión entre navegador, API, proceso en segundo plano, almacén de datos y proveedor, registra:
| Contrato | Evidencia que debe ver quien revise |
|---|---|
| Autoridad | Qué identidad puede realizar cada acción y sobre los datos de quién |
| Propiedad de los datos | Qué componente puede modificar cada invariante y cómo solicitan cambios los demás componentes |
| Fallo | Tiempo límite, cancelación, responsable de reintentos, tratamiento de duplicados y estado pendiente o de error visible para el usuario |
| Compatibilidad | Productores y consumidores compatibles, versión del esquema y condición para retirar compatibilidad |
| Operación | Trazas y métricas, responsable de soporte, procedimiento de restauración o conciliación y presupuesto |
Una base de datos compartida puede ser una elección transitoria deliberada. Las escrituras sin restricciones desde varios servicios dificultan la responsabilidad independiente y las migraciones; documenta ese acoplamiento en lugar de describir los servicios como independientes.
Demostrar el cambio antes de extraer componentes
Para un proceso en segundo plano o servicio propuesto, identifica primero el síntoma: antigüedad de la cola, contención de bloqueos, coordinación de despliegues o necesidad de aislamiento. Registra una referencia representativa y compara una pequeña funcionalidad completa con la ruta existente. Aplica comprobaciones de contrato y de caja negra, pruebas de carga y recuperación y pruebas de seguridad en el nuevo límite. Incluye una dependencia lenta, un consumidor antiguo y una solicitud repetida.
El plan de migración identifica la propiedad de los datos durante la transición, la selección del tráfico, la compatibilidad y la conciliación. Mantén un único escritor autoritativo, salvo que se haya probado un diseño deliberado de resolución de conflictos. Define la evidencia que permite trasladar tráfico, la condición de interrupción y la ruta de recuperación después de nuevas escrituras. Revertir el tráfico no deshace automáticamente los datos migrados.
Si no se demuestra el beneficio, conserva la topología más sencilla y el límite interno útil. Registra el resultado en un ADR para que el siguiente agente no repita un rediseño sin fundamento.
Decisiones relacionadas
Durabilidad y trabajo distribuido · Arquitectura del frontend · Escalar con mediciones · Alojamiento · Estrategia de pruebas
Evidencia primaria
azure-architecture-styles · azure-cqrs · azure-event-sourcing · postgres-isolation · durable-workflows