Publicado el

🧠 ¿Qué es una Decisión Arquitectónica?

architectural decision image

Una decisión arquitectónica es una elección importante sobre cómo diseñar un sistema, que impacta directamente en:

  • ⚙️ Funcionalidad (qué hace el sistema)
  • 🚀 Rendimiento
  • 🔐 Seguridad
  • 📈 Escalabilidad
  • 🧩 Mantenibilidad

👉 No es cualquier decisión técnica, solo las que tienen impacto significativo en la arquitectura.


💡 Ejemplos reales (explicados)

🧱 ¿Monolito o Microservicios?

  • Monolito: todo en una sola aplicación
  • Microservicios: app dividida en servicios independientes

📌 Ejemplo:

  • Startup pequeña → Monolito (simple y rápido)
  • Sistema tipo Netflix → Microservicios (escalabilidad)

🗄️ ¿SQL o NoSQL?

  • SQL (PostgreSQL, MySQL):

    • Datos estructurados
    • Relaciones fuertes
  • NoSQL (MongoDB, Redis):

    • Flexible
    • Escalable horizontalmente

📌 Ejemplo:

  • Banco → SQL
  • App de chats o logs → NoSQL

🔌 ¿REST o GraphQL?

  • REST: múltiples endpoints (/users, /posts)
  • GraphQL: un endpoint, consultas específicas

📌 Ejemplo:

  • API simple → REST
  • App con frontend complejo → GraphQL

📄 ¿Qué es un ADR?

ADR (Architecture Decision Record) = Documento donde registras decisiones arquitectónicas.

👉 No es burocracia inútil: es memoria técnica del proyecto.


🧩 Estructura de un ADR (bien explicado)

Un buen ADR incluye:

1. 🏷️ Título

"Uso de GraphQL para la API pública"


2. 🌍 Contexto

Necesitamos optimizar el consumo de datos en frontend y reducir overfetching.


3. ✅ Decisión

Se implementará GraphQL en lugar de REST.


4. 🔄 Alternativas

  • REST (descartado)
  • gRPC (no aplica para frontend web)

5. ⚖️ Consecuencias

✔ Ventajas:

  • Menos datos innecesarios
  • Mayor flexibilidad

❌ Desventajas:

  • Mayor complejidad
  • Curva de aprendizaje

🔁 Ciclo de vida de un ADR

  1. 🟡 Propuesto → idea inicial
  2. 🔵 En revisión → discusión del equipo
  3. 🟢 Aceptado → decisión oficial
  4. Obsoleto → ya no aplica
  5. 🔴 Reemplazado → sustituido por otro

🚀 ¿Por qué documentar decisiones?

🧠 Evita repetir debates

No vuelves a discutir lo mismo cada mes.


🤝 Alineación del equipo

Todos entienden por qué se eligió algo.


🔍 Trazabilidad técnica

Sabes qué decisión causó qué resultado.


⏳ Contexto para el futuro

Tu “yo del futuro” (o nuevos devs) entenderán todo.


🧪 Ejemplo real completo de ADR

# ADR-001: Uso de Redis para caché

## Contexto
La API tiene tiempos de respuesta altos por consultas repetidas.

## Decisión
Se implementará Redis como caché en memoria.

## Alternativas
- Caché en base de datos (lento)
- No usar caché (descartado)

## Consecuencias
+ Respuestas más rápidas
+ Menor carga en DB
- Complejidad adicional

⚠️ Error común (muy importante)

❌ Documentar TODO ✔ Documentar SOLO decisiones importantes

👉 Si documentas cosas triviales, nadie lo va a leer.


🔥 Mensaje clave

👉 Las decisiones arquitectónicas no solo definen tu sistema… también determinan su éxito o fracaso.