Terraform을 사용하여 데이터베이스 마이그레이션을 위한 CI/CD 파이프라인 설정 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Terraform을 사용하여 데이터베이스 마이그레이션을 위한 CI/CD 파이프라인 설정

작성자: Dr. Rahul Sharad Gaikwad(AWS), Aarti Rajput(AWS), Ashish Bhatt(AWS), Aniket Dekate(AWS), Naveen Suthar(AWS), Nadeem Rahaman(AWS), Ruchika Modi(AWS) 및 Tamilselvan P(AWS)

환경: PoC 또는 파일럿

기술: 데이터베이스 DevOps, 마이그레이션

워크로드: Microsoft

AWS 서비스: AWS CodePipeline, AWS DMS, Amazon RDS

요약

이 패턴은 안정적이고 자동화된 방식으로 데이터베이스 마이그레이션을 관리하기 위한 지속적 통합 및 지속적 배포(CI/CD) 파이프라인을 설정하는 것입니다. 인프라 코드(IaC) 도구인 Terraform을 사용하여 필요한 인프라를 프로비저닝하고, 데이터를 마이그레이션하고, 스키마 변경을 사용자 지정하는 프로세스를 다룹니다.

특히 패턴은 온프레미스 Microsoft SQL Server 데이터베이스를 의 Amazon Relational Database Service(AmazonRDS)로 마이그레이션하도록 CI/CD 파이프라인을 설정합니다 AWS. 이 패턴을 사용하여 가상 머신(VM) 또는 다른 클라우드 환경에 있는 SQL 서버 데이터베이스를 Amazon 로 마이그레이션할 수도 있습니다RDS.

이 패턴은 데이터베이스 관리 및 배포와 관련된 다음과 같은 문제를 해결합니다.

  • 수동 데이터베이스 배포는 시간이 많이 걸리고 오류가 발생하기 쉬우며 환경 간에 일관성이 부족합니다.

  • 인프라 프로비저닝, 데이터 마이그레이션 및 스키마 변경을 조정하는 것은 복잡하고 관리하기 어려울 수 있습니다.

  • 데이터베이스 업데이트 중에 데이터 무결성을 보장하고 가동 중지 시간을 최소화하는 것은 프로덕션 시스템에 매우 중요합니다.

이 패턴은 다음과 같은 이점을 제공합니다.

  • 데이터베이스 마이그레이션을 위한 CI/CD 파이프라인을 구현하여 데이터베이스 변경 사항을 업데이트하고 배포하는 프로세스를 간소화합니다. 이렇게 하면 오류 위험이 줄어들고 환경 간 일관성을 보장하며 가동 중지 시간을 최소화할 수 있습니다.

  • 안정성, 효율성 및 협업을 개선하는 데 도움이 됩니다. 데이터베이스 업데이트 중에 출시 시간을 단축하고 가동 중지 시간을 줄일 수 있습니다.

  • 데이터베이스 관리를 위한 최신 DevOps 관행을 채택하여 소프트웨어 제공 프로세스의 민첩성, 안정성 및 효율성을 높일 수 있습니다.

사전 조건 및 제한 사항

사전 조건 

아키텍처

이 패턴은 데이터베이스 마이그레이션 프로세스를 위한 전체 인프라를 제공하는 다음 아키텍처를 구현합니다.

온프레미스 SQL 서버 데이터베이스를 RDS에서 Amazon으로 마이그레이션하기 위한 CI/CD 파이프라인 아키텍처입니다AWS.

이 아키텍처에서,

  • 소스 데이터베이스는 온프레미스, 가상 머신(VM) 또는 다른 클라우드 공급자가 호스팅하는 SQL 서버 데이터베이스입니다. 다이어그램은 소스 데이터베이스가 온프레미스 데이터 센터에 있다고 가정합니다.

  • 온프레미스 데이터 센터 및 는 VPN 또는 AWS Direct Connect 연결을 통해 AWS 연결됩니다. 이렇게 하면 소스 데이터베이스와 AWS 인프라 간에 안전한 통신이 가능합니다.

  • 대상 데이터베이스는 RDS 데이터베이스 프로비저닝 파이프라인의 도움을 AWS 받아 의 가상 프라이빗 클라우드(VPC) 내에서 호스팅되는 Amazon 데이터베이스입니다.

  • AWS Database Migration Service (AWS DMS)는 온프레미스 데이터베이스를 에 복제합니다 AWS. 소스 데이터베이스를 대상 데이터베이스로 복제하도록 구성하는 데 사용됩니다.

다음 다이어그램은 프로비저닝, 설정 AWS DMS 및 검증과 관련된 다양한 수준의 데이터베이스 마이그레이션 프로세스로 설정된 인프라를 보여줍니다.

온프레미스에서 로 마이그레이션 프로세스의 CI/CD 파이프라인 세부 정보입니다AWS.

이 프로세스에서 다음을 수행합니다.

  • 검증 파이프라인은 모든 검사를 검증합니다. 필요한 모든 검증이 완료되면 통합 파이프라인이 다음 단계로 이동합니다.

  • DB 프로비저닝 파이프라인은 데이터베이스에 제공된 Terraform 코드에 대해 Terraform 작업을 수행하는 다양한 AWS CodeBuild 단계로 구성됩니다. 이러한 단계가 완료되면 대상 에 리소스를 배포합니다 AWS 계정.

  • AWS DMS 파이프라인은 테스트를 수행한 다음 IaC 를 사용하여 마이그레이션을 수행하기 위한 AWS DMS 인프라를 프로비저닝하는 다양한 CodeBuild 단계로 구성됩니다.

도구

AWS 서비스 및 도구

  • AWS CodeBuild 는 소스 코드를 컴파일하고, 테스트를 실행하고, 소프트웨어 패키지를 생성하는 ready-to-deploy 완전 관리형 지속적 통합 서비스입니다.

  • AWS CodePipeline 는 빠르고 안정적인 애플리케이션 및 인프라 업데이트를 위해 릴리스 파이프라인을 자동화하는 데 도움이 되는 완전 관리형 연속 전송 서비스입니다.

  • Amazon Relational Database Service(Amazon RDS)는 에서 관계형 데이터베이스를 설정, 운영 및 확장하는 데 도움이 됩니다 AWS 클라우드.

  • Amazon Simple Storage Service(S3)는 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체 스토리지 서비스입니다.

  • AWS Database Migration Service (AWS DMS)를 사용하면 데이터 스토어를 AWS 클라우드 또는 클라우드와 온프레미스 설정의 조합 간에 마이그레이션할 수 있습니다.

기타 서비스

  • Terraform은 클라우드 및 온프레미스 리소스를 생성하고 관리하는 데 도움이 HashiCorp 되는 의 IaC 도구입니다.

코드 리포지토리

이 패턴의 코드는 GitHub Terraform 샘플 리포지토리를 사용하는 데이터베이스 마이그레이션 DevOps 프레임워크에서 사용할 수 있습니다.

모범 사례

  • 데이터베이스 마이그레이션에 대한 자동 테스트를 구현하여 스키마 변경 사항 및 데이터 무결성의 정확성을 확인합니다. 여기에는 단위 테스트, 통합 테스트 및 end-to-end 테스트가 포함됩니다.

  • 특히 마이그레이션 전에 데이터베이스에 대한 강력한 백업 및 복원 전략을 구현합니다. 이렇게 하면 데이터 무결성이 보장되고 장애 발생 시 대체 옵션이 제공됩니다.

  • 마이그레이션 중에 장애 또는 문제가 발생할 경우 데이터베이스 변경 사항을 되돌리기 위한 강력한 롤백 전략을 구현합니다. 여기에는 이전 데이터베이스 상태로 롤백하거나 개별 마이그레이션 스크립트를 되돌리는 작업이 포함될 수 있습니다.

  • 모니터링 및 로깅 메커니즘을 설정하여 데이터베이스 마이그레이션의 진행 상황과 상태를 추적합니다. 이렇게 하면 문제를 빠르게 식별하고 해결할 수 있습니다.

에픽

작업설명필요한 기술

로컬 워크스테이션에서 Git을 설정하고 구성합니다.

Git 설명서의 지침에 따라 로컬 워크스테이션에 Git을 설치하고 구성합니다.

DevOps 엔지니어

프로젝트 폴더를 생성하고 GitHub 리포지토리에서 파일을 추가합니다.

  1. 이 패턴의 GitHub 리포지토리를 엽니다.

  2. 복제 옵션을 보려면 코드를 선택하고 HTTPS 탭에 URL 제공된 를 복사합니다.

  3. 워크스테이션에서 프로젝트의 폴더를 생성합니다.

  4. 터미널을 열고 이 폴더로 이동합니다.

  5. 리 GitHub 포지토리 복제:

    git clone <github-repository-url>

    여기서 <github-repository-url>는 2단계에서 복사URL한 입니다.

  6. 복제가 완료되면 프로젝트 폴더의 복제된 리포지토리로 이동합니다.

    cd <folder-name>/aws-terraform-db-migration-framework-samples
  7. 선택한 통합 개발 환경(IDE)에서 이 프로젝트를 엽니다.

DevOps 엔지니어
작업설명필요한 기술

필수 파라미터를 업데이트합니다.

ssm-parameters.sh 파일은 필요한 모든 AWS Systems Manager 파라미터를 저장합니다. 프로젝트의 사용자 지정 값으로 이러한 파라미터를 구성할 수 있습니다.

로컬 워크스테이션의 setup/db-ssm-params 폴더에서 CI/CD 파이프라인을 실행하기 전에 ssm-parameters.sh 파일을 열고 이러한 파라미터를 설정합니다.

DevOps 엔지니어

Terraform 구성을 초기화합니다.

db-cicd-integration 폴더에 다음 명령을 입력하여 Terraform 구성 파일이 포함된 작업 디렉터리를 초기화합니다.

terraform init
DevOps 엔지니어

Terraform 계획을 미리 보기합니다.

Terraform 계획을 생성하려면 다음 명령을 입력합니다.

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

Terraform은 구성 파일을 평가하여 선언된 리소스의 목표 상태를 결정합니다. 그런 다음 목표 상태를 현재 상태와 비교하고 계획을 구성합니다.

DevOps 엔지니어

계획을 확인합니다.

계획을 검토하고 대상 에서 필요한 아키텍처를 구성하는지 확인합니다 AWS 계정.

DevOps 엔지니어

솔루션을 배포합니다.

  1. 다음 명령을 입력하여 계획을 적용합니다.

    terraform apply -var-file="terraform.sample"
  2. yes를 입력하여 확인합니다. Terraform은 구성 파일에 선언된 목표 상태를 달성하기 위해 인프라를 생성, 업데이트 또는 파괴합니다. 시퀀스에 대한 자세한 내용은 이 패턴의 아키텍처 섹션을 참조하세요.

DevOps 엔지니어
작업설명필요한 기술

배포를 검증합니다.

db-cicd-integration 파이프라인의 상태를 확인하여 데이터베이스 마이그레이션이 완료되었는지 확인합니다.

1. 에 로그인 AWS Management Console한 다음 AWS CodePipeline 콘솔 을 엽니다.

2. 탐색 창에서 파이프라인을 클릭합니다.

3. 파이프라인을db-cicd-integration 선택합니다.

4. 파이프라인 실행이 성공적으로 완료되었는지 확인합니다.

DevOps 엔지니어
작업설명필요한 기술

인프라를 정리합니다.

  1. 프로젝트가 완료되면 명령을 사용하여 생성한 인프라를 정리합니다.

    terraform destroy --var-file=terraform.sample
  2. yes를 입력하여 확인합니다.

DevOps 엔지니어

관련 리소스

AWS 설명서

Terraform 설명서