Saltar a contenido

Arquitectura de software

La arquitectura es el conjunto de decisiones difíciles de cambiar y los límites que las protegen. Un arquitecto no elige "la mejor tecnología": elige el trade-off adecuado para el contexto y lo documenta.

flowchart LR
    A[Código<br/>Clean Code, SOLID] --> B[Diseño<br/>Patrones]
    B --> C[Módulos y servicios<br/>Clean Arch, DDD]
    C --> D[Sistemas<br/>System Design]
    D --> E[Plataforma<br/>K8s, GitOps, IaC]
Página Qué cubre
Estilos de arquitectura Monolito modular, hexagonal, microservicios, eventos, serverless
Domain-Driven Design Diseño estratégico y táctico
Diseño de APIs REST, gRPC, contratos, idempotencia, paginación, versionado, seguridad
ADRs y trade-offs Cómo documentar y defender decisiones
El rol del arquitecto Responsabilidades, toma de decisiones y liderazgo técnico
Arquitectura Limpia Regla de dependencias y límites (en Biblioteca)

SOLID y patrones están en Diseño y código.

Características de calidad ("-ilities")

Un arquitecto prioriza pocas características; optimizarlas todas es imposible.

Característica Pregunta que responde Tácticas típicas
Escalabilidad ¿Aguanta ×10 de carga? Stateless, escalado horizontal, sharding
Disponibilidad ¿Cuánto tiempo está arriba? Redundancia, failover, multi-AZ
Rendimiento ¿Cuánto tarda? Caché, asincronía, índices
Mantenibilidad ¿Es barato cambiarlo? Modularidad, tests, límites claros
Seguridad ¿Resiste ataques? Zero trust, mínimo privilegio, cifrado
Observabilidad ¿Sé qué está pasando? Logs, métricas, trazas
Desplegabilidad ¿Puedo desplegar a menudo sin miedo? CI/CD, GitOps, feature flags
Coste ¿Cuánto cuesta operarlo? Autoscaling, right-sizing, FinOps

Primera ley de la arquitectura (Richards & Ford)

Todo en arquitectura es un trade-off. Si crees haber encontrado algo sin trade-off, es que aún no lo has identificado.