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 según los cambios en los requisitos de la carga de trabajo.
La elasticidad permite que diferentes componentes de un sistema escalen de forma independiente. Este escalamiento segmentado puede ayudar a mejorar el rendimiento y la rentabilidad, ya que asigna recursos exactamente donde se necesitan, sin aprovisionar en exceso o de forma insuficiente tus recursos.
Descripción general del principio
Los requisitos de rendimiento de un sistema influyen directamente en cuándo y cómo el sistema escala de forma vertical o de forma horizontal. Debes evaluar la capacidad del sistema y determinar la carga que se espera que maneje en el modelo de referencia. Luego, debes determinar cómo quieres que el sistema responda a los aumentos y las disminuciones en la carga.
Cuando la carga aumenta, el sistema debe escalar horizontalmente, escalar verticalmente o ambas opciones. 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 la carga disminuye, el sistema debe reducir la escala (horizontal, vertical o ambas).
Define las circunstancias en las que el sistema aumenta o disminuye la escala. Planifica el escalamiento vertical manual de los sistemas para períodos conocidos de tráfico alto. Usa herramientas como el ajuste de escala automático, que responde a los aumentos o las disminuciones de la carga.
Recomendaciones
Para aprovechar la elasticidad, ten en cuenta 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 los períodos esperados de mayor demanda de los clientes.
Considera escalar verticalmente 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 ofertas de temporada. Te recomendamos que escales vertical u horizontalmente 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 de inmediato los límites existentes. 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 con la rapidez suficiente 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 que se basa en métricas. Estas métricas pueden incluir el uso de CPU, la capacidad de entrega del balanceador de cargas, la latencia y, también, las 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 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 ayuda a garantizar que el uso promedio de la CPU se mantenga en una tasa óptima 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 se necesitan.
Planifica las reservas de ranuras de recursos en BigQuery o ajusta los límites de las configuraciones de escalado 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 los cambios de carga más recientes. Sin el ajuste de escala automático predictivo, un escalador automático solo puede ajustar la escala de un grupo de forma reactiva, según 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 a la 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 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 las aplicaciones y configura las actualizaciones y reparaciones automáticas.