Arquitectura Modular: Desacoplamiento y Escalabilidad del Código

Clase 23 de 26Curso de Diseño de Software para Apps Móviles

Resumen

¿Qué es la modularización en el desarrollo de software?

La modularización es clave para crear sistemas escalables y eficientes. Se refiere al proceso de dividir el código en secciones o módulos independientes, lo que facilita su mantenimiento y escalabilidad. Al modularizar, se reduce el tiempo de compilación, ya que el sistema solo recompila los módulos modificados. Esto mejora la eficiencia del desarrollo, especialmente en sistemas grandes.

Ventajas y desventajas del monorepo

El monorepo es un enfoque de desarrollo donde todo el código de una aplicación reside en un único repositorio. Esto había sido común en el pasado debido a su simplicidad, pero trae varias desventajas:

  • Desventajas:

    • Genera dependencias circulares.
    • Requiere recompilar frecuentemente todo el código al cambiar cualquier parte, lo que aumenta el tiempo de compilación.
    • Promueve un alto acoplamiento entre las distintas partes del código.
  • Ventajas:

    • Simplifica la configuración inicial del proyecto.

¿Qué es Clean Architecture?

Clean Architecture es un enfoque que organiza el código en capas bien definidas, promoviendo la separación de responsabilidades. Las capas son:

  1. Capa de Datos:

    • Incluye las librerías de Android y otros elementos relacionados con el manejo de datos.
  2. Capa de Dominio:

    • Contiene código puro en Java y Kotlin.
    • Aquí residen los helpers, data classes, modelos de datos y otras abstracciones.
  3. Capa de Presentación:

    • Maneja la interfaz visual, como fragmentos, vistas y actividades.

Limitaciones de Clean Architecture

Aunque Clean Architecture ofrece una separación clara, la interacción entre componentes puede ser compleja y no siempre tan efectiva como se desearía.

¿Por qué optar por una arquitectura mixta de módulos?

La recomendación actual es implementar una arquitectura mixta, que combina módulos core y feature modules. Esta arquitectura aporta varias ventajas:

¿Qué son los módulos core?

Los módulos core contienen funciones transversales que se utilizan en toda la aplicación, tales como:

  • Navegación: Cómo se navega entre diferentes partes de la aplicación.
  • Networking: Manejo de la comunicación entre la aplicación y servidores.
  • Seguridad: Implementaciones de medidas de seguridad.

¿Qué son los feature modules?

Cada feature module representa una característica específica dentro del sistema, lo que permite:

  • Mantener la independencia de cada funcionalidad.
  • Asegurar que cada módulo solo tiene las dependencias que realmente necesita.

Beneficios de la arquitectura mixta de módulos

  • Reducción de errores relacionados con monorepos: Al dividir las responsabilidades y dependencias.
  • Tiempos de compilación optimizados: Solo se compilan los módulos modificados.
  • Eliminación de dependencias circulares: Gracias a la clara delimitación de la funcionalidad de cada módulo.

A medida que avanzas en el desarrollo, recuerda que compartir conocimientos y dudas en comunidad fortalece el aprendizaje conjunto. Continúa explorando y optimizando tus arquitecturas de software para alcanzar mayor eficiencia y claridad en tus proyectos. ¡Te animo a seguir aprendiendo y desarrollándote en este apasionante campo!