Este principio del pilar de optimización del rendimiento del Google Cloud marco de trabajo Well-Architected proporciona recomendaciones para ayudarle 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 distintos componentes de un sistema se escalen de forma independiente. Este escalado específico puede ayudarte a mejorar el rendimiento y la eficiencia de los costes, ya que asigna los recursos exactamente donde se necesitan, sin sobreaprovisionar ni infraprovisionar los recursos.
Descripción general de los principios
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 gestione en condiciones normales. A continuación, debes determinar cómo quieres que responda el sistema a los aumentos y las disminuciones de la carga.
Cuando aumenta la carga, el sistema debe escalar horizontalmente, verticalmente o ambas. Para el escalado horizontal, añade nodos de réplica para asegurarte de que el sistema tiene capacidad general suficiente para satisfacer el aumento de la demanda. Para escalar verticalmente, sustituye los componentes de la aplicación por otros que tengan más capacidad, más memoria y más almacenamiento.
Cuando la carga disminuya, el sistema debe reducir la escala (horizontal, vertical o ambas).
Define las circunstancias en las que el sistema aumenta o reduce la escala. Planifica el escalado vertical manual de los sistemas en los periodos de tráfico alto conocidos. Usa herramientas como el autoescalado, que responde a los aumentos o las disminuciones de la carga.
Recomendaciones
Para aprovechar la elasticidad, consulta las recomendaciones de las siguientes secciones.
Planificar los periodos de carga máxima
Debes planificar una ruta de escalado eficiente para eventos conocidos, como los periodos en los que se espera un aumento de la demanda de los clientes.
Te recomendamos que aumentes la capacidad de tu sistema antes de los periodos de tráfico alto. Por ejemplo, si eres una empresa del sector retail, es probable que la demanda aumente durante las rebajas de temporada. Te recomendamos que aumentes la capacidad de tus sistemas manualmente antes de esas rebajas para asegurarte de que puedan gestionar inmediatamente el aumento de la carga o ajustar los límites actuales. De lo contrario, el sistema puede tardar varios minutos en añadir 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 retrasos.
En el caso de eventos desconocidos o inesperados, como un aumento repentino de la demanda o del tráfico, puede usar las funciones de escalado automático para activar el escalado elástico basado en métricas. Estas métricas pueden incluir la utilización de la CPU, la capacidad de servicio del balanceador de carga, la latencia e incluso métricas personalizadas que definas en Cloud Monitoring.
Por ejemplo, imagina una aplicación que se ejecuta en un grupo de instancias gestionado (MIG) de Compute Engine. Esta aplicación tiene el requisito de que cada instancia funcione de forma óptima hasta que la utilización media de la CPU alcance el 75%. En este ejemplo, puedes definir una política de autoescalado que cree más instancias cuando la utilización de la CPU alcance el umbral. Estas instancias recién creadas ayudan a absorber la carga, lo que asegura que la utilización media de la CPU se mantenga a un ritmo óptimo hasta que se alcance el número máximo de instancias que hayas configurado para el MIG. Cuando la demanda disminuye, la política de autoescalado elimina las instancias que ya no son necesarias.
Planifica reservas de ranuras de recursos en BigQuery o ajusta los límites de las configuraciones de escalado automático en Spanner mediante el escalador automático gestionado.
Usar el escalado predictivo
Si los componentes de tu sistema incluyen Compute Engine, debes evaluar si el escalado automático predictivo es adecuado para tu carga de trabajo. El autoescalado predictivo pronostica 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 autoescalado predictivo, una herramienta de adaptación dinámica solo puede escalar un grupo de forma reactiva, en función de los cambios en tiempo real observados en la carga. El escalado automático predictivo funciona con datos en tiempo real y datos históricos para responder a la carga actual y a la prevista.
Implementar arquitecturas sin servidor
Considera la posibilidad de implementar una arquitectura sin servidor con servicios sin servidor que sean inherentemente elásticos, como los siguientes:
A diferencia del autoescalado de otros servicios que requieren reglas de ajuste (por ejemplo, Compute Engine), el autoescalado sin servidor es instantáneo y se puede reducir verticalmente a cero recursos.
Usar el modo Autopilot para Kubernetes
Si tienes aplicaciones complejas que requieren un mayor control sobre Kubernetes, te recomendamos que uses el modo Autopilot de Google Kubernetes Engine (GKE). El modo Autopiloto ofrece automatización y escalabilidad de forma predeterminada. GKE escala automáticamente los nodos y los recursos en función del tráfico. GKE gestiona los nodos, crea nodos para tus aplicaciones y configura las actualizaciones y reparaciones automáticas.