Este principio del pilar de sustentabilidad del Google Cloud Well-Architected Framework proporciona recomendaciones para ayudarte a optimizar el uso de recursos de tus cargas de trabajo en Google Cloud.
Descripción general del principio
Optimizar el uso de recursos es fundamental para mejorar la sustentabilidad de tu entorno de nube. Cada recurso aprovisionado, desde los ciclos de procesamiento hasta el almacenamiento de datos, afecta directamente el uso de energía, la intensidad del agua y las emisiones de carbono. Para reducir el impacto ambiental de tus cargas de trabajo, debes tomar decisiones informadas cuando aprovisiones, administres y uses recursos de la nube.
Recomendaciones
Para optimizar el uso de recursos, considera las recomendaciones de las siguientes secciones.
Implementa el ajuste de escala automático y dinámico
El ajuste de escala automático y dinámico garantiza que el uso de recursos sea óptimo, lo que ayuda a evitar el desperdicio de energía de la infraestructura inactiva o con aprovisionamiento excesivo. La reducción de la energía desperdiciada se traduce en costos más bajos y menos emisiones de carbono.
Usa las siguientes técnicas para implementar la escalabilidad automática y dinámica.
Usa el escalamiento horizontal
El escalamiento horizontal es la técnica de escalamiento preferida para la mayoría de las aplicaciones centradas en la nube. En lugar de aumentar el tamaño de cada instancia, lo que se conoce como escalamiento vertical, agregas instancias para distribuir la carga. Por ejemplo, puedes usar grupos de instancias administrados (MIG) para escalar horizontalmente un grupo de VMs de Compute Engine. La infraestructura escalada horizontalmente es más resistente porque la falla de una instancia no afecta la disponibilidad de la aplicación. El escalamiento horizontal también es una técnica eficiente en cuanto a recursos para las aplicaciones que tienen niveles de carga variables.
Configura políticas de escalamiento adecuadas
Configura los parámetros de configuración del ajuste de escala automático según los requisitos de tus cargas de trabajo. Define métricas y umbrales personalizados que sean específicos del comportamiento de la aplicación. En lugar de depender únicamente del uso de la CPU, considera métricas como la profundidad de la cola para tareas asíncronas, la latencia de la solicitud y las métricas personalizadas de la aplicación. Para evitar el escalamiento frecuente e innecesario o el aleteo, define políticas de escalamiento claras. Por ejemplo, para las cargas de trabajo que implementas en Google Kubernetes Engine (GKE), configura una política de ajuste de escala automático de clúster adecuada.
Combina el escalamiento reactivo y proactivo
Con el escalamiento reactivo, el sistema se escala en respuesta a los cambios de carga en tiempo real. Esta técnica es adecuada para aplicaciones que tienen picos de carga impredecibles.
El escalamiento proactivo es adecuado para cargas de trabajo con patrones predecibles, como horarios de atención diarios fijos y generación de informes semanales. Para esas cargas de trabajo, usa el ajuste de escala automático programado para aprovisionar previamente los recursos de modo que puedan controlar un nivel de carga previsto. Esta técnica evita la lucha por los recursos y garantiza una experiencia del usuario más fluida con mayor eficiencia. Esta técnica también te ayuda a planificar de forma proactiva los picos de carga conocidos, como los eventos de ventas importantes y los esfuerzos de marketing enfocados.
Google Cloud Los servicios y las funciones administrados, como GKE Autopilot, Cloud Run y los MIG, administran automáticamente el escalamiento proactivo aprendiendo de tus patrones de carga de trabajo. De forma predeterminada, cuando un servicio de Cloud Run no recibe tráfico, se escala a cero instancias.
Diseña aplicaciones sin estado
Para que una aplicación se escale horizontalmente, sus componentes deben ser sin estado. Esto significa que la sesión o los datos de un usuario específico no están vinculados a una sola instancia de procesamiento. Cuando almacenas el estado de la sesión fuera de la instancia de procesamiento, como en Memorystore para Redis, cualquier instancia de procesamiento puede controlar las solicitudes de cualquier usuario. Este enfoque de diseño permite un escalamiento horizontal que es fluido y eficiente.
Usa la programación y los lotes
El procesamiento por lotes es ideal para cargas de trabajo a gran escala que no son urgentes. Los trabajos por lotes pueden ayudarte a optimizar tus cargas de trabajo para la eficiencia energética y el costo.
Usa las siguientes técnicas para implementar la programación y los trabajos por lotes.
Programa para una baja intensidad de carbono
Programa tus trabajos por lotes para que se ejecuten en regiones con bajas emisiones de carbono y durante períodos en los que la red eléctrica local tenga un alto porcentaje de energía limpia. Para identificar los momentos del día con menos intensidad de carbono para una región, usa el informe de Huella de carbono.
Usa VMs Spot para cargas de trabajo no críticas
Las VMs Spot te permiten aprovechar la capacidad sin usar de Compute Engine con un gran descuento. Las VMs Spot se pueden interrumpir, pero proporcionan una forma rentable de procesar grandes conjuntos de datos sin la necesidad de recursos dedicados y siempre activos. Las VMs Spot son ideales para trabajos por lotes no críticos y tolerantes a errores.
Consolida y paraleliza trabajos
Para reducir la sobrecarga de iniciar y cerrar trabajos individuales, agrupa trabajos similares en un solo lote grande. Ejecuta estas cargas de trabajo de gran volumen en servicios como Batch. El servicio aprovisiona y administra automáticamente la infraestructura necesaria, lo que ayuda a garantizar un uso óptimo de los recursos.
Usa servicios administrados
Los servicios administrados, como Batch y Dataflow controlan automáticamente el aprovisionamiento, la programación y la supervisión de recursos. La plataforma de la nube controla la optimización de recursos. Puedes enfocarte en la lógica de la aplicación. Por ejemplo, Dataflow escala automáticamente la cantidad de trabajadores según el volumen de datos en la canalización, por lo que no pagas por los recursos inactivos.
Haz coincidir las familias de máquinas de VM con los requisitos de la carga de trabajo
Los tipos de máquinas que puedes usar para tus VMs de Compute Engine se agrupan en familias de máquinas, que están optimizadas para diferentes cargas de trabajo. Elige las familias de máquinas adecuadas según los requisitos de tus cargas de trabajo.
| Familia de máquinas | Recomendado para tipos de cargas de trabajo | Orientación sobre sustentabilidad |
|---|---|---|
| Instancias de uso general (E2, N2, N4, Tau T2A/T2D): Estas instancias proporcionan una proporción equilibrada de CPU a memoria. | Servidores web, microservicios, bases de datos pequeñas a medianas y entornos de desarrollo. | La serie E2 es muy rentable y eficiente en cuanto a energía debido a su asignación dinámica de recursos. La serie Tau T2A usa procesadores basados en Arm, que suelen ser más eficientes en cuanto a energía por unidad de rendimiento para cargas de trabajo a gran escala. |
| Instancias optimizadas para procesamiento (C2, C3): Estas instancias proporcionan una alta proporción de CPU virtuales a memoria y un alto rendimiento por núcleo. | Computación de alto rendimiento (HPC), procesamiento por lotes, servidores de juegos, y análisis de datos basados en CPU. | Una instancia de la serie C te permite completar tareas con uso intensivo de CPU más rápido, lo que reduce el tiempo total de procesamiento y el consumo de energía del trabajo. |
| Instancias con optimización de memoria (M3, M2): Estas instancias están diseñadas para cargas de trabajo que requieren una gran cantidad de memoria. | Bases de datos y almacenes de datos grandes en memoria, como SAP HANA o análisis en memoria. | Las instancias con optimización de memoria permiten la consolidación de cargas de trabajo con uso intensivo de memoria en menos nodos físicos. Esta consolidación reduce la energía total que se requiere en comparación con el uso de varias instancias más pequeñas. La memoria de alto rendimiento reduce la latencia de acceso a los datos, lo que puede reducir el tiempo total que la CPU pasa en un estado activo estado. |
| Instancias optimizadas para almacenamiento (Z3): Estas instancias proporcionan almacenamiento SSD local de alto rendimiento y baja latencia. | Almacenamiento de datos, análisis de registros y bases de datos SQL, NoSQL y vectoriales. | Las instancias optimizadas para almacenamiento procesan conjuntos de datos masivos de forma local, lo que ayuda a eliminar la energía que se usa para la salida de datos de la red entre ubicaciones. Cuando usas almacenamiento local para tareas de IOPS altas, evitas el aprovisionamiento excesivo de varias instancias estándar. |
| Instancias optimizadas para aceleradores (A3, A2, G2): Estas instancias están diseñadas para cargas de trabajo aceleradas por GPU y TPU, como IA, AA y HPC. | Entrenamiento e inferencia de modelos de AA, y simulaciones científicas. | Las TPU están diseñadas para una eficiencia energética óptima. Proporcionan más cálculos por vatio. Una instancia acelerada por GPU, como la serie A3 con GPUs NVIDIA H100 puede ser mucho más eficiente en cuanto a energía para entrenar modelos grandes que una alternativa solo de CPU. Aunque una instancia acelerada por GPU tiene un uso de energía nominal más alto, la tarea se completa mucho más rápido. |
Actualiza a los tipos de máquinas más recientes
El uso de los tipos de máquinas más recientes puede ayudar a mejorar la sustentabilidad. Cuando se actualizan los tipos de máquinas, suelen diseñarse para ser más eficientes en cuanto a energía y proporcionar un mayor rendimiento por vatio. Las VMs que usan los tipos de máquinas más recientes pueden completar la misma cantidad de trabajo con un menor consumo de energía.
Las CPUs, las GPUs y las TPUs suelen beneficiarse de los avances técnicos en la arquitectura de chips, como los siguientes:
- Núcleos especializados: Los avances en los procesadores suelen incluir núcleos o instrucciones especializados para cargas de trabajo comunes. Por ejemplo, las CPUs pueden tener núcleos dedicados para operaciones vectoriales o aceleradores de IA integrados. Cuando estas tareas se descargan de la CPU principal, se completan de manera más eficiente y consumen menos energía.
- Administración de energía mejorada: Los avances en las arquitecturas de chips suelen incluir funciones de administración de energía más sofisticadas, como el ajuste dinámico del voltaje y la frecuencia según la carga de trabajo. Estas funciones de administración de energía permiten que los chips se ejecuten con la máxima eficiencia y entren en estados de baja potencia cuando están inactivos, lo que minimiza el consumo de energía.
Las mejoras técnicas en la arquitectura de chips proporcionan los siguientes beneficios directos para la sustentabilidad y el costo:
- Mayor rendimiento por vatio: Esta es una métrica clave para la sustentabilidad. Por ejemplo, las VMs C4 demuestran un 40% más de rentabilidad en comparación con las VMs C3 para el mismo consumo de energía. El procesador C4A proporciona un 60% más de eficiencia energética en comparación con los procesadores x86 comparables. Estas capacidades de rendimiento te permiten completar tareas más rápido o usar menos instancias para la misma carga.
- Menor consumo total de energía: Con los procesadores mejorados, los recursos de procesamiento se usan durante un período más corto para una tarea determinada, lo que reduce el uso general de energía y la huella de carbono. El impacto de carbono es particularmente alto para las cargas de trabajo de corta duración y con uso intensivo de procesamiento, como los trabajos por lotes y el entrenamiento de modelos de AA.
- Uso óptimo de recursos: Los tipos de máquinas más recientes suelen ser más adecuados para el software moderno y son más compatibles con las funciones avanzadas de las plataformas de la nube. Por lo general, estos tipos de máquinas permiten un mejor uso de los recursos, lo que reduce la necesidad de aprovisionamiento excesivo y ayuda a garantizar que cada vatio de energía se use de forma productiva.
Implementa aplicaciones en contenedores
Puedes usar servicios completamente administrados basados en contenedores, como GKE y Cloud Run, como parte de tu estrategia para la computación en la nube sustentable. Estos servicios ayudan a optimizar el uso de recursos y automatizar la administración de recursos.
Aprovecha la capacidad de reducción de escala a cero de Cloud Run
Cloud Run proporciona un entorno sin servidores administrado que escala automáticamente las instancias a cero cuando no hay tráfico entrante para un servicio o cuando se completa un trabajo. El ajuste de escala automático ayuda a eliminar el consumo de energía de la infraestructura inactiva. Los recursos solo se activan cuando procesan solicitudes de forma activa. Esta estrategia es muy eficaz para cargas de trabajo intermitentes o basadas en eventos. Para las cargas de trabajo de IA, puedes usar GPUs con Cloud Run, lo que te permite consumir y pagar por las GPUs solo cuando se usan.
Automatiza la optimización de recursos con GKE
GKE es una plataforma de organización de contenedores que garantiza que las aplicaciones usen solo los recursos que necesitan. Para ayudarte a automatizar la optimización de recursos, GKE proporciona las siguientes técnicas:
- Empaquetado en contenedores: GKE Autopilot empaqueta de forma inteligente varios contenedores en los nodos disponibles. El empaquetado en contenedores maximiza el uso de cada nodo y reduce la cantidad de nodos inactivos o infrautilizados, lo que ayuda a reducir el consumo de energía.
- Ajuste de escala automático horizontal de Pods (HPA): Con HPA, la cantidad de réplicas de contenedores (Pods) se ajusta automáticamente en función de métricas predefinidas, como el uso de CPU o métricas personalizadas específicas de la aplicación. Por ejemplo, si tu aplicación experimenta un aumento en el tráfico, GKE agrega Pods para satisfacer la demanda. Cuando disminuye el tráfico, GKE reduce la cantidad de Pods. Este escalamiento dinámico evita el aprovisionamiento excesivo de recursos, por lo que no pagas ni potencias capacidad de procesamiento innecesaria.
- Ajuste de escala automático vertical de Pods (VPA): Puedes configurar GKE para que ajuste automáticamente las asignaciones y los límites de CPU y memoria para contenedores individuales. Esta configuración garantiza que a un contenedor no se le asignen más recursos de los que necesita, lo que ayuda a evitar el aprovisionamiento excesivo de recursos.
- Ajuste de escala automático multidimensional de Pods de GKE: Para cargas de trabajo complejas, puedes configurar HPA y VPA de forma simultánea para optimizar la cantidad de Pods y el tamaño de cada Pod. Esta técnica ayuda a garantizar la menor huella energética posible para el rendimiento requerido.
- Programación con reconocimiento de topología (TAS): TAS mejora la eficiencia de la red para las cargas de trabajo de IA y AA en GKE colocando Pods según la estructura física de la infraestructura del centro de datos. TAS coloca estratégicamente las cargas de trabajo para minimizar los saltos de red. Esta ubicación conjunta ayuda a reducir la latencia de comunicación y el consumo de energía. Al optimizar la alineación física de los nodos y el hardware especializado, TAS acelera la finalización de tareas y maximiza la eficiencia energética de las cargas de trabajo de IA y AA a gran escala.
Configura la programación con reconocimiento de carbono
En Google, cambiamos continuamente nuestras cargas de trabajo a ubicaciones y horarios que proporcionan la electricidad más limpia. También reutilizamos o aprovechamos, equipos más antiguos para casos de uso alternativos. Puedes usar esta estrategia de programación con reconocimiento de carbono para garantizar que tus cargas de trabajo en contenedores usen energía limpia.
Para implementar la programación con reconocimiento de carbono, necesitas información sobre la combinación de energía que alimenta los centros de datos en una región en tiempo real. Puedes obtener esta información en un formato legible por máquina del repositorio Carbon free energy for Google Cloud regions en GitHub o de un conjunto de datos públicos de BigQuery. Los datos de intensidad de carbono y combinación de red por hora que se usan para calcular el conjunto de datos anuales de carbono de Google provienen de Electricity Maps.
Para implementar la programación con reconocimiento de carbono, te recomendamos las siguientes técnicas:
- Cambio geográfico: Programa tus cargas de trabajo para que se ejecuten en regiones que usen una mayor proporción de fuentes de energía renovable. Este enfoque te permite usar redes eléctricas más limpias.
- Cambio temporal: Para cargas de trabajo flexibles y no críticas, como el procesamiento por lotes, configura las cargas de trabajo para que se ejecuten durante las horas de menor actividad o cuando la energía renovable sea más abundante. Este enfoque se conoce como cambio temporal y ayuda a reducir la huella de carbono general aprovechando las fuentes de energía más limpias cuando están disponibles.
Diseña una recuperación ante desastres eficiente en cuanto a energía
La preparación para la recuperación ante desastres (DR) suele implicar el aprovisionamiento previo de recursos redundantes en una región secundaria. Sin embargo, los recursos inactivos o infrautilizados pueden causar un desperdicio de energía significativo. Elige estrategias de DR que maximicen el uso de recursos y minimicen el impacto de carbono sin comprometer tus objetivos de tiempo de recuperación (RTO).
Optimiza para la eficiencia del inicio en frío
Usa los siguientes enfoques para minimizar o eliminar los recursos activos en tu región secundaria (DR):
- Prioriza la DR en frío: Mantén los recursos en la región de DR apagados o en un estado de reducción de escala a cero. Este enfoque ayuda a eliminar la huella de carbono de los recursos de procesamiento inactivos.
- Aprovecha la conmutación por error sin servidores: Usa servicios administrados sin servidores como Cloud Run para los extremos de DR. Cloud Run se reduce a cero cuando no está en uso, por lo que puedes mantener una topología de DR que no consuma energía hasta que el tráfico se desvíe a la región de DR.
- Automatiza la recuperación con la infraestructura como código (IaC): En lugar de mantener los recursos en el sitio de DR en ejecución (en caliente), usa una herramienta de IaC como Terraform para aprovisionar rápidamente los entornos solo cuando sea necesario.
Equilibra la redundancia y el uso
La redundancia de recursos es un factor principal del desperdicio de energía. Para reducir la redundancia, usa los siguientes enfoques:
- Prefiere la configuración activo-activo en lugar de activo-pasivo: En una configuración activo-pasivo, los recursos del sitio pasivo están inactivos, lo que genera un desperdicio de energía. Una arquitectura activo-activo con un tamaño óptimo garantiza que todos los recursos aprovisionados en ambas regiones entreguen tráfico de forma activa. Este enfoque te ayuda a maximizar la eficiencia energética de tu infraestructura.
- Redimensiona la redundancia: Replica datos y servicios en las regiones solo cuando la replicación sea necesaria para cumplir con los requisitos de alta disponibilidad o DR. Cada réplica adicional aumenta el costo de energía del almacenamiento persistente y la salida de red.