Promocionar el diseño modular

Last reviewed 2024-12-06 UTC

Este principio del pilar de optimización del rendimiento del Google Cloud framework Well-Architected proporciona recomendaciones para ayudarte a promover un diseño modular. Los componentes modulares y las interfaces claras pueden permitir un escalado flexible, actualizaciones independientes y la separación de componentes en el futuro.

Descripción general de los principios

Conocer 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 disfrutar de flexibilidad y resiliencia, independientemente de si se ha implementado inicialmente una arquitectura monolítica o de microservicios. Al descomponer el sistema en módulos independientes y bien definidos con interfaces claras, puedes escalar componentes individuales para satisfacer demandas específicas.

El escalado segmentado puede ayudar a optimizar el uso de los recursos y reducir los costes de las siguientes formas:

  • Solo proporciona los recursos necesarios a cada componente y asigna menos recursos a los componentes que requieren menos.
  • Añade más recursos durante los periodos de mucho tráfico para mantener la experiencia de usuario.
  • Elimina los recursos infrautilizados sin que el rendimiento se vea afectado.

La modularidad también mejora el mantenimiento. Las unidades más pequeñas e independientes son más fáciles de entender, depurar y actualizar, lo que puede dar lugar a ciclos de desarrollo más rápidos y a una reducción del riesgo.

Aunque la modularidad ofrece ventajas significativas, debes evaluar las posibles concesiones en cuanto al rendimiento. El aumento de la comunicación entre módulos puede introducir latencia y sobrecarga. Busca un equilibrio entre la modularidad y el rendimiento. Un diseño muy modular puede no ser adecuado para todos los casos. Cuando el rendimiento es fundamental, puede ser adecuado un enfoque más acoplado. El diseño del sistema es un proceso iterativo en el que revisas y perfeccionas continuamente tu diseño modular.

Recomendaciones

Para fomentar los diseños modulares, tenga en cuenta las recomendaciones de las siguientes secciones.

Diseñar con bajo acoplamiento

Diseña una arquitectura con bajo acoplamiento. Los componentes independientes con dependencias mínimas pueden ayudarte a crear aplicaciones escalables y resilientes. Al planificar los límites de tus servicios, debes tener en cuenta los requisitos de disponibilidad y escalabilidad. Por ejemplo, si un componente tiene requisitos diferentes a los de los demás, puedes diseñarlo como un servicio independiente. Implementa un plan para que los subprocesos o servicios menos importantes fallen de forma controlada y no afecten al tiempo de respuesta de los servicios principales.

Diseñar para la simultaneidad y el paralelismo

Diseña tu aplicación para que admita varias tareas simultáneamente, 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 fragmentos más pequeños que puedan procesarse al mismo tiempo en varias instancias de servicio. La simultaneidad de tareas te permite usar funciones como el autoescalado para aumentar la asignación de recursos en productos como los siguientes:

Equilibra la modularidad para asignar recursos de forma flexible

Siempre que sea posible, asegúrate de que cada componente use solo los recursos necesarios (como memoria, almacenamiento y potencia de procesamiento) para operaciones específicas. Si se asignan demasiados recursos, se pueden generar costes innecesarios, mientras que, si se asignan pocos, se puede poner en riesgo el rendimiento.

Usar interfaces bien definidas

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

Usar modelos sin estado

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

Elegir 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 comprobar si admiten la modularidad.

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