Migra a Google Cloud: implementa las cargas de trabajo

Last reviewed 2023-12-08 UTC

En este documento, se te brindará ayuda para planificar y diseñar la fase de implementación de la migración a Google Cloud. Después de evaluar el entorno actual, planificar la migración a Google Cloud y compilar la base de Google Cloud, puedes implementar las cargas de trabajo.

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

La fase de implementación es la tercera fase de la migración a Google Cloud, en la que diseñas un proceso de implementación para las cargas de trabajo.

Este documento es útil si planificas una migración de un entorno local, un entorno de hosting privado o algún otro proveedor de servicios en la nube a Google Cloud, o si evalúas la posibilidad de migrar y deseas explorar cómo podría ser.

En este documento, se revisarán los diferentes tipos de procesos de implementación, en orden de flexibilidad, automatización y complejidad, junto con criterios sobre cómo elegir el enfoque adecuado para ti:

  1. Implementar de forma manual
  2. Implementar con herramientas de administración de configuración (CM)
  3. Implementar mediante herramientas de organización de contenedores
  4. Implementar de forma automática

Antes de implementar las cargas de trabajo, planifica y diseña la fase de implementación. En primer lugar, debes evaluar los diferentes tipos de procesos de implementación que usas para las cargas de trabajo. Cuando evalúas los tipos de procesos de implementación, puedes decidir comenzar con un proceso simple y pasar a uno más complejo en el futuro. Este enfoque puede conducir a resultados más rápidos, pero también puede generar fricción cuando pasas a un proceso más avanzado, ya que debes absorber la deuda técnica que acumulaste mediante el uso del proceso más simple. Por ejemplo, si pasas de implementaciones completamente manuales a una solución automatizada, es posible que tengas que administrar las actualizaciones de la canalización de implementación y las apps.

Si bien es posible implementar diferentes tipos de procesos de implementación según las necesidades de las cargas de trabajo, este enfoque también puede aumentar la complejidad de esta fase. Si implementas diferentes tipos de procesos de implementación, puedes beneficiarte con la flexibilidad adicional, pero quizás necesites experiencia, herramientas y recursos adaptados a cada proceso, lo que se traduce en más esfuerzo de tu parte.

Implementa de forma manual

Una implementación completamente manual está respaldada por un proceso de aprovisionamiento, configuración y, también, implementación que no está automatizado en absoluto. Si bien puede haber especificaciones y listas de tareas para cada paso del proceso, no hay una verificación automatizada o una aplicación forzosa de esas especificaciones. Un proceso manual es propenso a errores humanos, no es repetible, y su rendimiento está limitado por el factor humano.

Los procesos de implementación completamente manuales pueden ser útiles, por ejemplo, cuando necesitas instrumentar con rapidez un experimento en un entorno de zona de pruebas. Configurar un proceso estructurado y automatizado para un experimento que dure unos minutos puede ralentizar de manera innecesaria tu ritmo, en especial, en las primeras etapas de la migración, cuando podrías carecer de la experiencia necesaria en las herramientas y las prácticas que te permiten compilar un proceso automatizado.

Si bien esta limitación no es el caso de Google Cloud, las implementaciones completamente manuales pueden ser la única opción cuando se trata de entornos de equipos físicos que no tienen las API de administración necesarias. En este caso, no puedes implementar un proceso automatizado debido a la falta de las interfaces necesarias. Si tienes una infraestructura virtualizada heredada que no admite ninguna automatización, es posible que debas implementar un proceso completamente manual.

Te recomendamos que evites una implementación completamente manual, a menos que no tengas otra opción.

Puedes implementar un proceso de aprovisionamiento, configuración y, también, implementación completamente manual mediante herramientas como la consola de Google Cloud, Cloud Shell, las API de Cloud y Google Cloud CLI.

Implementa con herramientas de administración de configuración

Las herramientas de CM te permiten configurar un entorno de forma repetitiva y controlada. Estas herramientas incluyen un conjunto de complementos y módulos que ya implementan operaciones de configuración comunes. Estas te permiten enfocarte en el estado final que deseas alcanzar para el entorno, en lugar de implementar la lógica a fin de llegar a ese estado final. Si el conjunto de operaciones incluidas no es suficiente, las herramientas de CM suelen tener un sistema de extensión que puedes usar para desarrollar tus propios módulos. Si bien estas extensiones son posibles, intenta usar los módulos y complementos predefinidos cuando corresponda para evitar la carga adicional de desarrollo y mantenimiento.

Si bien usas herramientas de CM cuando necesitas configurar entornos, también puedes usarlas a fin de aprovisionar la infraestructura y establecer un proceso de implementación para las cargas de trabajo. Las herramientas de CM son un proceso mejor en comparación con un proceso de aprovisionamiento, configuración y, también, implementación completamente manual, ya que es repetible, controlado y auditable. Sin embargo, existen varias desventajas, dado que las herramientas de CM no están diseñadas para tareas de aprovisionamiento o implementación. Por lo general, carecen de características integradas para implementar una lógica de aprovisionamiento compleja, como detectar y administrar diferencias entre el estado real de la infraestructura y el estado deseado, o procesos de implementación enriquecidos, como implementaciones sin tiempo de inactividad o implementaciones azul-verdes. Puedes implementar las características faltantes mediante los puntos de extensión mencionados antes. Estas extensiones pueden generar un esfuerzo adicional y aumentar la complejidad general del proceso de implementación, ya que necesitas la experiencia necesaria para diseñar, desarrollar y mantener una solución de implementación personalizada.

Puedes implementar este tipo de procesos de aprovisionamiento, configuración y, también, implementación con herramientas como Ansible, Chef, Puppet y SaltStack..

Implementa mediante herramientas de organización de contenedores

Si ya invertiste o planeas invertir en la creación de contenedores para las cargas de trabajo, puedes usar una herramienta de organización de contenedores con el fin de implementarlas.

Una herramienta de organización de contenedores se encarga de administrar la infraestructura que sustenta el entorno y admite un amplio rango de operaciones de implementación y componentes básicos para implementar la lógica de implementación que puedes usar cuando los integrados no son suficientes. Si usas estas herramientas, puedes enfocarte en redactar la lógica de implementación real mediante los mecanismos proporcionados, en lugar de tener que implementarlos.

Las herramientas de organización de contenedores también proporcionan abstracciones que puedes usar a fin de generalizar los procesos de implementación en diferentes entornos subyacentes, de modo que no tienes que diseñar ni implementar varios procesos para cada uno de los entornos. Por ejemplo, estas herramientas suelen incluir la lógica para escalar y actualizar las implementaciones, por lo que no tienes que implementarlas por tu cuenta. Incluso puedes comenzar a aprovechar estas herramientas para implementar los procesos de implementación en el entorno actual y, luego, transferirlos al entorno de destino, ya que la implementación es muy similar con respecto al diseño. Si adoptas estas herramientas de forma anticipada, obtendrás experiencia en la administración de entornos en contenedores, que es útil para migrar a Google Cloud.

Usa una herramienta de organización de contenedores si las cargas de trabajo ya están en contenedores o si puedes colocarlas en contenedores en el futuro y planeas invertir en este esfuerzo. En este último caso, debes realizar un análisis detallado de cada carga de trabajo para determinar estos factores:

  • Asegúrate de que sea posible colocar la carga de trabajo en un contenedor.
  • Evalúa los posibles beneficios que podrías obtener si colocas la carga de trabajo en un contenedor.

En caso de que las posibles dificultades superen los beneficios de la creación de contenedores, solo debes usar una herramienta de organización de contenedores si los equipos ya se comprometieron a usarla y no deseas administrar entornos heterogéneos.

Por ejemplo, las soluciones de almacén de datos no suelen implementarse mediante las herramientas de organización de contenedores, ya que no están diseñadas para ejecutarse en contenedores efímeros.

Puedes implementar este proceso de implementación usando Google Kubernetes Engine (GKE) en Google Cloud. Si te interesa un entorno sin servidores, puedes usar herramientas, como Cloud Run.

Implementa automáticamente

Sin importar las herramientas de aprovisionamiento, configuración, implementación y organización que uses en el entorno, puedes recurrir a procesos de implementación completamente automatizados para minimizar los errores humanos y consolidar, optimizar y estandarizar los procesos en la organización. También puedes insertar pasos de aprobación manual en el proceso de implementación si es necesario, pero cada paso es automático.

Estos son los pasos de una canalización de implementación típica de extremo a extremo:

  1. Revisión de código
  2. Integración continua (IC)
  3. Producción de artefactos
  4. Implementación continua (IC), con aprobaciones manuales eventuales

Puedes automatizar cada uno de estos pasos de forma independiente de los demás para migrar de manera gradual los procesos de implementación actuales a una solución automatizada, o puedes implementar un nuevo proceso directamente en el entorno de destino. Para que este proceso sea eficaz, necesitas procedimientos de prueba y validación en cada paso de la canalización, no solo durante el paso de revisión de código o de CI.

Para cada cambio en la base de código, debes realizar una revisión exhaustiva a fin de evaluar la calidad del cambio. La mayoría de las herramientas de administración de código fuente cuentan con una asistencia de primera clase para las revisiones de código. A menudo, también admiten la creación automática y la inicialización de revisiones mediante la examinación del área de código fuente modificada, siempre que hayas configurado los equipos responsables de cada área de la base de código. En cada revisión, también puedes ejecutar verificaciones automáticas del código fuente, como linters y analizadores estáticos para aplicar estándares de coherencia y calidad en la base de código.

Después de revisar y, luego, integrar un cambio en la base de código, la herramienta de CI puede ejecutar pruebas, evaluar los resultados y notificarte sobre cualquier problema con la compilación actual automáticamente. Puedes agregar valor a este paso si sigues un proceso de desarrollo basado en pruebas para obtener una cobertura de prueba completa de las características de cada carga de trabajo.

Para cada compilación exitosa, puedes automatizar la creación de artefactos de implementación. Estos artefactos representan una versión de las cargas de trabajo lista para implementar con los cambios más recientes. Como parte del paso de creación de artefactos, también puedes realizar una validación automática. Por ejemplo, ejecutas un análisis de vulnerabilidades contra problemas conocidos y apruebas el artefacto para la implementación solo si no se encuentran vulnerabilidades.

Por último, puedes automatizar la implementación de cada artefacto aprobado en el entorno de destino. Si tienes varios entornos de ejecución, también puedes implementar una lógica de implementación única para cada uno, incluso si agregas pasos de aprobación manual, si es necesario. Por ejemplo, puedes implementar automáticamente versiones nuevas de las cargas de trabajo en los entornos de desarrollo, control de calidad y preproducción, mientras aún necesitas una revisión manual y la aprobación del equipo de control de producción para implementarlas en el entorno de producción.

Si necesitas un proceso automatizado, estructurado, optimizado y auditable, una de las mejores opciones es un proceso completamente automatizado de extremo a extremo. Sin embargo, su implementación no es una tarea trivial. Antes de elegir este tipo de proceso, debes tener una visión clara de los beneficios esperados, los costos involucrados, y si el nivel actual de conocimiento y experiencia del equipo es suficiente para realizar un proceso de implementación completamente automatizado.

Puedes implementar procesos de implementación completamente automatizados con Cloud Deploy.

¿Qué sigue?