Arquitectura en capas: controller, servicio y repositorio

Clase 15 de 43Curso Profesional de Arquitectura de Software

Resumen

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.