Skip to content
IRC-CodingIRC-Coding
Layered ArchitectureSchichtenmodellDTOService LayerSecurity Layer

Layered Architecture: capas, DTOs y reglas

Layered Architecture explicada: capas UI, Business, acceso a datos e infraestructura. DTOs, reglas y ventajas.

S

schutzgeist

12 min read
Layered Architecture: capas, DTOs y reglas

Arquitectura de software: Modelo de capas / Layers

Este artículo es una explicación de conceptos sobre el modelo de capas, incluyendo preguntas de examen, componentes clave y ejemplos prácticos.

Cuando desarrollas una aplicación que debe permanecer mantenible y extensible durante años, necesitas una estructura clara. El modelo de capas, también conocido como Layered Architecture, es uno de los patrones arquitectónicos más utilizados. Divide una aplicación en capas superpuestas, cada una con una responsabilidad específica. En exámenes y en la práctica profesional, te preguntarán regularmente sobre las capas, sus tareas y las reglas de comunicación.

En resumen

La Layered Architecture organiza los sistemas en niveles separados con responsabilidades claramente definidas. Cada capa se encarga de un aspecto específico de la aplicación y se comunica solo con la capa inmediatamente inferior. Esto promueve la separación de responsabilidades, mantenibilidad, testabilidad y escalabilidad.

Descripción técnica compacta

El modelo de capas divide una aplicación en capas lógicamente separadas y apiladas verticalmente. Cada capa tiene una responsabilidad claramente definida y se comunica generalmente solo con la capa directamente inferior. Esto evita que la lógica de negocio, la presentación y el almacenamiento de datos se mezclen.

Las capas típicas son:

  • Capa de presentación (UI): Muestra datos y recibe entradas del usuario. No contiene lógica de negocio.
  • Capa de lógica de negocio (Business Layer): Contiene la lógica del dominio, reglas y procesos. Aquí ocurre la validación.
  • Capa de acceso a datos (Data Access Layer): Se encarga de leer y escribir datos, frecuentemente a través de repositorios o DAOs.
  • Capa de infraestructura: Proporciona funcionalidades transversales como logging, seguridad, caché o configuración.

En muchas variantes existe además una capa de servicios, que actúa como fachada entre la UI y la lógica de negocio, o una capa de dominio, que protege especialmente la lógica central.

Puntos clave para exámenes

  • Responsabilidades claras por capa: Cada capa tiene una tarea definida y contiene solo código que le pertenece.
  • Comunicación solo con la capa vecina: Una capa no debe saltar niveles, sino hablar solo directamente con la capa inferior.
  • Separación de responsabilidades: La UI, la lógica y el acceso a datos están separados. Esto aumenta la mantenibilidad.
  • Promueve testabilidad: Cada capa puede probarse aisladamente si está conectada a través de interfaces.
  • Intercambiabilidad: Las capas pueden reemplazarse sin modificar otras capas si las interfaces permanecen estables.
  • Frecuente en proyectos IHK: El modelo de capas es un tema clásico en exámenes y a menudo se requiere en la documentación de proyectos.
  • Seguridad: La validación, autenticación y autorización pertenecen a las capas intermedias, no a la UI.
  • DTOs: Los Data Transfer Objects transportan datos entre capas sin exponer entidades internas.
  • Manejo de errores: Los errores se manejan en la capa donde mejor pueden resolverse, o se propagan a la capa superior.
  • Documentación: Un diagrama de capas con descripción de cada una es importante en la documentación del proyecto.
  • Economía: Las capas claras reducen costos de mantenimiento y facilitan la incorporación de nuevos miembros del equipo.

Componentes clave

  1. UI (Capa de presentación) La capa de UI es la interfaz con el usuario. Muestra datos, recibe entradas y las envía a la capa inferior. Contiene solo lógica de presentación y navegación, no lógica de negocio.

  2. Business (Capa de lógica de negocio) La capa Business contiene la lógica central de la aplicación. Aquí se implementan las reglas de negocio, cálculos y decisiones. La validación ocurre típicamente aquí antes de pasar datos a la capa de acceso a datos.

  3. Acceso a datos (Data Access Layer) La capa de acceso a datos se encarga de leer y escribir datos. Abstrae la base de datos u otras fuentes de datos, por ejemplo mediante repositorios o DAOs. La capa superior desconoce los detalles de la tecnología de base de datos.

  4. Infraestructura Los componentes de infraestructura son transversales: logging, configuración, caché, cifrado, mensajería y herramientas técnicas. Pueden usarse en todas las capas sin mezclar la lógica de negocio.

  5. DTOs (Data Transfer Objects) Los DTOs son objetos simples que transportan datos entre capas. No contienen lógica y evitan que entidades internas o modelos de base de datos lleguen a la UI.

  6. Validación La validación comprueba si las entradas cumplen con las reglas de negocio. Ocurre principalmente en la capa Business, a veces complementada con validaciones básicas de formato en la capa UI.

  7. Manejo de errores Cada capa maneja errores dentro de su responsabilidad. Los errores técnicos se manejan frecuentemente en la capa de acceso a datos o de infraestructura, los errores de negocio en la capa Business. Los mensajes amigables para el usuario surgen en la capa UI.

  8. Capa de servicios La capa de servicios proporciona una fachada para la lógica de negocio. Orquesta múltiples objetos de dominio y ofrece a la capa UI una interfaz claramente definida.

  9. Auth/AuthZ La autenticación y autorización pertenecen a las capas intermedias. La UI solo muestra lo que el usuario puede hacer, pero la decisión de si una operación está permitida se toma en la capa Business o de servicios.

  10. Estructura de Build/Deploy Las capas pueden reflejarse en la estructura física del proyecto. Proyectos o paquetes claros por capa facilitan la comprensión y el cumplimiento de las reglas arquitectónicas.

Ejemplo práctico: Sistema de reservas

El siguiente ejemplo muestra cómo se puede construir un sistema de reservas simple usando el modelo de capas.

¿Qué se muestra aquí?

  • La capa UI recibe una reserva del usuario y muestra resultados.
  • La capa Business verifica si la reserva es válida, si hay suficientes plazas disponibles y calcula el precio.
  • La capa de acceso a datos guarda la reserva en la base de datos y lee los plazas disponibles.
  • La capa de infraestructura registra la operación y asegura que solo usuarios autorizados puedan hacer reservas.

¿Por qué se muestra?

El ejemplo ilustra cómo fluyen los datos y las responsabilidades a través de las capas. Demuestra por qué la UI no debe llamar directamente a la base de datos y por qué la validación ocurre en la capa Business. También muestra cómo pueden usarse DTOs para transportar solo los datos necesarios entre capas.

Sistema de reservas:

┌─────────────────────────────────────┐
│ Capa UI (React)                     │
│ → Entrada: Crear reserva            │
└──────────────┬──────────────────────┘
               │ DTO (ReservaRequest)

┌─────────────────────────────────────┐
│ Capa de servicios (Java Spring)      │
│ → Coordinación, verificación de auth │
└──────────────┬──────────────────────┘


┌─────────────────────────────────────┐
│ Capa Business (Java)                │
│ → Validación, cálculo de precio      │
└──────────────┬──────────────────────┘
               │ DTO (ReservaEntity)

┌─────────────────────────────────────┐
│ Capa de acceso a datos (JPA/Repo)    │
│ → Guardar y leer la reserva          │
└─────────────────────────────────────┘

Ventajas y desventajas

Ventajas

  • Buena testabilidad: Cada capa puede probarse de forma aislada si dispone de interfaces estables.
  • Separación clara de responsabilidades: La interfaz de usuario, la lógica, los datos y la infraestructura están separados. Eso hace el código más legible.
  • Mejor colaboración en equipo: Equipos diferentes pueden trabajar en paralelo en diferentes capas, por ejemplo Frontend, Backend y base de datos.
  • Intercambiabilidad: Una capa puede reemplazarse sin modificar las otras, siempre que las interfaces sigan siendo las mismas.
  • Reutilización: La capa de negocio puede usarse para diferentes tecnologías de interfaz de usuario o clientes.
  • Mantenibilidad: Los cambios generalmente se limitan a una capa, lo que facilita la incorporación y la corrección de errores.

Desventajas

  • Sobrecarga en proyectos pequeños: Para aplicaciones simples, el modelo de capas puede requerir demasiada estructura y código repetitivo.
  • Pérdidas de rendimiento: Cada capa adicional puede significar latencia y esfuerzo de mapeo, especialmente si se convierten muchos DTOs.
  • Rigidez: Si se aplica demasiado estrictamente, puede resultar difícil implementar funcionalidades transversales de forma limpia.
  • Complejidad: Las reglas de capas deben respetarse y controlarse, de lo contrario rápidamente se convierte en un caos.
  • Distribución incorrecta: Si la lógica migra hacia la capa equivocada, el modelo pierde sus ventajas.

Respuesta libre

En proyectos IHK deberías elegir el modelo de capas cuando necesites documentar una aplicación con responsabilidades claramente separadas. Muestra un diagrama de capas, describe cada capa en una frase y explica por qué la separación tiene sentido. Menciona dónde ocurren la validación, la autenticación y el manejo de errores. Para herramientas muy pequeñas o prototipos, el modelo de capas puede suponer demasiada sobrecarga.

Estrategia de aprendizaje

1. Esbozar el modelo de capas

Dibuja un diagrama de capas con interfaz de usuario, servicios, negocio, acceso a datos e infraestructura. Marca la comunicación permitida y anota qué tarea tiene cada capa.

2. Desarrollar tu propio ejemplo

Toma un ejemplo de tu vida cotidiana, como una tienda en línea o un sistema de reservas. Reflexiona sobre qué clases pertenecen a qué capa y qué DTOs se transportan entre ellas.

3. Practicar las reglas

Formula las reglas más importantes del modelo de capas con tus propias palabras: “Una capa se comunica solo con su capa vecina directa.” “La interfaz de usuario no contiene lógica de negocio.” “La validación pertenece a la capa de negocio.”

4. Analizar ejemplos de errores

Busca ejemplos de código donde las capas se mezclan, por ejemplo consultas SQL directamente en la interfaz de usuario. Piensa cómo trasladar el código al modelo de capas.

5. Simular un escenario de examen

Imagina una pregunta de examen: “Justifique la elección del modelo de capas para un sistema de reservas.” Formula una respuesta que aborde la separación de responsabilidades, la testabilidad y la mantenibilidad.

Análisis temático

  • Núcleo técnico: Capas, DTOs, interfaces, validación, manejo de errores, Service Layer
  • Desafíos: Evitar mezcla de capas, encontrar el equilibrio correcto entre rigidez y flexibilidad, sobrecarga en proyectos pequeños
  • Seguridad: Autenticación, autorización y validación en las capas intermedias
  • Documentación: Diagrama de capas, descripción de capas, justificación de la elección arquitectónica
  • Economía: Mantenibilidad, desarrollo paralelo, intercambiabilidad, reducción de costos en cambios

Preguntas frecuentes: Modelo de capas y Layered Architecture

1. ¿Qué es un modelo de capas?

Un modelo de capas divide una aplicación en capas superpuestas separadas lógicamente. Cada capa tiene su propia responsabilidad y típicamente se comunica solo con la capa que está directamente debajo.

2. ¿Qué es Layered Architecture?

Layered Architecture es un patrón arquitectónico que divide una aplicación en capas horizontales. Es uno de los patrones más utilizados en el desarrollo de software.

3. ¿Qué capas existen típicamente?

Las capas típicas son presentación, lógica de negocio, acceso a datos e infraestructura. Dependiendo de la variante, también puede haber un Service Layer o un Domain Layer.

4. ¿Cuál es la responsabilidad de la capa de presentación?

La capa de presentación muestra datos y acepta entradas del usuario. No contiene lógica de negocio, solo lógica de presentación y navegación.

5. ¿Cuál es la responsabilidad de la capa de lógica de negocio?

La capa de lógica de negocio contiene la lógica del dominio, las reglas de negocio, los cálculos y las validaciones. Es el corazón de la aplicación.

6. ¿Cuál es la responsabilidad de la capa de acceso a datos?

La capa de acceso a datos se ocupa de leer y escribir datos. Abstrae la base de datos u otras fuentes de datos, por ejemplo a través de Repositories o DAOs.

7. ¿Cuál es la responsabilidad de la capa de infraestructura?

La capa de infraestructura proporciona funcionalidades transversales, como Logging, Caching, configuración, encriptación y Messaging.

8. ¿Qué es un Service Layer?

Un Service Layer es una capa adicional entre la interfaz de usuario y la lógica de negocio. Orquesta varios procesos de negocio y proporciona una interfaz bien definida a la interfaz de usuario.

9. ¿Qué es un DTO?

Un DTO, Data Transfer Object, es un objeto simple que transporta datos entre capas. No contiene lógica y evita que las entidades internas se pasen a la interfaz de usuario.

10. ¿Qué significa separación de responsabilidades?

La separación de responsabilidades significa que los diferentes aspectos de una aplicación, como presentación, lógica y acceso a datos, se dividen en componentes separados. Esto reduce el acoplamiento y la complejidad.

11. ¿Con qué capa puede comunicarse una capa?

En el modelo de capas clásico, una capa se comunica solo con su capa vecina directamente debajo. Esto evita que las dependencias aparezcan en todo el sistema.

12. ¿Qué sucede si las capas se mezclan?

Si las capas se mezclan, rápidamente resulta en lo que se llama código Spaghetti. La aplicación se vuelve más difícil de probar, mantener e intercambiar.

13. ¿Dónde pertenece la validación?

La validación de negocio pertenece a la capa de lógica de negocio. La capa de interfaz de usuario puede complementariamente realizar comprobaciones básicas de formato, pero no debe decidir sobre reglas de negocio.

14. ¿Dónde pertenece la autenticación?

La autenticación y autorización pertenecen a las capas intermedias, es decir, Service Layer o capa de negocio. La interfaz de usuario solo muestra lo que un usuario puede ver, pero la decisión sobre permisos se toma de forma centralizada.

15. ¿Qué es un Repository?

Un Repository es un patrón de la capa de acceso a datos. Encapsula el acceso a la fuente de datos y proporciona a la capa de lógica de negocio una interfaz limpia para leer y escribir datos.

16. ¿Qué es un DAO?

Un DAO, Data Access Object, es un objeto que encapsula el acceso a una base de datos u otra fuente de datos. Es un patrón similar al Repository.

17. ¿Por qué el modelo de capas es testeable?

Cada capa puede probarse de forma aislada si está acoplada a través de interfaces estables. La capa de acceso a datos puede reemplazarse con un Fake o Mock para probar la lógica de negocio.

18. ¿Por qué el modelo de capas es mantenible?

Los cambios generalmente se limitan a una capa. Si cambias la interfaz de usuario, no necesitas ajustar la lógica de negocio. Si cambias la base de datos, permaneces dentro de la capa de acceso a datos.

19. ¿Cuándo el modelo de capas no tiene sentido?

En proyectos muy pequeños, scripts simples o prototipos, el modelo de capas puede generar demasiada sobrecarga y código innecesario.

20. ¿Qué es un diagrama de capas?

Un diagrama de capas muestra las capas de una aplicación como bloques superpuestos y las vías de comunicación permitidas entre ellas. Es una herramienta de documentación importante.

21. ¿Cuál es la diferencia entre capas y tiers?

Las capas describen la separación lógica dentro de una aplicación. Los tiers describen la distribución física en diferentes máquinas o redes, por ejemplo Cliente, Servidor y base de datos.

22. ¿Qué es un Domain Layer?

Un Domain Layer es una capa adicional que protege particularmente la lógica de negocio pura. Contiene entidades, objetos de valor y Domain Services, independientemente de la tecnología e interfaz de usuario.

23. ¿Qué es un modelo de capas hexagonal?

El modelo hexagonal, también llamado Ports and Adapters, es una variante del modelo de capas. Separa la lógica de la aplicación en el interior de adaptadores externos como interfaz de usuario, base de datos o Messaging.

24. ¿Qué es un Onion Model?

El Onion Model es otra variante del modelo de capas. La lógica del dominio se encuentra en el centro, y todas las otras capas como infraestructura e interfaz de usuario son anillos externos que se construyen sobre ella.

25. ¿Qué debe incluir la documentación del proyecto sobre el modelo de capas?

La documentación debe incluir un diagrama de capas, la responsabilidad de cada capa, las vías de comunicación permitidas y una justificación de la elección del modelo. Además, deben incluirse aspectos de seguridad como validación y autorización.

Keine Bücher für Kategorie "software-architektur" gefunden.

Información adicional

  1. https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/layered
  2. https://arc42.org/
Volver al blog
Share:

Nächster Artikel in Arquitectura de Software

Weiterlesen
Microservices: Bounded Context, Saga y Observability

Entradas relacionadas