Promueve el diseño modular

Last reviewed 2026-10-22 UTC

Este principio del pilar de optimización del rendimiento del Well-Architected FrameworkGoogle Cloud proporciona recomendaciones para ayudarte a promover un diseño modular. Los componentes modulares y las interfaces claras pueden permitir un escalamiento flexible, actualizaciones independientes y una separación futura de los componentes.

Descripción general del principio

Comprender las dependencias entre los componentes de la aplicación y los componentes del sistema para diseñar un sistema escalable

El diseño modular permite la flexibilidad y la resiliencia, sin importar si se implementó inicialmente una arquitectura monolítica o de microservicios. Si descompones el sistema en módulos independientes y bien definidos con interfaces claras, puedes escalar componentes individuales para satisfacer demandas específicas.

El escalamiento segmentado puede ayudar a optimizar el uso de los recursos y reducir los costos de las siguientes maneras:

  • Aprovisiona solo los recursos necesarios para cada componente y asigna menos recursos a los componentes menos exigentes.
  • Agrega más recursos durante los períodos de tráfico alto para mantener la experiencia del usuario.
  • Quita los recursos poco utilizados sin comprometer el rendimiento.

La modularidad también mejora la capacidad de mantenimiento. Las unidades más pequeñas y autónomas son más fáciles de comprender, depurar y actualizar, lo que puede generar ciclos de desarrollo más rápidos y un menor riesgo.

Si bien la modularidad ofrece ventajas significativas, debes evaluar las posibles compensaciones de rendimiento. El aumento de la comunicación entre módulos puede generar latencia y sobrecarga. Esfuérzate por lograr un equilibrio entre la modularidad y el rendimiento. Un diseño altamente modular podría no ser adecuado para todos los casos. Cuando el rendimiento es fundamental, un enfoque con un acoplamiento más alto puede ser adecuado. El diseño del sistema es un proceso iterativo, en el que revisas y perfeccionas continuamente tu diseño modular.

Recomendaciones

Para promover diseños modulares, ten en cuenta las recomendaciones de las siguientes secciones.

Diseña para el acoplamiento bajo

Diseña una arquitectura con acoplamiento bajo. Los componentes independientes con dependencias mínimas pueden ayudarte a compilar aplicaciones escalables y resilientes. Cuando planifiques los límites de tus servicios, debes tener en cuenta los requisitos de disponibilidad y escalabilidad. Por ejemplo, si un componente tiene requisitos que son diferentes de los de tus otros componentes, puedes diseñarlo como un servicio independiente. Implementa un plan para fallas controladas en subprocesos o servicios menos importantes que no afecten el tiempo de respuesta de los servicios principales.

Diseña para la simultaneidad y el paralelismo

Diseña tu aplicación para que admita varias tareas de forma simultánea, como procesar varias solicitudes de usuarios o ejecutar trabajos en segundo plano mientras los usuarios interactúan con tu sistema. Divide las tareas grandes en partes más pequeñas que varias instancias de servicio puedan procesar al mismo tiempo. La simultaneidad de tareas te permite usar funciones como el ajuste de escala automático para aumentar la asignación de recursos en productos como los siguientes:

Equilibra la modularidad para una asignación de recursos flexible

Cuando sea posible, asegúrate de que cada componente use solo los recursos necesarios (como memoria, almacenamiento y potencia de procesamiento) para operaciones específicas. La asignación excesiva de recursos puede generar costos innecesarios, mientras que la asignación insuficiente puede comprometer el rendimiento.

Usa interfaces bien definidas

Asegúrate de que los componentes modulares se comuniquen de forma eficaz a través de interfaces claras y estandarizadas (como APIs y colas de mensajes) para reducir la sobrecarga de las capas de traducción o del tráfico externo.

Usa modelos sin estado

Un modelo sin estado puede ayudar a garantizar que puedas controlar cada solicitud o interacción con el servicio de forma independiente de las solicitudes anteriores. Este modelo facilita la escalabilidad y la capacidad de recuperación, ya que puedes aumentar, reducir o reiniciar el servicio sin perder los datos necesarios para las solicitudes o los procesos en curso.

Elige tecnologías complementarias

Elige tecnologías que complementen el diseño modular. Evalúa los lenguajes de programación, los frameworks y las bases de datos para determinar su compatibilidad con la modularidad.

Para obtener más información, consulta los siguientes recursos: