Aprovecha la elasticidad

Last reviewed 2024-12-06 UTC

Este principio del pilar de optimización del rendimiento del Google Cloud framework de Well-Architected proporciona recomendaciones para ayudarte a incorporar la elasticidad, que es la capacidad de ajustar los recursos de forma dinámica según los cambios en los requisitos de la carga de trabajo.

La elasticidad permite que los diferentes componentes de un sistema se ajusten de forma independiente. Este ajuste de escala segmentado puede ayudar a mejorar el rendimiento y la eficiencia de los costos, ya que asigna recursos exactamente donde se necesitan, sin sobreaprovisionar ni subaprovisionar tus recursos.

Descripción general del principio

Los requisitos de rendimiento de un sistema influyen directamente en cuándo y cómo se escala vertical u horizontalmente. Debes evaluar la capacidad del sistema y determinar la carga que se espera que maneje el sistema en el valor de referencia. Luego, debes determinar cómo quieres que el sistema responda a los aumentos y las disminuciones en la carga.

Cuando aumenta la carga, el sistema debe escalar horizontalmente, escalar verticalmente o ambas. Para el escalamiento horizontal, agrega nodos de réplica para garantizar que el sistema tenga suficiente capacidad general para satisfacer la mayor demanda. Para el escalamiento vertical, reemplaza los componentes existentes de la aplicación por componentes que contengan más capacidad, más memoria y más almacenamiento.

Cuando la carga disminuye, el sistema debe reducir su escala (horizontal, vertical o ambas).

Define las circunstancias en las que el sistema aumenta o disminuye su escala. Planifica el aumento manual de la capacidad de los sistemas para los períodos conocidos de tráfico alto. Usa herramientas como el ajuste de escala automático, que responde a los aumentos o las disminuciones en la carga.

Recomendaciones

Para aprovechar la elasticidad, ten en cuenta las recomendaciones de las siguientes secciones.

Planifica los períodos de carga máxima

Debes planificar una ruta de escalamiento eficiente para los eventos conocidos, como los períodos esperados de mayor demanda de los clientes.

Considera escalar tu sistema antes de los períodos conocidos de tráfico alto. Por ejemplo, si eres una organización de venta minorista, esperas que la demanda aumente durante las ventas de temporada. Te recomendamos que aumentes o disminuyas la capacidad de tus sistemas de forma manual antes de esas ventas para asegurarte de que tu sistema pueda controlar de inmediato el aumento de la carga o ajustar los límites existentes de inmediato. De lo contrario, el sistema podría tardar varios minutos en agregar recursos en respuesta a los cambios en tiempo real. Es posible que la capacidad de tu aplicación no aumente lo suficientemente rápido y que algunos usuarios experimenten demoras.

Para los eventos desconocidos o inesperados, como un aumento repentino en la demanda o el tráfico, puedes usar las funciones de ajuste de escala automático para activar el ajuste de escala elástico basado en métricas. Estas métricas pueden incluir el uso de CPU, la capacidad de entrega del balanceador de cargas, la latencia y hasta métricas personalizadas que definas en Cloud Monitoring.

Por ejemplo, considera una aplicación que se ejecuta en un grupo de instancias administrado (MIG) de Compute Engine. Esta aplicación tiene el requisito de que cada instancia funcione de manera óptima hasta que el uso promedio de la CPU alcance el 75%. En este ejemplo, puedes definir una política de ajuste de escala automático que cree más instancias cuando el uso de CPU alcance el umbral. Estas instancias recién creadas ayudan a absorber la carga, lo que garantiza que el uso promedio de la CPU se mantenga en un nivel óptimo hasta que se alcance la cantidad máxima de instancias que configuraste para el MIG. Cuando la demanda disminuye, la política de ajuste de escala automático quita las instancias que ya no son necesarias.

Planifica las reservas de ranuras de recursos en BigQuery o ajusta los límites para las configuraciones de ajuste de escala automático en Spanner con el ajustador de escala automático administrado.

Usa el ajuste de escala predictivo

Si los componentes de tu sistema incluyen Compute Engine, debes evaluar si el ajuste de escala automático predictivo es adecuado para tu carga de trabajo. El ajuste de escala automático predictivo prevé la carga futura en función de las tendencias históricas de tus métricas, por ejemplo, el uso de CPU. Las previsiones se vuelven a calcular cada pocos minutos, por lo que el escalador automático adapta rápidamente su previsión a cambios muy recientes en la carga. Sin el ajuste de escala automático predictivo, un escalador automático solo puede escalar de manera reactiva un grupo en función de los cambios observados en tiempo real en la carga. El ajuste de escala automático predictivo funciona con datos en tiempo real y datos históricos para responder a la carga actual y prevista.

Implementa arquitecturas sin servidores

Considera implementar una arquitectura sin servidores con servicios sin servidores que sean inherentemente elásticos, como los siguientes:

A diferencia del ajuste de escala automático en otros servicios que requieren reglas de ajuste (por ejemplo, Compute Engine), el ajuste de escala automático sin servidores es instantáneo y puede reducirse a cero recursos.

Usa el modo Autopilot para Kubernetes

Para aplicaciones complejas que requieren un mayor control sobre Kubernetes, considera el modo Autopilot en Google Kubernetes Engine (GKE). El modo Autopilot proporciona automatización y escalabilidad de forma predeterminada. GKE escala automáticamente los nodos y los recursos en función del tráfico. GKE administra los nodos, crea nodos nuevos para tus aplicaciones y configura las actualizaciones y reparaciones automáticas.