Arquitectura en capas: controller, servicio y repositorio

Clase 15 de 43Curso Profesional de Arquitectura de Software

Contenido del curso

Atributos de calidad

Patrones de arquitectura

Diseño de una arquitectura

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.