Este principio del pilar de optimización de costos del Well-Architected Framework deGoogle Cloud proporciona recomendaciones para ayudarte a planificar y aprovisionar recursos que cumplan con los requisitos y los patrones de consumo de tus cargas de trabajo en la nube.
Descripción general del principio
Para optimizar el costo de tus recursos de nube, debes comprender por completo los requisitos de recursos y los patrones de carga de tus cargas de trabajo. Esta comprensión es la base de un modelo de costos bien definido que te permite prever el costo total de propiedad (TCO) y, además, identificar los generadores de costos durante tu recorrido de adopción de la nube. Si analizas y prevés de forma proactiva la inversión en la nube, puedes tomar decisiones fundamentadas sobre el aprovisionamiento, el uso y la optimización de costos de los recursos. Este enfoque te permite controlar el gasto en la nube, evitar el aprovisionamiento excesivo y garantizar que los recursos de la nube estén alineados con las necesidades dinámicas de tus cargas de trabajo y entornos.
Recomendaciones
Para optimizar de manera eficaz el uso de los recursos de la nube, ten en cuenta las siguientes recomendaciones.
Elige recursos específicos del entorno
Cada entorno de implementación tiene diferentes requisitos de disponibilidad, confiabilidad y escalabilidad. Por ejemplo, los desarrolladores pueden preferir un entorno que les permita implementar y ejecutar aplicaciones con rapidez durante períodos breves, pero es posible que no necesiten alta disponibilidad. Por otro lado, un entorno de producción suele necesitar alta disponibilidad. Para maximizar el uso de tus recursos, define requisitos específicos del entorno según las necesidades de tu empresa. Los siguientes son ejemplos de requisitos específicos del entorno:
- Producción: Alta disponibilidad, rendimiento predecible, estabilidad operativa y seguridad con recursos sólidos.
- Desarrollo y pruebas: Eficiencia de costos, infraestructura flexible con capacidad de aumento de actividad e infraestructura efímera cuando no es necesaria la persistencia de los datos.
- Otros entornos (como etapa de pruebas y QA): Asignación de recursos personalizada según los requisitos específicos del entorno.
Elige recursos específicos para la carga de trabajo
Cada una de tus cargas de trabajo de nube puede tener diferentes requisitos de disponibilidad, escalabilidad, seguridad y rendimiento. Para optimizar los costos, debes alinear las opciones de recursos con los requisitos específicos de cada carga de trabajo. Por ejemplo, una aplicación sin estado podría no requerir el mismo nivel de disponibilidad o confiabilidad que un backend con estado. En los siguientes apartados, se proporcionan más ejemplos de requisitos específicos de la carga de trabajo.
Cargas de trabajo fundamentales
- Requisitos de carga de trabajo: Disponibilidad continua, seguridad sólida y alto rendimiento.
- Opciones de recursos: Recursos premium y servicios administrados, como Spanner, para alta disponibilidad y coherencia global de los datos.
Cargas de trabajo no esenciales
- Requisitos de la carga de trabajo: Infraestructura rentable y con ajuste de escala automático.
- Opciones de recursos: Recursos con funciones básicas y recursos efímeros, como las VMs Spot.
Cargas de trabajo controladas por eventos
- Requisitos de carga de trabajo: Escalado dinámico según la demanda actual de capacidad y rendimiento.
- Opciones de recursos: Servicios sin servidores, como Cloud Run y Cloud Run Functions.
Cargas de trabajo experimentales
- Requisitos de la carga de trabajo: Entorno flexible y de bajo costo para el desarrollo, la iteración, las pruebas y la innovación rápidos.
- Opciones de recursos: Recursos con funciones básicas, recursos efímeros, como VMs Spot, y entornos de zona de pruebas con límites de inversión definidos.
Un beneficio de la nube es la oportunidad de aprovechar la potencia de procesamiento más adecuada para una carga de trabajo determinada. Algunas cargas de trabajo se desarrollan para aprovechar los conjuntos de instrucciones del procesador, y otras podrían no estar diseñadas de esta manera. Compara y perfila tus cargas de trabajo según corresponda. Categoriza tus cargas de trabajo y elige recursos específicos para cada una (por ejemplo, elige las familias de máquinas adecuadas para las VMs de Compute Engine). Esta práctica ayuda a optimizar los costos, habilitar la innovación y mantener el nivel de disponibilidad y rendimiento que necesitan tus cargas de trabajo.
A continuación, se muestran ejemplos de cómo puedes implementar esta recomendación:
- Para las cargas de trabajo fundamentales que prestan servicios a usuarios distribuidos de forma global, considera usar Spanner. Spanner elimina la necesidad de realizar implementaciones de bases de datos complejas, ya que garantiza la confiabilidad y la coherencia de los datos en todas las regiones.
- Para las cargas de trabajo con niveles de carga fluctuantes, usa el ajuste de escala automático para asegurarte de no incurrir en costos cuando la carga sea baja y, al mismo tiempo, mantener la capacidad suficiente para satisfacer la carga actual. Puedes configurar el ajuste de escala automático para muchos servicios deGoogle Cloud , incluidas las VMs de Compute Engine, los clústeres de Google Kubernetes Engine (GKE) y Cloud Run. Cuando configuras el ajuste de escala automático, puedes establecer límites máximos de escalamiento para garantizar que los costos se mantengan dentro de los presupuestos especificados.
Selecciona las regiones según los requisitos de costo
Para tus cargas de trabajo en la nube, evalúa con cuidado las regiones de Google Cloud disponibles y elige las que se alineen con tus objetivos de costos. Es posible que la región con el costo más bajo no ofrezca una latencia óptima o que no cumpla con tus requisitos de sustentabilidad. Toma decisiones fundamentadas sobre dónde implementar tus cargas de trabajo para lograr el equilibrio deseado. Puedes usar el selector de regiones deGoogle Cloud para comprender las compensaciones entre el costo, la sustentabilidad, la latencia y otros factores.
Usa las opciones integradas de optimización de costos
Los productos deGoogle Cloud proporcionan funciones integradas para ayudarte a optimizar el uso de recursos y controlar los costos. Los siguientes son ejemplos de funciones de optimización de costos que puedes usar en algunos productos de Google Cloud :
- Compute Engine
- Agrega o quita VMs de forma automática según la carga actual con el ajuste de escala automático.
- Evita el aprovisionamiento excesivo creando y usando tipos personalizados de máquinas que coincidan con los requisitos de tu carga de trabajo.
- Para cargas de trabajo no críticas o tolerantes a errores, reduce los costos con VMs Spot.
- En entornos de desarrollo, reduce los costos limitando el tiempo de ejecución de las VMs o suspendiendo o deteniendo las VMs cuando no las necesites.
- GKE
- Ajusta automáticamente el tamaño de los clústeres de GKE según la carga actual con el escalador automático de clústeres.
- Crea y administra automáticamente grupos de nodos según los requisitos de la carga de trabajo y garantiza el uso óptimo de los recursos con el aprovisionamiento automático de nodos.
- Cloud Storage
- Realiza la transición automática de los datos a clases de almacenamiento de menor costo según la antigüedad de los datos o según los patrones de acceso con la Administración del ciclo de vida de los objetos.
- Mueve datos de forma dinámica a la clase de almacenamiento más rentable según los patrones de uso con Autoclass.
- BigQuery
- Reduce los costos de procesamiento de consultas para las cargas de trabajo de estado estable con los precios basados en la capacidad.
- Optimizar el rendimiento y los costos de las consultas con técnicas de partición y agrupamiento en clústeres
- Google Cloud VMware Engine
- Reduce los costos de VMware con estrategias de optimización de costos, como los CUD, la optimización del consumo de almacenamiento y el ajuste del tamaño de los clústeres de ESXi.
Optimiza el uso compartido de recursos
Para maximizar el uso de los recursos de la nube, puedes implementar varias aplicaciones o servicios en la misma infraestructura y, al mismo tiempo, cumplir con los requisitos de seguridad y de otro tipo de las aplicaciones. Por ejemplo, en los entornos de desarrollo y pruebas, puedes usar la misma infraestructura de nube para probar todos los componentes de una aplicación. En el entorno de producción, puedes implementar cada componente en un conjunto de recursos independiente para limitar el alcance del impacto en caso de incidentes.
A continuación, se muestran ejemplos de cómo puedes implementar esta recomendación:
- Usa una sola instancia de Cloud SQL para varios entornos que no sean de producción.
- Permite que varios equipos de desarrollo compartan un clúster de GKE con la función de administración de equipos de flotas en GKE con los controles de acceso adecuados.
- Usa GKE Autopilot para aprovechar las técnicas de optimización de costos, como el empaquetado en contenedores y el ajuste de escala automático, que GKE implementa de forma predeterminada.
- Para las cargas de trabajo de IA y AA, ahorra costos de GPU con estrategias de uso compartido de GPU, como GPU de instancias múltiples, GPU de tiempo compartido y NVIDIA MPS.
Desarrollar y mantener arquitecturas de referencia
Crea y mantén un repositorio de arquitecturas de referencia que se adapten para cumplir con los requisitos de diferentes entornos de implementación y tipos de cargas de trabajo. Para optimizar el proceso de diseño y de implementación de proyectos individuales, un equipo, como un centro de excelencia para la nube (CCoE), puede administrar los planos de forma centralizada. Los equipos de proyectos pueden elegir planos adecuados según criterios definidos con claridad para garantizar la coherencia de la arquitectura y la adopción de las prácticas recomendadas. Para los requisitos que son exclusivos de un proyecto, el equipo del proyecto y el equipo de arquitectura central deben colaborar para diseñar nuevas arquitecturas de referencia. Puedes compartir las arquitecturas de referencia en toda la organización para fomentar el intercambio de conocimientos y expandir el repositorio de soluciones disponibles. Este enfoque garantiza la coherencia, acelera el desarrollo, simplifica la toma de decisiones y promueve el uso eficiente de los recursos.
Revisa las arquitecturas de referencia que proporciona Google para varios casos de uso y tecnologías. Estas arquitecturas de referencia incorporan prácticas recomendadas para la selección, el dimensionamiento, la configuración y la implementación de recursos. Con estas arquitecturas de referencia, puedes acelerar el proceso de desarrollo y lograr ahorros desde el principio.
Aplica la disciplina de costos con las políticas de la organización
Considera usar políticas de la organización para limitar las ubicaciones y los productos de Google Cloud disponibles que los miembros del equipo pueden usar. Estas políticas ayudan a garantizar que los equipos se adhieran a soluciones rentables y aprovisionen recursos en ubicaciones que se alineen con tus objetivos de optimización de costos.
Estimar presupuestos realistas y establecer límites financieros
Desarrolla presupuestos detallados para cada proyecto, carga de trabajo y entorno de implementación. Asegúrate de que los presupuestos cubran todos los aspectos de las operaciones en la nube, incluidos los costos de infraestructura, las licencias de software, el personal y el crecimiento previsto. Para evitar gastos excesivos y garantizar la alineación con tus objetivos financieros, establece límites o umbrales de inversión claros para proyectos, servicios o recursos específicos. Supervisa los gastos en la nube con regularidad en función de estos límites. Puedes usar alertas de cuota proactivas para identificar posibles excesos de costos de forma anticipada y tomar medidas correctivas oportunas.
Además de establecer presupuestos, puedes usar cuotas y límites para ayudar a aplicar la disciplina de costos y evitar aumentos inesperados en los gastos. Puedes ejercer un control detallado sobre el consumo de recursos estableciendo cuotas en varios niveles, incluidos proyectos, servicios y, incluso, tipos de recursos específicos.
A continuación, se muestran ejemplos de cómo puedes implementar esta recomendación:
- Cuotas a nivel de proyecto: Establece límites de inversión o cuotas de recursos a nivel de proyecto para establecer límites financieros generales y controlar el consumo de recursos en todos los servicios del proyecto.
- Cuotas específicas del servicio: Configura cuotas para servicios específicos de Google Cloud, como Compute Engine o BigQuery, para limitar la cantidad de instancias, CPU o capacidad de almacenamiento que se pueden aprovisionar.
- Cuotas específicas del tipo de recurso: Aplica cuotas a tipos de recursos individuales, como VMs de Compute Engine, buckets de Cloud Storage, instancias de Cloud Run o nodos de GKE, para restringir su uso y evitar sobrecostos inesperados.
- Alertas de cuota: Recibe notificaciones cuando el uso de cuota (a nivel del proyecto) alcance un porcentaje del valor máximo.
Si usas cuotas y límites junto con la elaboración de presupuestos y la supervisión, puedes crear un enfoque proactivo y de varias capas para el control de costos. Este enfoque ayuda a garantizar que tus gastos en la nube se mantengan dentro de los límites definidos y se alineen con tus objetivos comerciales. Recuerda que estos controles de costos no son permanentes ni rígidos. Para garantizar que los controles de costos sigan alineados con los estándares actuales de la industria y reflejen las necesidades cambiantes de tu empresa, debes revisar los controles con regularidad y ajustarlos para incluir nuevas tecnologías y prácticas recomendadas.