Este principio del pilar de optimización del rendimiento del framework de arquitectura de Google Cloud 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 diferentes componentes de un sistema se escalen de forma independiente. Esta escalabilidad segmentada puede ayudar a mejorar el rendimiento y la eficiencia de costos, ya que asigna recursos con precisión donde se necesitan, sin sobreaprovisionar ni subaprovisionar los recursos.
Descripción general de los principios
Los requisitos de rendimiento de un sistema influyen directamente en cuándo y cómo el sistema se escala verticalmente o horizontalmente. 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 deseas que el sistema responda a los aumentos y disminuciones de 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 asegurarte de que el sistema tenga suficiente capacidad general para satisfacer la demanda creciente. Para la escalabilidad 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 escalar manualmente los sistemas para los períodos conocidos de alto tráfico. Usa herramientas como el ajuste de escala automático, que responde a los aumentos o 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 eventos conocidos, como los períodos esperados de mayor demanda de los clientes.
Considera aumentar la escala de tu sistema antes de los períodos conocidos de alto tráfico. 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 manualmente la escala de tus sistemas antes de esas ventas para asegurarte de que tu sistema pueda controlar de inmediato la carga incrementada o ajustar de inmediato los límites existentes. De lo contrario, el sistema podría tardar varios minutos en añadir recursos en respuesta a 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.
En el caso de eventos desconocidos o inesperados, como un aumento repentino de 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 y hasta 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 requiere que cada instancia funcione de manera óptima hasta que el uso promedio de la CPU alcance el 75%. En este ejemplo, podrías definir una política de ajuste de escala automático que cree más instancias cuando el uso de CPU alcance el límite. Estas instancias recién creadas ayudan a absorber la carga, lo que garantiza que el uso promedio de la 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 se necesitan.
Planifica reservas de ranuras de recursos en BigQuery o ajusta los límites de 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 con 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 usar 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.