Aprovecha la elasticidad

Last reviewed 2024-12-06 UTC

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

La elasticidad permite que los diferentes componentes de un sistema se escalen de forma independiente. Este escalamiento específico puede ayudar a mejorar el rendimiento y la eficiencia de los costos mediante la asignación de recursos precisamente donde se necesitan, sin un aprovisionamiento excesivo o insuficiente de tus recursos.

Descripción general del principio

Los requisitos de rendimiento de un sistema influyen directamente en cuándo y cómo el sistema se escala verticalmente o de forma horizontal. Debes evaluar la capacidad del sistema y determinar la carga que se espera que controle el sistema en la línea de base. 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 ambos. Para el escalamiento horizontal, agrega nodos de réplica para asegurarte de 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 disminuye la carga, el sistema debe reducir la escala (horizontal, vertical o ambas).

Define las circunstancias en las que el sistema aumenta o disminuye la escala. Planifica aumentar la escala de los sistemas de forma manual 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, considera las recomendaciones de las siguientes secciones.

Planifica para los períodos de carga máxima

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

Considera aumentar la escala de tu sistema antes de los períodos conocidos de tráfico alto. Por ejemplo, si eres una organización de comercio minorista, esperas que la demanda aumente durante las ventas de temporada. Te recomendamos que escales verticalmente o escales horizontalmente tus sistemas de forma manual antes de esas ventas para asegurarte de que tu sistema pueda controlar de inmediato el aumento de carga o ajustar de inmediato los límites existentes. De lo contrario, es posible que el sistema tarde 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 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 escalamiento 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 e incluso las métricas personalizadas que definas en Cloud Monitoring.

Por ejemplo, considera una aplicación que se ejecuta en un Compute Engine grupo de instancias administrado (MIG). Esta aplicación tiene el requisito de que cada instancia funcione de manera óptima hasta que el uso promedio de 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 CPU permanezca en una tasa óptima hasta que se alcance la cantidad máxima de instancias que configuraste para el MIG. Cuando disminuye la demanda, la política de ajuste de escala automático quita las instancias que ya no son necesarias.

Plan 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 escalador automático administrado.

Usa el escalamiento 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. El escalado 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 escalado automático en otros servicios que requieren reglas de ajuste (por ejemplo, Compute Engine), el escalado automático sin servidores es instantáneo y puede reducir la escala verticalmente a cero recursos.

Usa el modo Autopilot para Kubernetes

Para las 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.