TechLead
Lección 13 de 25
5 min de lectura
Liderazgo

Registros de Decisiones Arquitectónicas (ADRs)

Aprende el formato ADR, cuándo escribirlos y cómo complementan los RFCs para documentar decisiones técnicas

¿Qué Es un ADR?

Un Registro de Decisión Arquitectónica (ADR) es un documento corto que captura una sola decisión arquitectónica y su contexto. Mientras que un RFC es una propuesta que solicita retroalimentación antes de tomar una decisión, un ADR es un registro de una decisión que ya ha sido tomada. Los ADRs responden la pregunta que todo ingeniero eventualmente hace al leer código heredado: "¿Por qué se construyó de esta manera?"

Los ADRs fueron popularizados por Michael Nygard en su post de blog de 2011 y desde entonces se han convertido en una práctica estándar en organizaciones de ingeniería maduras. Son ligeros, fáciles de escribir e inmensamente valiosos con el tiempo.

Por Qué Importan los ADRs

  • Memoria Organizacional: Los ingenieros se van, el contexto se pierde. Los ADRs preservan el razonamiento detrás de las decisiones.
  • Incorporación: Los nuevos ingenieros pueden leer los ADRs para entender por qué el sistema está diseñado como está.
  • Evitar Debates Repetidos: Cuando una decisión ha sido documentada con su justificación, el equipo no la relitigia cada pocos meses.
  • Seguimiento de Evolución: Los ADRs pueden reemplazar ADRs anteriores, creando un historial de cómo evolucionó la arquitectura.
  • Responsabilidad: Documentar decisiones hace el proceso de toma de decisiones más deliberado y reflexivo.

El Formato ADR

Los ADRs son intencionalmente cortos, típicamente una página o menos. El formato clásico incluye cuatro secciones:

# ADR-017: Use PostgreSQL as the Primary Database

## Status
Accepted (2026-02-15)

## Context
We are building a new order management system that requires:
- ACID transactions for financial data integrity
- Complex queries with JOINs across multiple tables
- Full-text search for order lookups
- JSON support for flexible product metadata

The team has experience with both PostgreSQL and MongoDB.
Our existing infrastructure runs PostgreSQL for other services.

## Decision
We will use PostgreSQL 16 as the primary database for the
order management system.

We considered:
1. MongoDB - Better for flexible schemas, but we need strong
   transactional guarantees. The team is less experienced with
   MongoDB operations.
2. MySQL - Viable option, but PostgreSQL's JSON support and
   full-text search eliminate the need for a separate search
   service. Our existing tooling and monitoring is set up for
   PostgreSQL.

## Consequences
### Positive
- Leverages existing team expertise and operational tooling
- Strong transactional guarantees for financial data
- Built-in JSON support avoids a separate document store
- Full-text search reduces need for Elasticsearch

### Negative
- Schema migrations require more planning than a document DB
- Horizontal scaling is more complex than MongoDB sharding
- Must design the schema upfront rather than evolving freely

### Risks
- If we outgrow single-node PostgreSQL, we will need to
  evaluate CitusDB or read replicas (estimated 12+ months away
  based on current growth projections)

ADRs vs RFCs

Cuándo Usar Cada Uno

Característica RFC ADR
MomentoAntes de la decisiónDespués de la decisión
PropósitoProponer y solicitar retroalimentaciónRegistrar y explicar una decisión
Extensión3-7 páginas0.5-1 página
AudienciaRevisores y tomadores de decisionesFuturos ingenieros y equipo actual
AlcanceCambios grandes y complejosCualquier decisión significativa
Flujo de trabajoBorrador -> Revisión -> Aceptado/RechazadoPropuesto -> Aceptado -> Reemplazado

En la práctica, ambos se complementan perfectamente: las grandes decisiones pasan por el proceso de RFC, y el resultado se captura en un ADR. Las decisiones más pequeñas que no justifican un RFC completo aún pueden capturarse en un ADR para el registro histórico.

Dónde Almacenar ADRs

  • En el repositorio: Almacena ADRs en un directorio docs/adr/ en el repositorio relevante. Esto mantiene las decisiones cerca del código que afectan y asegura que estén bajo control de versiones.
  • Wiki central: Para decisiones a nivel organizacional que abarcan múltiples repositorios, una wiki central o sitio de documentación funciona mejor.
  • Convención de nombres: Usa un esquema de numeración secuencial: ADR-001-use-typescript.md, ADR-002-choose-postgresql.md

Ciclo de Vida del ADR

Los ADRs tienen un ciclo de vida que refleja cómo evolucionan las decisiones:

  • Propuesto: La decisión está siendo considerada pero aún no finalizada
  • Aceptado: La decisión ha sido adoptada y está en efecto
  • Deprecado: La decisión ya no se recomienda pero las implementaciones existentes no requieren cambio
  • Reemplazado: Un nuevo ADR ha reemplazado este. El viejo ADR enlaza al nuevo.
# ADR-023: Migrate from REST to GraphQL for Client APIs

## Status
Accepted (2026-03-01)
Supersedes: ADR-008 (Use REST for all client-facing APIs)

## Context
Our mobile app requires 12 separate REST calls to render the
home screen, leading to high latency and over-fetching. The
frontend team spends significant time aggregating data from
multiple endpoints.

## Decision
New client-facing APIs will use GraphQL via Apollo Server.
Existing REST endpoints remain unchanged until their owning
team migrates them.

## Consequences
- Reduces mobile app network calls from 12 to 1 for home screen
- Requires team training on GraphQL (2-week investment)
- Need to implement rate limiting and query complexity analysis
- Existing REST APIs continue to work; no breaking changes

Consejos para ADRs Efectivos

  • Escribe el ADR cuando se toma la decisión, no meses después cuando el contexto ha sido olvidado
  • Mantenlos cortos. Si un ADR toma más de 30 minutos para escribir, quizás necesita ser un RFC en su lugar.
  • Incluye el contexto de "lo que consideramos y rechazamos." Esta es la parte más valiosa para futuros lectores.
  • No edites ADRs aceptados. Si una decisión cambia, escribe un nuevo ADR que reemplace al anterior.
  • Revisa los ADRs durante la incorporación. Los nuevos ingenieros deberían leer todos los ADRs activos en los repositorios de su equipo.

Resumen

Los Registros de Decisiones Arquitectónicas son una de las prácticas de documentación más simples pero valiosas que un equipo de ingeniería puede adoptar. Son rápidos de escribir, fáciles de mantener y proporcionan enorme valor con el tiempo como memoria organizacional. Comienza a escribir ADRs hoy, incluso retroactivamente para decisiones recientes, y tus futuros compañeros de equipo te lo agradecerán.

Continuar Aprendiendo