Contenido del curso

Características clave de arquitecturas limpias

Resumen

Las arquitecturas limpias comparten cuatro características que definen cómo organizar el código de un sistema robusto y mantenible. Si quieres entender qué hace que una arquitectura sea realmente limpia, aquí encontrarás los principios que giran en torno al dominio, la independencia de elementos externos, la inversión de dependencias y la testeabilidad.

Este enfoque es relevante para desarrolladores y arquitectos de software que buscan construir sistemas flexibles, fáciles de probar y preparados para cambios tecnológicos sin comprometer la lógica de negocio.

¿Qué es el dominio en una arquitectura limpia?

El dominio es la razón de ser del sistema, lo que existiría aunque la aplicación nunca se construyera. Es el corazón del negocio y, en una arquitectura limpia, ocupa siempre el lugar central.

Piensa en una aplicación de supermercado. El cálculo de descuentos y la verificación de inventario forman parte del dominio porque son actividades que el negocio debe ejecutar incluso si todo se hiciera con papel y lápiz. En cambio, si la caja usa una app web o de escritorio, o cómo se capturan los códigos de barras, son detalles ajenos al dominio.

¿Qué se considera dominio en una app? Es el conjunto de reglas y procesos que definen el negocio y existen sin importar la tecnología. Por ejemplo, calcular descuentos en un supermercado o gestionar publicaciones en una red social.

¿Cómo se ve el dominio en distintos sistemas?

Los ejemplos ayudan a aterrizar el concepto. En cada caso, la lógica de negocio es lo que define el dominio.

  • Red social: publicación de mensajes, reglas de visibilidad, duración del contenido y la gestión de anuncios con su sistema de puja y formatos.
  • Recursos humanos: cálculo de seguridad social según el tipo de empleado y el país, gestión de vacaciones y permisos.
  • Supermercado: descuentos, inventario y reglas de operación que existen sin importar la herramienta.

Los términos dominio y lógica de negocio se usan de forma intercambiable a lo largo del recorrido en arquitectura limpia.

¿Por qué el dominio no debe depender de elementos externos?

La segunda característica establece que el dominio se mantiene independiente. Eso significa que ciertos componentes, por importantes que parezcan, no deberían condicionar cómo organizas tu lógica de negocio.

¿Y qué entra en esta categoría de externos? Aquí es donde a muchos les sorprende la respuesta.

  • Interfaces gráficas: la UI no debería marcar la forma del dominio.
  • Bases de datos: aunque suene contraintuitivo, son repositorios que pueden cambiar o incluso desaparecer sin afectar al negocio.
  • Sistemas de terceros: integraciones con sistemas contables, redes sociales u otros servicios externos.
  • Frameworks: Angular, Django, ASP.NET y similares. Tu lógica no debería depender de ellos.

Si mezclas reglas de negocio con código de Angular, por ejemplo, rompes este principio. El día que quieras migrar a otro framework, la limitación será enorme.

¿La base de datos es parte del dominio? No. La base de datos es un elemento externo. Es importante para almacenar información, pero el negocio puede operar sin ella o cambiarla en el tiempo.

¿Cómo funciona la inversión de dependencias?

La tercera característica es quizás la más distintiva: las dependencias se invierten. Aquí está el quiebre frente a otras arquitecturas tradicionales.

En una arquitectura limpia conviven dos grandes capas. Por un lado, el dominio con todas las reglas del core del negocio. Por otro, la capa externa con esos elementos cambiantes que no deben condicionar al negocio.

¿En qué se diferencia de una arquitectura de tres capas?

En la arquitectura de tres capas clásica, las dependencias fluyen de arriba hacia abajo: presentación depende de dominio, y dominio depende de acceso a datos. El acceso a datos suele estar atado a una base de datos relacional.

En una arquitectura limpia ocurre lo contrario. El acceso a datos pasa a depender del dominio, no al revés. La dependencia se invierte y el dominio queda libre, sin ataduras a la infraestructura. Este principio es uno de los más profundos y se construye con calma a lo largo del aprendizaje.

¿Por qué las arquitecturas limpias facilitan las pruebas?

La cuarta característica tiene que ver con la testability o testeabilidad, es decir, la facilidad con la que puedes verificar o probar un sistema.

Al tener el dominio aislado de la capa externa, puedes probar la lógica de negocio sin necesidad de tener la base de datos disponible o un framework configurado. Eso abre la puerta a usar técnicas específicas que reemplazan los componentes externos durante las pruebas, algo que en arquitecturas acopladas resulta mucho más complicado.

¿Qué es la testeabilidad en arquitectura de software? Es la facilidad con la que puedes probar un sistema. Las arquitecturas limpias la mejoran porque permiten verificar el dominio sin depender de bases de datos o frameworks externos.

La separación entre dominio y capa externa es la base sobre la que descansa todo lo demás. ¿Qué opinas de esta separación y qué tan difícil crees que pueda llegar a ser implementarla en tus proyectos? Déjanos un comentario.