Configure una canalización de CI/CD para la migración de bases de datos mediante Terraform - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configure una canalización de CI/CD para la migración de bases de datos mediante Terraform

Creada por el Dr. Rahul Sharad Gaikwad (AWS), Aarti Rajput (), Ashish Bhatt (AWS), Aniket Dekate (), Naveen Suthar (AWS), Nadeem Rahaman (), Ruchika Modi (AWS) y Tamilselvan P () AWS AWS AWS AWS

Entorno: PoC o piloto

DevOpsTecnologías: bases de datos; migración

Carga de trabajo: Microsoft

AWSservicios: AWS CodePipeline AWSDMS; Amazon RDS

Resumen

Este patrón consiste en establecer una canalización de integración y despliegue continuos (CI/CD) para gestionar las migraciones de bases de datos de forma fiable y automatizada. Abarca el proceso de aprovisionamiento de la infraestructura necesaria, migración de datos y personalización de los cambios de esquema mediante Terraform, que es una herramienta de infraestructura como código (IaC).

En concreto, el patrón configura una canalización de CI/CD para migrar una base de datos local de SQL Microsoft Server a Amazon Relational Database Service (RDSAmazon) en adelante. AWS También puedes usar este patrón para migrar a Amazon una base de datos de SQL servidor que esté en una máquina virtual (VM) o en otro entorno de nubeRDS.

Este patrón aborda los siguientes desafíos asociados con la administración y el despliegue de bases de datos:

  • Las implementaciones manuales de bases de datos requieren mucho tiempo, son propensas a errores y carecen de coherencia en todos los entornos.

  • Coordinar el aprovisionamiento de la infraestructura, las migraciones de datos y los cambios de esquema puede resultar complejo y difícil de administrar.

  • Garantizar la integridad de los datos y minimizar el tiempo de inactividad durante las actualizaciones de las bases de datos es fundamental para los sistemas de producción.

Este patrón proporciona las siguientes ventajas:

  • Simplifica el proceso de actualización e implementación de los cambios en las bases de datos mediante la implementación de una canalización de CI/CD para las migraciones de bases de datos. Esto reduce el riesgo de errores, garantiza la coherencia en todos los entornos y minimiza el tiempo de inactividad.

  • Ayuda a mejorar la confiabilidad, la eficiencia y la colaboración. Permite una comercialización más rápida y reduce el tiempo de inactividad durante las actualizaciones de las bases de datos.

  • Le ayuda a adoptar DevOps prácticas modernas para la administración de bases de datos, lo que se traduce en una mayor agilidad, confiabilidad y eficiencia en sus procesos de entrega de software.

Requisitos previos y limitaciones

Requisitos previos 

Arquitectura

Este patrón implementa la siguiente arquitectura, que proporciona la infraestructura completa para el proceso de migración de la base de datos.

Arquitectura de canalización de CI/CD para migrar una SQL base de datos de servidor local a Amazon on. RDS AWS

En esta arquitectura:

  • La base de datos de origen es una base de datos de SQL servidor que se encuentra en las instalaciones, en una máquina virtual (VM) o alojada por otro proveedor de nube. En el diagrama se supone que la base de datos de origen se encuentra en un centro de datos local.

  • El centro de datos local y AWS están conectados a través de una conexión VPN o AWS Direct Connect . Esto proporciona comunicaciones seguras entre la base de datos de origen y la AWS infraestructura.

  • La base de datos de destino es una RDS base de datos de Amazon que se aloja en la nube privada virtual (VPC) AWS con la ayuda de una canalización de aprovisionamiento de bases de datos.

  • AWS Database Migration Service (AWS DMS) replica su base de datos local en. AWS Se utiliza para configurar la replicación de la base de datos de origen en la base de datos de destino.

El siguiente diagrama muestra la infraestructura configurada con diferentes niveles del proceso de migración de la base de datos, que implica el aprovisionamiento, la AWS DMS configuración y la validación.

Detalles de la canalización de CI/CD del proceso de migración de una versión local a otra. AWS

En este proceso:

  • La canalización de validación valida todas las comprobaciones. La canalización integrada pasa al siguiente paso cuando se han completado todas las validaciones necesarias.

  • El proceso de aprovisionamiento de la base de datos consta de varias AWS CodeBuild etapas que realizan acciones de Terraform en el código de Terraform proporcionado para la base de datos. Cuando se completan estos pasos, despliega los recursos en el objetivo. Cuenta de AWS

  • El AWS DMS proceso consta de varias CodeBuild etapas en las que se realizan las pruebas y, a continuación, se aprovisiona la AWS DMS infraestructura necesaria para realizar la migración mediante el uso de la IaC.

Herramientas

Servicios de AWS y herramientas

  • AWS CodeBuildes un servicio de integración continua totalmente gestionado que compila el código fuente, ejecuta pruebas y produce paquetes de ready-to-deploy software.

  • AWS CodePipelinees un servicio de entrega continua totalmente gestionado que le ayuda a automatizar sus procesos de lanzamiento para obtener actualizaciones rápidas y fiables de las aplicaciones y la infraestructura.

  • Amazon Relational Database Service (RDSAmazon) le ayuda a configurar, operar y escalar una base de datos relacional en. Nube de AWS

  • Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos que ofrece escalabilidad, disponibilidad de datos, seguridad y rendimiento líderes del sector.

  • AWS Database Migration Service (AWS DMS) le ayuda a migrar los almacenes de datos a una combinación de configuraciones locales y en la nube Nube de AWS o entre ellas.

Otros servicios

  • Terraform es una herramienta de iAC HashiCorp que le ayuda a crear y administrar recursos locales y en la nube.

Repositorio de código

El código de este patrón está disponible en el DevOps marco de migración de GitHub bases de datos mediante el repositorio de muestras de Terraform.

Prácticas recomendadas

  • Implemente pruebas automatizadas para la migración de su base de datos a fin de verificar la exactitud de los cambios en el esquema y la integridad de los datos. Esto incluye pruebas unitarias, pruebas de integración y end-to-end pruebas.

  • Implemente una estrategia sólida de respaldo y restauración para sus bases de datos, especialmente antes de la migración. Esto garantiza la integridad de los datos y proporciona una opción alternativa en caso de fallos.

  • Implemente una estrategia sólida de reversión para revertir los cambios en la base de datos en caso de que se produzcan errores o problemas durante la migración. Esto podría implicar volver a un estado anterior de la base de datos o revertir los scripts de migración individuales.

  • Configure mecanismos de supervisión y registro para realizar un seguimiento del progreso y el estado de las migraciones de bases de datos. Esto le ayuda a identificar y resolver los problemas rápidamente.

Epics

TareaDescripciónHabilidades requeridas

Instala y configura Git en tu estación de trabajo local.

Instala y configura Git en tu estación de trabajo local siguiendo las instrucciones de la documentación de Git.

DevOps ingeniero

Cree una carpeta de proyecto y añada los archivos del GitHub repositorio.

  1. Abra el GitHub repositorio para este patrón.

  2. Selecciona Código para ver las opciones de clonación y copia las que URL aparecen en la HTTPS pestaña.

  3. Cree una carpeta para su proyecto en su estación de trabajo.

  4. Abre una terminal y navega hasta esta carpeta.

  5. Clona el GitHub repositorio:

    git clone <github-repository-url>

    dónde <github-repository-url> está URL lo que copió en el paso 2.

  6. Cuando se complete la clonación, diríjase al repositorio clonado de la carpeta de su proyecto:

    cd <folder-name>/aws-terraform-db-migration-framework-samples
  7. Abra este proyecto en un entorno de desarrollo integrado (IDE) de su elección.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Actualice los parámetros necesarios.

El ssm-parameters.sh archivo almacena todos los AWS Systems Manager parámetros necesarios. Puede configurar estos parámetros con los valores personalizados de su proyecto.

En la setup/db-ssm-params carpeta de la estación de trabajo local, abra el ssm-parameters.sh archivo y defina estos parámetros antes de ejecutar la canalización de CI/CD.

DevOps ingeniero

Inicialice la configuración de Terraform.

En la db-cicd-integration carpeta, introduzca el siguiente comando para inicializar el directorio de trabajo que contiene los archivos de configuración de Terraform:

terraform init
DevOps ingeniero

Obtenga una vista previa del plan Terraform.

Para crear un plan de Terraform, introduzca el siguiente comando:

terraform plan -var-file="terraform.sample"

Terraform evalúa los archivos de configuración para determinar el estado objetivo de los recursos declarados. A continuación, compara el estado objetivo con el estado actual y crea un plan.

DevOps ingeniero

Verifique el plan.

Revise el plan y confirme que configura la arquitectura requerida en su objetivo Cuenta de AWS.

DevOps ingeniero

Implemente la solución.

  1. Introduzca el siguiente comando para aplicar el plan:

    terraform apply -var-file="terraform.sample"
  2. Escriba yes para confirmar. Terraform crea, actualiza o destruye la infraestructura para alcanzar el estado objetivo declarado en los archivos de configuración. Para obtener más información sobre la secuencia, consulte la sección de arquitectura de este patrón.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Valide la implementación.

Compruebe el estado de la db-cicd-integration canalización para confirmar que la migración de la base de datos se ha completado.

1. Inicie sesión en la AWS CodePipeline consola y AWS Management Console, a continuación, ábrala.

2. En el panel de navegación, seleccione Canalizaciones.

3. Elige la db-cicd-integration canalización.

4. Valide que la ejecución de la canalización se haya completado correctamente.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Limpie la infraestructura.

  1. Una vez finalizado el proyecto, limpie la infraestructura que creó mediante el comando:

    terraform destroy --var-file=terraform.sample
  2. Escriba yes para confirmar.

DevOps ingeniero

Recursos relacionados

AWS documentación

Documentación de Terraform