La arquitectura en capas (o layered) separa responsabilidades para lograr claridad, aislación y mantenibilidad. Con frecuencia se organiza en tres o cuatro capas, priorizando una comunicación estricta de arriba hacia abajo. Este enfoque encaja en un monolito y también en partes de sistemas distribuidos gracias a su orden y estabilidad.
¿Qué es la arquitectura en capas y cómo se organiza?
La idea central es que cada capa sea responsable de un concepto global de la aplicación. En el ejemplo, se distinguen aplicación, dominio y datos; a veces aparece una cuarta capa de presentación.
- Capa de aplicación: orquesta casos de uso y coordina flujos. Un controller vive aquí y conversa con dominio.
- Capa de dominio: incluye entidades y servicios del negocio. Se aísla de detalles de uso por parte del usuario.
- Capa de datos: implementa acceso a base de datos o colecciones en memoria por medio de un repository.
- Cantidad de capas: depende de la aplicación, aunque es habitual ver tres o cuatro.
¿Qué rol cumplen controller, servicio y repositorio?
- Controller: endpoint o interfaz que recibe la petición del usuario y delega en dominio.
- Servicio de dominio: encapsula reglas del negocio y usa entidades para representar el estado en memoria.
- Repository: sabe cómo acceder y buscar en la fuente de datos, sin conocer al usuario ni al dominio.
¿Qué implica la aislación entre capas?
- Permite trabajar en capas inferiores sin preocuparse por las superiores.
- Evita que detalles de interacción con el usuario contaminen el modelo de dominio.
- Refuerza límites claros entre aplicación, dominio y datos.
¿Cómo se comunican las capas: de arriba hacia abajo?
La regla del patrón indica que la comunicación va siempre de arriba hacia abajo. Una capa inferior, con detalles de bajo nivel, no debería invocar a una superior que abstrae interacción con usuario o modelado del dominio.
¿Dónde encaja la lógica de presentación?
Una capa superior puede dedicarse a lógica de presentación, como la vista o algún tipo de server side rendering. Así se mantiene separada de dominio y datos.
¿Qué ejemplo práctico muestra el carrito de compras?
Un usuario solicita su carrito de compras. Puede hacerlo mediante un pedido HTTPS o desde una aplicación de escritorio. El flujo respeta el orden de capas y retorna la respuesta hacia arriba.
- El controller recibe la solicitud y consulta al servicio de carrito.
- El servicio usa la entidad carrito para representarlo en memoria.
- La búsqueda se realiza a través del repository, que sabe cómo acceder a los datos.
- El repository responde al servicio con el carrito correspondiente.
- La respuesta sube: servicio al controller, y controller al usuario.
¿Se usa en monolitos y en sistemas distribuidos?
La arquitectura en capas se implementa en un monolito: todo se despliega junto. También puede aplicarse dentro de sistemas distribuidos, donde cada parte se diseña en capas por su mantenibilidad.
¿Tienes dudas o un caso real donde aplicar capas? Cuéntalo en comentarios y enriquezcamos la solución juntos.