Migrar a Google Cloud: desplegar cargas de trabajo

Last reviewed 2024-12-08 UTC

Este documento puede ayudarte a planificar y diseñar la fase de implementación de tu migración a Google Cloud. Una vez que hayas evaluado tu entorno actual, planificado la migración a Google Cloudy creado tuGoogle Cloud , podrás implementar tus cargas de trabajo.

Este documento forma parte de la siguiente serie de artículos sobre la migración aGoogle Cloud:

En el siguiente diagrama se muestra el 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 tus cargas de trabajo.

Este documento es útil si tienes previsto migrar desde un entorno local, desde un entorno de alojamiento privado o desde otro proveedor de la nube aGoogle Cloud, o si estás evaluando la oportunidad de migrar y quieres saber cómo sería el proceso.

En este documento, se describen los diferentes tipos de procesos de implementación, ordenados según su flexibilidad, automatización y complejidad, junto con los criterios para elegir el enfoque más adecuado para ti:

  1. Implementar manualmente.
  2. Implementa con herramientas de gestión de la configuración (CM).
  3. Implementa mediante herramientas de orquestación de contenedores.
  4. Desplegar automáticamente.

Antes de implementar tus cargas de trabajo, planifica y diseña la fase de implementación. En primer lugar, debes evaluar los distintos tipos de procesos de implementación que implementas para tus cargas de trabajo. Cuando evalúas los tipos de procesos de implementación, puedes decidir empezar con un proceso específico y pasar a uno más complejo en el futuro. Este enfoque puede dar lugar a resultados más rápidos, pero también puede generar fricción cuando pases a un proceso más avanzado, ya que tendrás que asumir la deuda técnica que hayas acumulado al usar el proceso específico. Por ejemplo, si pasas de implementaciones totalmente manuales a una solución automatizada, puede que tengas que gestionar las actualizaciones de tu canalización de implementación y de tus aplicaciones.

Aunque es posible implementar diferentes tipos de procesos de implementación según las necesidades de tus 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 de la flexibilidad adicional, pero es posible que necesites conocimientos especializados, herramientas y recursos adaptados a cada proceso, lo que se traduce en un mayor esfuerzo por tu parte.

Implementar manualmente

Un despliegue totalmente manual se basa en un proceso de aprovisionamiento, configuración y despliegue que no está automatizado. Aunque puede haber especificaciones y listas de comprobación para cada paso del proceso, no hay ninguna comprobación ni aplicación automatizada de esas especificaciones. Un proceso manual es propenso a errores humanos, no se puede repetir y su rendimiento está limitado por el factor humano.

Los procesos de implementación totalmente manuales pueden ser útiles, por ejemplo, cuando necesites instrumentar rápidamente un experimento en un entorno aislado. Configurar un proceso estructurado y automatizado para un experimento que dure minutos puede ralentizarte innecesariamente, sobre todo en las primeras fases de la migración, cuando puede que no tengas la experiencia necesaria con las herramientas y las prácticas que te permitan crear un proceso automatizado.

Aunque esta limitación no se aplica a Google Cloud, las implementaciones totalmente manuales pueden ser la única opción cuando se trata de entornos de hardware desnudo que no tienen las APIs de gestión necesarias. En este caso, no puedes implementar un proceso automatizado porque no tienes las interfaces necesarias. Si tienes una infraestructura virtualizada antigua que no admite ninguna automatización, es posible que te veas obligado a implementar un proceso totalmente manual.

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

Puedes implementar un proceso totalmente manual de aprovisionamiento, configuración e implementación mediante herramientas como la consola, Cloud Shell, las APIs de Cloud y la CLI de Google Cloud.Google Cloud

Desplegar con herramientas de gestión de la configuración

Las herramientas de CM te permiten configurar un entorno de forma repetible y controlada. Estas herramientas incluyen un conjunto de complementos y módulos que ya implementan operaciones de configuración comunes. Estas herramientas te permiten centrarte en el estado final que quieres conseguir en tu entorno, en lugar de implementar la lógica para alcanzarlo. Si el conjunto de operaciones incluido no es suficiente, las herramientas de gestión del consentimiento suelen incluir un sistema de extensiones que puede usar para desarrollar sus propios módulos. Aunque estas extensiones son posibles, intenta usar los módulos y los complementos predefinidos cuando sea posible para evitar una carga de desarrollo y mantenimiento adicional.

Utiliza las herramientas de CM cuando necesites configurar entornos. También puedes usarlos para aprovisionar tu infraestructura e implementar un proceso de despliegue para tus cargas de trabajo. Las herramientas de gestión de la configuración son un proceso mejor que el aprovisionamiento, la configuración y la implementación totalmente manuales, ya que se pueden repetir, controlar y auditar. Sin embargo, tiene varios inconvenientes, ya que las herramientas de CM no están diseñadas para tareas de aprovisionamiento o implementación. Por lo general, no tienen funciones integradas para implementar una lógica de aprovisionamiento elaborada, como detectar y gestionar las diferencias entre el estado real de tu infraestructura y el estado deseado, o procesos de implementación complejos, como las implementaciones sin tiempo de inactividad o las implementaciones azul-verde. Puedes implementar las funciones que faltan mediante los puntos de extensión mencionados anteriormente. Estas extensiones pueden requerir un esfuerzo adicional y aumentar la complejidad general del proceso de implementación, ya que necesitas los conocimientos necesarios para diseñar, desarrollar y mantener una solución de implementación personalizada.

Puedes implementar este tipo de aprovisionamiento, configuración y proceso de despliegue con herramientas como Ansible, Chef, Puppet y SaltStack.

Un proceso de implementación básico que utiliza herramientas de CM puede preparar entornos de tiempo de ejecución e implementar cargas de trabajo en esos entornos. Por ejemplo, tu proceso podría crear una instancia de Compute Engine, instalar el software necesario y desplegar tus cargas de trabajo. Se tarda en configurar un entorno de ejecución que admita tus cargas de trabajo. Para reducir el tiempo necesario para configurar un entorno de ejecución, puedes implementar un proceso que ejecute herramientas de CM para generar una plantilla, como una imagen de sistema operativo (SO). Puedes usar esta plantilla para crear instancias de tu entorno de ejecución que estén listas para tus cargas de trabajo. Por ejemplo, puedes usar Cloud Build para crear imágenes de Compute Engine. Estas imágenes se suelen denominar imágenes doradas o imágenes plateadas, y ambas son plantillas inmutables, como imágenes de SO, que creas para tus entornos de tiempo de ejecución. La diferencia entre ambos depende de la cantidad de trabajo que debe completar un proceso de implementación antes de que las imágenes puedan ejecutar una carga de trabajo:

  • Imagen dorada: plantilla que creas para tus entornos de tiempo de ejecución o que preparas a partir de una plantilla base. Las imágenes doradas incluyen todos los datos y la información de configuración que necesitan tus entornos de tiempo de ejecución para llevar a cabo las tareas asignadas. Puedes preparar varios tipos de imágenes de referencia para llevar a cabo diferentes tareas. Entre los sinónimos de los tipos de imágenes de oro se incluyen variantes, versiones y arquetipos.
  • Imagen silver: plantilla que creas para tus entornos de tiempo de ejecución aplicando cambios mínimos a una imagen golden o a una plantilla base. Los entornos de ejecución que ejecutan una imagen silver completan su aprovisionamiento y configuración en el primer arranque, según las necesidades de los casos prácticos que deben admitir.

Implementar con herramientas de orquestación de contenedores

Si ya has invertido o tienes previsto invertir en la contenerización de tus cargas de trabajo, puedes usar una herramienta de orquestación de contenedores para desplegarlas.

Una herramienta de orquestación de contenedores se encarga de gestionar la infraestructura subyacente de tu entorno y admite una amplia gama de operaciones de implementación y componentes básicos para implementar tu lógica de implementación, que puedes usar cuando los componentes integrados no sean suficientes. Con estas herramientas, puedes centrarte en componer la lógica de implementación real mediante los mecanismos proporcionados, en lugar de tener que implementarlos.

Las herramientas de orquestación de contenedores también proporcionan abstracciones que puedes usar para generalizar tus procesos de despliegue en diferentes entornos subyacentes, de modo que no tengas que diseñar e implementar varios procesos para cada uno de tus entornos. Por ejemplo, estas herramientas suelen incluir la lógica para escalar y actualizar tus implementaciones, por lo que no tienes que implementarlas tú mismo. Incluso puedes empezar a usar estas herramientas para implementar tus procesos de implementación en tu entorno actual y, después, portarlos al entorno de destino, ya que la implementación es prácticamente la misma por diseño. Si adoptas estas herramientas pronto, adquirirás experiencia en la administración de entornos contenerizados, lo que te será útil para migrar aGoogle Cloud.

Utiliza una herramienta de orquestación de contenedores si tus cargas de trabajo ya están en contenedores o si puedes ponerlas en contenedores en el futuro y tienes previsto invertir en ello. En este último caso, debes llevar a cabo un análisis exhaustivo de cada carga de trabajo para determinar lo siguiente:

  • Asegúrate de que se pueda contenerizar la carga de trabajo.
  • Evalúa las ventajas que podrías obtener al contenerizar la carga de trabajo.

Si los posibles problemas superan las ventajas de la contenerización, solo deberías usar una herramienta de orquestación de contenedores si tus equipos ya se han comprometido a usarlas y si no quieres gestionar entornos heterogéneos.

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

Puedes implementar este proceso de despliegue con Google Kubernetes Engine (GKE) en Google Cloud. Si te interesa un entorno sin servidor, puedes usar herramientas como Cloud Run.

Desplegar automáticamente

Independientemente de las herramientas de aprovisionamiento, configuración, implementación y orquestación que utilices en tu entorno, puedes implementar procesos de implementación totalmente automatizados para minimizar los errores humanos y consolidar, optimizar y estandarizar los procesos en toda tu organización. También puedes insertar pasos de aprobación manual en el proceso de implementación si es necesario, pero todos los pasos están automatizados.

Los pasos de un flujo de procesamiento de despliegue integral típico son los siguientes:

  1. Revisión de código.
  2. Integración continua (CI).
  3. Producción de artefactos.
  4. Despliegue continuo (CD), con aprobaciones manuales posteriores.

Puedes automatizar cada uno de esos pasos de forma independiente, de modo que puedes migrar gradualmente tus procesos de implementación actuales a una solución automatizada o 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 del código o el paso de integración continua.

Por cada cambio que hagas en tu base de código, debes llevar a cabo una revisión exhaustiva para evaluar la calidad del cambio. La mayoría de las herramientas de gestión de código fuente tienen asistencia de nivel superior para las revisiones de código. También suelen admitir la creación e inicialización automáticas de revisiones buscando el área del código fuente que se ha modificado, siempre que hayas configurado los equipos responsables de cada área de tu base de código. En cada revisión, también puedes ejecutar comprobaciones automatizadas en el código fuente, como linters y analizadores estáticos, para aplicar estándares de coherencia y calidad en toda la base de código.

Después de revisar e integrar un cambio en la base de código, la herramienta de integración continua puede ejecutar pruebas automáticamente, evaluar los resultados y notificarte cualquier problema con la compilación actual. Puedes añadir valor a este paso siguiendo un proceso de desarrollo basado en pruebas para obtener una cobertura de pruebas completa de las funciones de cada carga de trabajo.

Por cada compilación correcta, puedes automatizar la creación de artefactos de implementación. Estos artefactos representan una versión lista para implementar de tus cargas de trabajo con los últimos cambios. Como parte del paso de creación del artefacto, también puedes realizar una validación automatizada del propio artefacto. Por ejemplo, puedes ejecutar un análisis de vulnerabilidades en problemas conocidos y aprobar el artefacto para la implementación solo si no se encuentran vulnerabilidades. Por ejemplo, puedes usar Artifact Registry para analizar tus artefactos en busca de vulnerabilidades conocidas.

Por último, puedes automatizar la implementación de cada artefacto aprobado en el entorno de destino. Si tienes varios entornos de tiempo de ejecución, también puedes implementar una lógica de implementación única para cada uno de ellos, e incluso añadir pasos de aprobación manual, si es necesario. Por ejemplo, puedes desplegar automáticamente nuevas versiones de tus cargas de trabajo en tus entornos de desarrollo, control de calidad y preproducción, pero seguir necesitando una revisión y aprobación manuales de tu equipo de control de producción para desplegarlas en tu entorno de producción.

Aunque un proceso integral totalmente automatizado es una de las mejores opciones si necesitas un proceso automatizado, estructurado, optimizado y auditable, implementarlo no es una tarea trivial. Antes de elegir este tipo de proceso, debes tener una visión clara de las ventajas esperadas, los costes que conlleva y si el nivel actual de conocimientos y experiencia de tu equipo es suficiente para implementar un proceso de implementación totalmente automatizado.

Puedes implementar procesos de despliegue totalmente automatizados con Cloud Deploy.

Siguientes pasos

Colaboradores

Autor: Marco Ferrari | Arquitecto de soluciones en la nube