46 lines
1.1 KiB
Markdown
46 lines
1.1 KiB
Markdown
|
|
# ADR-001: Clean Architecture
|
||
|
|
|
||
|
|
**Estado:** Aceptado
|
||
|
|
**Fecha:** 2026-01-07
|
||
|
|
|
||
|
|
## Contexto
|
||
|
|
|
||
|
|
Necesitamos una arquitectura que permita:
|
||
|
|
- Testabilidad de reglas de negocio
|
||
|
|
- Independencia de frameworks
|
||
|
|
- Mantenibilidad a largo plazo
|
||
|
|
- Separación clara de responsabilidades
|
||
|
|
|
||
|
|
## Decisión
|
||
|
|
|
||
|
|
Adoptar **Clean Architecture** con 4 capas: Domain, Application, Adapters, Host.
|
||
|
|
|
||
|
|
```
|
||
|
|
Host → Adapters → Application → Domain
|
||
|
|
```
|
||
|
|
|
||
|
|
## Consecuencias
|
||
|
|
|
||
|
|
### Positivas
|
||
|
|
- Domain sin dependencias externas (puro C#)
|
||
|
|
- Reglas de negocio testeables sin mocks de infraestructura
|
||
|
|
- Fácil cambiar ORM o base de datos
|
||
|
|
- Fácil cambiar de REST a GraphQL (o viceversa)
|
||
|
|
|
||
|
|
### Negativas
|
||
|
|
- Mayor cantidad de archivos/proyectos
|
||
|
|
- Curva de aprendizaje inicial
|
||
|
|
- Overhead para proyectos muy pequeños
|
||
|
|
|
||
|
|
## Alternativas Consideradas
|
||
|
|
|
||
|
|
| Alternativa | Razón de Descarte |
|
||
|
|
|-------------|-------------------|
|
||
|
|
| N-Layer tradicional | Alto acoplamiento, difícil testear |
|
||
|
|
| Vertical Slices | Menor separación de concerns |
|
||
|
|
| Monolítico simple | No escala con complejidad |
|
||
|
|
|
||
|
|
## Referencias
|
||
|
|
|
||
|
|
- [Clean Architecture - Robert C. Martin](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)
|