Migra a Google Cloud: optimiza tu entorno

Last reviewed 2024-12-07 UTC

Mediante este documento, podrás planificar y diseñar la fase de optimización de tu migración a Google Cloud. Después de implementar las cargas de trabajo en Google Cloud, puedes comenzar a optimizar el entorno.

Este documento es parte de la siguiente serie de varias partes sobre la migración a Google Cloud:

En el siguiente diagrama, se ilustra la ruta del recorrido de tu migración.

Ruta de migración con cuatro fases.

En la fase de optimización, definirás mejor el entorno para que sea más eficiente que la implementación inicial.

Este documento es útil si planeas optimizar un entorno existente después de migrar a Google Cloud o si estás evaluando la oportunidad de optimizarlo y deseas explorar cómo se vería.

Para la estructura de la fase de optimización, se sigue el framework de migración descrito en esta serie: evaluar, planificar, implementar y optimizar. Puedes usar este framework versátil para planificar toda tu migración y desglosar acciones independientes en cada fase. Cuando completes el último paso de la fase de optimización, puedes volver a comenzar esta fase y buscar objetivos nuevos para la optimización. La fase de optimización se define como un bucle de optimización. Una ejecución del bucle se define como una iteración de optimización.

La optimización es una tarea continua. Siempre debes optimizar tu entorno a medida que evoluciona. Para evitar hacer esfuerzos desmesurados y redundantes, puedes establecer objetivos de optimización cuantificables y detenerte cuando cumplas con estos objetivos. Después de eso, siempre podrás establecer objetivos nuevos y más ambiciosos, pero considera que la optimización tiene un costo en términos de recursos, tiempo, esfuerzo y habilidades.

En el siguiente diagrama, se muestra el bucle de optimización.

Árbol de decisión de optimización.Para obtener una imagen más grande de este diagrama, consulta Árbol de decisión de optimización.

En este documento, realizarás los siguientes pasos repetibles del bucle de optimización:

  1. Evaluar el entorno, los equipos y el bucle de optimización que estás siguiendo
  2. Establecer objetivos y requisitos de optimización
  3. Optimizar el entorno y capacitar a los equipos
  4. Ajustar el bucle de optimización

En este documento, se analizan algunos de los conceptos y principios de la ingeniería de confiabilidad de sitios (SRE). Google desarrolló la disciplina SRE para ejecutar de manera eficiente y confiable una infraestructura global mediante la que se entrega contenido a miles de millones de usuarios. Adoptar la disciplina SRE completa en tu organización puede resultar poco práctico si necesitas modificar muchos de tus procesos empresariales y de colaboración. Puede ser más sencillo aplicar el subconjunto de la disciplina SRE que mejor se adapte a tu organización.

Valora el entorno, los equipos y el bucle de optimización

Antes de comenzar cualquier tarea de optimización, debes evaluar el entorno. También debes evaluar las habilidades de los equipos porque es posible que optimizar el entorno requiera habilidades que tus equipos no tengan. Por último, debes evaluar el bucle de optimización. El bucle es un recurso que puedes optimizar como cualquier otro recurso.

Evalúa el entorno

Necesitas tener un vasto conocimiento de tu entorno. Para lograr una optimización exitosa, debes comprender cómo funciona el entorno y, además, identificar las posibles áreas de mejora. A partir de esta evaluación, estableces un modelo de referencia con el que puedes comparar la evaluación con la fase de optimización y las próximas iteraciones de optimización.

Migra a Google Cloud: Evalúa y descubre tus cargas de trabajo contiene una amplia guía sobre cómo evaluar las cargas de trabajo y los entornos. Si completaste hace poco una migración a Google Cloud, ya tienes información detallada sobre cómo se configura, administra y mantiene tu entorno. De lo contrario, usa esa guía para evaluar tu entorno.

Evalúa a los equipos

Cuando tengas en claro cómo funciona tu entorno, evalúa a los equipos para comprender sus habilidades. Primero, enumera todas las habilidades, el nivel de experiencia de cada habilidad y los miembros del equipo que tienen más conocimiento de cada habilidad. Usa esta evaluación en la siguiente fase para descubrir las habilidades que faltan y que necesitas a fin de cumplir con los objetivos de optimización. Por ejemplo, si comienzas a usar un servicio administrado, necesitas personas con habilidades para aprovisionar y configurar ese servicio, además de interactuar con él. Si deseas agregar una capa de almacenamiento en caché a una aplicación en tu entorno mediante Memorystore, necesitarás personas con experiencia para usar ese servicio.

Ten en cuenta que optimizar el entorno puede afectar tus procesos empresariales y de colaboración. Por ejemplo, si comienzas a usar un servicio completamente administrado en lugar de uno autoadministrado, podrías darles a los operadores más tiempo para eliminar el trabajo manual y repetitivo.

Evalúa el bucle de optimización

El bucle de optimización es un recurso que también puedes optimizar. Usa los datos recopilados en esta evaluación para obtener estadísticas claras sobre el rendimiento de los equipos durante la última iteración de optimización. Por ejemplo, si intentas acortar la duración de la iteración, necesitas datos sobre la última iteración, incluidos la complejidad y los objetivos a los que apuntabas. También necesitas información sobre todos los obstáculos que encontraste durante la última iteración para asegurarte de que tengas una estrategia de mitigación si esos obstáculos vuelven a ocurrir.

Si esta iteración de optimización es la primera, es posible que no tengas datos suficientes para establecer un modelo de referencia para comparar el rendimiento. Redacta un conjunto de hipótesis sobre cómo esperas que se desempeñen los equipos durante la primera iteración. Después de la primera iteración de optimización, evalúa el bucle y el rendimiento de los equipos a fin de compararlos con las hipótesis.

Establece tus requisitos y objetivos de optimización

Antes de comenzar cualquier tarea de optimización, redacta un conjunto de objetivos que se puedan cuantificar con claridad para la iteración.

En este paso, realizarás las siguientes actividades:

  1. Definir los requisitos de optimización
  2. Establecer objetivos de optimización cuantificables según tus requisitos de optimización

Define los requisitos de optimización

Enumera los requisitos para la fase de optimización. Con un requisito, se expresa una necesidad de mejora, y este no necesariamente tiene que ser cuantificable.

A partir de un conjunto de características de calidad para las cargas de trabajo, el entorno y tu propio bucle de optimización, puedes redactar un cuestionario que te sirva de guía a fin de establecer tus requisitos. El cuestionario debe abarcar las características que consideres valiosas para el entorno, los procesos y las cargas de trabajo.

Existen muchas fuentes que puedes usar para guiarte en el momento de definir las características de calidad. Por ejemplo, en el estándar ISO/IEC 25010 se definen las características de calidad de un producto de software, o bien puedes revisar la lista de tareas para la configuración de Google Cloud.

A modo de ejemplo, en el cuestionario puedes hacer las siguientes preguntas:

  • ¿La infraestructura y los componentes pueden escalar de manera horizontal o vertical?
  • ¿La infraestructura permite revertir cambios sin intervención manual?
  • ¿Ya tienes un sistema de supervisión que cubre la infraestructura y las cargas de trabajo?
  • ¿Tienes un sistema de administración de incidentes para la infraestructura?
  • ¿Cuánto tiempo y esfuerzo implica implementar las optimizaciones planificadas?
  • ¿Pudiste cumplir todos los objetivos en las iteraciones anteriores?

A partir de las respuestas al cuestionario, redacta una lista de requisitos para esta iteración de optimización. Por ejemplo, los requisitos podrían ser los siguientes:

  • Aumentar el rendimiento de una aplicación
  • Aumentar la disponibilidad de un componente del entorno
  • Aumentar la confiabilidad de un componente del entorno
  • Reducir los costos operativos del entorno
  • Acortar la duración de la iteración de optimización para reducir los riesgos inherentes
  • Aumentar la velocidad de desarrollo y reducir el tiempo de salida al mercado

Cuando tengas la lista de áreas de mejora, evalúa los requisitos en la lista. En esta evaluación, analizarás los requisitos de optimización, buscarás conflictos y priorizarás los requisitos de la lista. Por ejemplo, aumentar el rendimiento de una aplicación puede entrar en conflicto con la reducción del costo operativo.

Establece objetivos cuantificables

Después de finalizar la lista de requisitos, define objetivos cuantificables para cada requisito. Un objetivo puede contribuir a más de un requisito. Si tienes un área de duda o si no puedes definir todos los objetivos que necesitas para cubrir tus requisitos, vuelve a la fase de evaluación de esta iteración a fin de recopilar cualquier información que falte y, luego, definir mejor los requisitos.

Si necesitas ayuda para definir estos objetivos, puedes seguir una de las disciplinas SRE, la definición de indicadores de nivel de servicio (SLI) y objetivos de nivel de servicio (SLO):

  • Los SLI son medidas cuantitativas del nivel de servicio que proporcionas. Por ejemplo, un SLI de clave puede ser la latencia promedio de la solicitud, la tasa de error o la capacidad de procesamiento del sistema.
  • Los SLO son valores o rangos de valores objetivos para un nivel de servicio que se mide mediante un SLI. Por ejemplo, un SLO puede ser que la latencia promedio de la solicitud sea inferior a 100 milisegundos.

Después de definir los SLI y los SLO, es posible que te des cuenta de que no recopilas todas las métricas que necesitas para medir los SLI. Esta recopilación de métricas es el primer objetivo de optimización que puedes abordar. Establece los objetivos relacionados con la ampliación del sistema de supervisión a fin de recopilar todas las métricas que necesitas para los SLI.

Optimiza el entorno y los equipos

Después de evaluar el entorno, los equipos y el bucle de optimización, además de establecer los requisitos y los objetivos de esta iteración, estarás listo para realizar el paso de optimización.

En este paso, realizarás las siguientes actividades:

  1. Valorar el entorno, los equipos y el bucle de optimización
  2. Analizar los datos que provienen de estas valoraciones
  3. Realizar las actividades de optimización
  4. Volver a valorar y analizar

Valora el entorno, los equipos y el bucle de optimización

Amplía el sistema de supervisión para recopilar datos sobre el comportamiento del entorno, los equipos y el bucle de optimización con el fin de establecer un modelo de referencia con el que comparar después de realizar la optimización.

Esta actividad se basa en lo que hiciste en la fase de evaluación y lo amplía. Después de establecer los requisitos y los objetivos, sabes qué métricas recopilar a fin de que las valoraciones sean relevantes para los objetivos de optimización. Por ejemplo, si definiste los SLO y los SLI correspondientes para reducir la latencia de respuesta de una de las cargas de trabajo del entorno, debes recopilar datos a fin de medir esa métrica.

Comprender estas métricas también se aplica a los equipos y al bucle de optimización. Puedes ampliar tu sistema de supervisión con el objetivo de recopilar datos a fin de medir las métricas relevantes para los equipos y el bucle de optimización. Por ejemplo, si tienes SLO y SLI para reducir la duración de la iteración de optimización, debes recopilar datos a fin de medir esa métrica.

Cuando diseñes las métricas que necesitas para ampliar el sistema de supervisión, ten en cuenta que la recopilación de datos puede afectar el rendimiento del entorno y los procesos. Evalúa las métricas que necesitas implementar para las valoraciones, además de los intervalos de muestreo, a fin de comprender si podrían afectar el rendimiento. Por ejemplo, una métrica con una frecuencia de muestreo alta puede reducir el rendimiento, por lo que deberás optimizar aún más.

En Google Cloud, puedes usar Cloud Monitoring para implementar las métricas que necesitas para recopilar datos. Para implementar métricas personalizadas directamente en tus cargas de trabajo, puedes usar Bibliotecas cliente de Cloud para Cloud Monitoring o OpenTelemetry. Si usas Google Kubernetes Engine (GKE), puedes usar la medición de uso de GKE para recopilar información sobre el uso de recursos, como CPU, TPU y GPU, y dividir el uso de recursos por espacio de nombres o etiqueta.

Por último, puedes usar el Centro de arquitectura de Cloud y los informes de Google Cloud como puntos de partida para encontrar habilidades nuevas que tus equipos podrían necesitar para optimizar el entorno.

Analiza los datos

Después de recopilar los datos, analízalos y evalúalos para conocer el rendimiento del entorno, los equipos y el bucle de optimización en relación con los requisitos y los objetivos de optimización.

En particular, deberás evaluar el entorno en relación con lo siguiente:

  • SLO
  • Prácticas recomendadas de la industria
  • Entorno sin deudas técnicas

Los SLO que estableciste de acuerdo con los objetivos de optimización pueden ayudarte a comprender si cumples con las expectativas. Si no cumples con tus SLO, deberás mejorar los equipos o el bucle de optimización. Por ejemplo, si estableciste un SLO para la latencia de respuesta de una carga de trabajo en un percentil determinado y esa carga de trabajo no cumple con esa marca, es una señal de que necesitas optimizar esa parte de la carga de trabajo.

Además, puedes comparar tu situación con un conjunto de prácticas recomendadas reconocidas en la industria. Por ejemplo, la lista de tareas de configuración de Google Cloud te ayuda a configurar un entorno listo para la producción destinado a las cargas de trabajo empresariales.

Después de recopilar datos, puedes considerar cómo optimizar tu entorno para que sea más rentable. Puedes exportar datos de Facturación de Cloud a BigQuery y analizar datos con Looker Studio para comprender cuántos recursos usas y extraer cualquier patrón de gasto de él.

Por último, puedes comparar tu entorno con uno en el que no tengas deudas técnicas para ver si cumples con tus objetivos a largo plazo y si las deudas técnicas aumentan. Por ejemplo, puedes establecer un SLO para la cantidad de recursos en tu entorno que supervisas en comparación con la cantidad de recursos que aprovisionaste desde la última iteración. Si no ampliaste el sistema de supervisión para cubrir esos recursos nuevos, tus deudas técnicas aumentaron. Cuando analices los cambios en tus deudas técnicas, también considera los factores que generaron esos cambios. Por ejemplo, una necesidad empresarial puede requerir un incremento en las deudas técnicas, o bien este puede ocurrir de manera inesperada. Conocer los factores que causaron un cambio en las deudas técnicas te brinda estadísticas para los objetivos de optimización futuros.

A fin de supervisar tu entorno en Google Cloud, puedes usar Monitoring para diseñar gráficos, paneles y alertas. Luego, puedes enrutar datos de Cloud Logging para realizar un análisis más profundo y ampliar el período de retención. Por ejemplo, puedes crear receptores agregados y usar Cloud Storage, Pub/Sub o BigQuery como destinos. Si exportas datos a BigQuery, puedes usar Looker Studio para visualizar datos, de modo que puedas identificar tendencias y hacer predicciones. También puedes usar herramientas de evaluación como Recommender y Security Command Center para analizar de manera automática el entorno y los procesos en busca de objetivos de optimización.

Después de analizar todos los datos de valoración, debes responder dos preguntas:

  1. ¿Cumples con tus objetivos de optimización?

    Si respondiste que , entonces completaste esta iteración de optimización y puedes iniciar una nueva. Si respondiste que no, puedes pasar a la segunda pregunta.

  2. Teniendo en cuenta los recursos que incluiste en el presupuesto, ¿puedes cumplir con los objetivos de optimización que estableciste para esta iteración?

Para responder esta pregunta, considera todos los recursos que necesitas, como el tiempo, el dinero y la experiencia. Si respondiste que , puedes pasar a la siguiente sección; de lo contrario, define mejor tus objetivos de optimización teniendo en cuenta los recursos que puedes usar para esta iteración. Por ejemplo, si tienes como limitación una programación fija, es posible que debas programar algunos objetivos de optimización para la próxima iteración.

Optimiza los equipos

Optimizar el entorno es un desafío continuo y puede requerir habilidades que tus equipos podrían no tener, lo que descubriste durante la evaluación y el análisis. Por este motivo, optimizar los equipos mediante la adquisición de habilidades nuevas a fin de lograr la eficacia de los procesos es fundamental para el éxito de las actividades de optimización.

Para optimizar los equipos, debes hacer lo siguiente:

  • Diseñar y, también, implementar un programa de capacitación
  • Optimizar la estructura y la cultura del equipo

Para que los equipos adquieran las habilidades que les faltan, debes diseñar y, luego, implementar un programa de capacitación o elegir uno que hayan preparado los capacitadores profesionales de Google Cloud. Para obtener más información, consulta Migra a Google Cloud: evalúa y descubre tus cargas de trabajo.

A medida que optimizas los equipos, es posible que encuentres una oportunidad para mejorar la estructura y la cultura. Es difícil prescribir una situación ideal desde el principio, ya que cada empresa tiene su propia historia y sus idiosincrasias que contribuyeron a la evolución de la estructura y la cultura de los equipos.

El liderazgo transformador es un buen punto de partida para aprender sobre los frameworks generales para ejecutar y valorar cambios organizativos destinados a la adopción de las prácticas de DevOps. Para obtener orientación práctica sobre cómo implementar una cultura de DevOps eficaz en tu organización, consulta Ingeniería de confiabilidad de sitios, una descripción completa de la metodología de SRE. En el complemento libro, Libro de actividades de confiabilidad de sitios, se usan ejemplos concretos para mostrarte cómo poner en práctica los principios y las prácticas de SRE.

Optimiza el entorno

Después de valorar y analizar los datos de las métricas, sabrás qué áreas debes optimizar.

En esta sección, se describen las técnicas de optimización generales para tu entorno de Google Cloud. También puedes realizar cualquier actividad de optimización específica para tu infraestructura y los servicios que uses.

Codifica todo

Una de las mayores ventajas de adoptar un entorno de nube pública como Google Cloud es que puedes usar interfaces bien definidas, como las APIs de Cloud, para aprovisionar, configurar y administrar recursos. Puedes usar las herramientas que elijas para definir tu proceso de infraestructura como código (IaC) y los sistemas de control de versión que prefieras.

Puedes usar herramientas como Terraform para aprovisionar tus recursos de Google Cloud y, luego, herramientas como Ansible, Chef o Puppet para configurar estos recursos. Un proceso de IaC te ayuda a implementar una estrategia de reversión eficaz para las tareas de optimización. Puedes revertir cualquier cambio que hayas aplicado al código que describe tu infraestructura. Además, puedes evitar fallas inesperadas mientras actualizas tu infraestructura si pruebas los cambios.

También puedes aplicar procesos similares para codificar otros aspectos del entorno, entre los que se incluyen políticas como código, herramientas como Open Policy Agent y operaciones como código, como GitOps.

Por lo tanto, si adoptas un proceso de IaC en las primeras iteraciones de optimización, puedes definir otras actividades de optimización como código. También puedes adoptar el proceso de forma gradual a fin de que puedas evaluar si es adecuado para tu entorno.

Automatiza todo

Para optimizar por completo todo el entorno, debes usar los recursos de manera eficiente. Esto significa que deberás eliminar el trabajo manual y repetitivo para ahorrar recursos y reinvertir en tareas más importantes que generen valor, como las actividades de optimización.

Según la recomendación de SRE, la forma de eliminar este tipo de trabajo es aumentar la automatización. No todas las tareas de automatización requieren contar con grandes habilidades de ingeniería de software o realizar grandes esfuerzos. A veces, una secuencia de comandos ejecutable corta que se ejecuta de manera periódica puede ahorrarte varias horas de trabajo por día. Google Cloud proporciona herramientas, como Google Cloud CLI, y servicios administrados, como las API de Cloud, Cloud Scheduler, Cloud Composer y Cloud Run, que tus equipos pueden usar para automatizar tareas repetitivas.

Supervisa todo

Si no puedes recopilar valoraciones detalladas sobre tu entorno, no podrás mejorarlo, ya que faltarán datos para respaldar tus suposiciones. Esto significa que no sabrás qué hacer para cumplir los objetivos de optimización.

Un sistema de supervisión integral es un componente necesario para tu entorno. El sistema supervisa todas las métricas esenciales que necesitas evaluar para los objetivos de optimización. Cuando diseñes el sistema de supervisión, planifica, como mínimo, supervisar las cuatro señales de oro.

Puedes usar servicios administrados, como Monitoring y Logging, para supervisar tu entorno sin tener que configurar una solución de supervisión complicada.

Es posible que debas implementar un sistema de supervisión que pueda supervisar entornos híbridos y de múltiples nubes para satisfacer las políticas de restricción de datos que te obligan a almacenar datos solo en ciertas ubicaciones físicas o servicios que usan varios entornos de nube de forma simultánea.

Adopta un enfoque listo para la nube

“Listo para la nube” es un paradigma que describe una manera eficiente de diseñar y ejecutar una aplicación en la nube. La Cloud Native Computing Foundation (CNCF) define una aplicación nativa de la nube como una aplicación escalable, resiliente, administrable y observable mediante tecnologías como contenedores, mallas de servicios, microservicios, infraestructura inmutable y APIs declarativas. Google Cloud ofrece servicios administrados como GKE, Cloud Run, Cloud Service Mesh, Logging y Monitoring para permitir a los usuarios diseñar y ejecutar aplicaciones nativas de la nube.

Obtén más información sobre las tecnologías listas para la nube en Mapa de recorrido de la CNCF y en Paisaje interactivo nativo de la nube de la CNCF.

Administración de costos

Debido a los diferentes modelos de facturación y costos, optimizar los costos de un entorno de nube pública como Google Cloud es diferente a optimizar un entorno local.

Para obtener más información, consulta Migra a Google Cloud: minimiza los costos.

Vuelve a valorar y analizar

Cuando completes las actividades de optimización para esta iteración, repite las valoraciones y el análisis con el fin de comprobar si alcanzaste tus objetivos. Responde la siguiente pregunta:

  • ¿Cumpliste con los objetivos de optimización?

    Si respondiste que , puedes pasar a la siguiente sección.

    Si respondiste que no, regresa al comienzo de la fase Optimiza el entorno y los equipos.

Ajusta el bucle de optimización

En esta sección, actualizarás y modificarás el bucle de optimización que seguiste en esta iteración para que se adapte mejor al entorno y la estructura del equipo.

Codifica el bucle de optimización

Para optimizar el bucle de optimización de manera eficiente, debes documentar y definir el bucle en un formato estandarizado, sencillo y fácil de administrar que permita realizar cambios. Puedes usar un servicio completamente administrado como Cloud Composer para crear, programar, supervisar y administrar tus flujos de trabajo. También puedes representar primero los procesos con un lenguaje como el modelo y la notación de procesos de negocios (BPMN). Después de eso, puedes codificar estos procesos con un lenguaje estandarizado, como el lenguaje de ejecución de procesos de negocios (BPEL). Una vez que hayas adoptado la IaC, describir tus procesos con código te permitirá administrarlos como lo haces con el resto de tu entorno.

Automatiza el bucle de optimización

Después de codificar el bucle de optimización, puedes automatizar las tareas repetitivas para eliminar el trabajo manual, ahorrar tiempo y hacer que el bucle de optimización sea más eficiente. Puedes comenzar a automatizar todas las tareas en las que no se requiera que una persona tome una decisión, como medir datos y producir informes agregados para que los analicen los equipos. Por ejemplo, puedes automatizar el análisis de datos mediante la supervisión de Cloud Monitoring Service para verificar si el entorno cumple con los SLOs que definiste. Dado que la optimización es una tarea continua y que iteras en función del bucle de optimización, incluso las automatizaciones pequeñas pueden aumentar la eficiencia de manera significativa.

Supervisa el bucle de optimización

Como lo hiciste con todos los recursos del entorno, debes supervisar el bucle de optimización a fin de verificar que funcione como se espera y detectar cuellos de botella y objetivos de optimización futuros. Puedes comenzar a supervisarlo mediante el seguimiento del tiempo y la cantidad de recursos que los equipos invirtieron en cada paso de la optimización. Por ejemplo, puedes usar un sistema de seguimiento de errores y una herramienta de administración de proyectos para supervisar tus procesos y extraer estadísticas relevantes sobre métricas como el tiempo de resolución de errores y el tiempo de finalización.

¿Qué sigue?

Colaboradores

Autor: Marco Ferrari | Arquitecto de soluciones de nube