Terraform を使用してデータベース移行用の CI/CD パイプラインをセットアップする - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Terraform を使用してデータベース移行用の CI/CD パイプラインをセットアップする

作成者: Rahul Sharad Gaikwad (AWS)、Aarti Rajput (AWS)、Ashish Bhatt (AWS)、Aniket Dekate (AWS)、Navean Suthar ()、Nadeem Rahaman (AWS)AWS、Ruchika Modi (AWS)、Tamilselvan P (AWS)

環境:PoC またはパイロット

テクノロジー: データベース DevOps;; 移行

ワークロード:Microsoft

AWS サービス: AWS CodePipeline、AWSDMS、Amazon RDS

[概要]

このパターンは、データベースの移行を信頼性が高く自動化された方法で管理するための継続的統合と継続的デプロイ (CI/CD) パイプラインを確立するためのものです。Infrastructure as Code (IaC ) ツールである Terraform を使用して、必要なインフラストラクチャのプロビジョニング、データの移行、スキーマの変更のカスタマイズを行うプロセスについて説明します。

具体的には、このパターンは、オンプレミスの Microsoft SQL Server データベースを の Amazon Relational Database Service (Amazon RDS) に移行する CI/CD パイプラインを設定します AWS。このパターンを使用して、仮想マシン (VM) または他のクラウド環境にあるSQLサーバーデータベースを Amazon に移行することもできますRDS。

このパターンは、データベースの管理とデプロイに関連する以下の課題に対処します。

  • 手動データベースデプロイは時間がかかり、エラーが発生しやすく、環境間での一貫性がありません。

  • インフラストラクチャのプロビジョニング、データ移行、スキーマの変更の調整は複雑で管理が難しい場合があります。

  • 本番システムにとって、データ整合性を確保し、データベースの更新中のダウンタイムを最小限に抑えることは不可欠です。

このパターンには、次の利点があります。

  • データベース移行用の CI/CD パイプラインを実装することで、データベースの変更を更新およびデプロイするプロセスを合理化します。これにより、エラーのリスクが軽減され、環境間の一貫性が確保され、ダウンタイムが最小限に抑えられます。

  • 信頼性、効率、コラボレーションの向上に役立ちます。データベース更新時の市場投入までの時間を短縮し、ダウンタイムを短縮できます。

  • データベース管理の最新の DevOps プラクティスを採用するのに役立ちます。これにより、ソフトウェア配信プロセスの俊敏性、信頼性、効率性が向上します。

前提条件と制限

前提条件

  • アクティブな AWS アカウント

  • Terraform 0.12 以降がローカルマシンにインストールされている (手順については、Terraform ドキュメントを参照してください)

  • からの Terraform AWS プロバイダーバージョン 3.0.0 以降 HashiCorp (このプロバイダーのGitHub リポジトリを参照)

  • 最小特権 AWS Identity and Access Management (IAM) ポリシー (ブログ記事「最小特権IAMポリシーの作成方法」を参照)

アーキテクチャ

このパターンでは、データベース移行プロセスの完全なインフラストラクチャを提供する次のアーキテクチャを実装します。

オンプレミスのSQLサーバーデータベースを RDS上の Amazon に移行するための CI/CD パイプラインアーキテクチャAWS。

このアーキテクチャでは、以下のようになります。

  • ソースデータベースは、オンプレミス、仮想マシン (VM)、または別のクラウドプロバイダーによってホストされているSQLサーバーデータベースです。この図は、ソースデータベースがオンプレミスデータセンターにあることを前提としています。

  • オンプレミスデータセンター および AWS は、 VPNまたは 接続を介して AWS Direct Connect 接続されます。これにより、ソースデータベースと 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 (Amazon S3) は、スケーラビリティ、データ可用性、セキュリティ、パフォーマンスを提供するオブジェクトストレージサービスです。

  • AWS Database Migration Service (AWS DMS) は、データストアを AWS クラウド に移行したり、クラウドとオンプレミスのセットアップの組み合わせ間で移行したりする際に役立ちます。

その他のサービス

  • Terraform は、クラウドおよびオンプレミスリソースの作成と管理 HashiCorp に役立つ の IaC ツールです。

コードリポジトリ

このパターンのコードは、 GitHub Terraform サンプルリポジトリを使用して Database Migration DevOps Framework で使用できます。

ベストプラクティス

  • データベース移行の自動テストを実装して、スキーマの変更とデータの整合性が正しいことを確認します。これには、ユニットテスト、統合テスト、テスト end-to-endが含まれます。

  • 特に移行前に、データベースの堅牢なバックアップと復元戦略を実装します。これにより、データの整合性が確保され、障害が発生した場合にフォールバックオプションが提供されます。

  • 移行中に障害や問題が発生した場合にデータベースの変更を元に戻すための堅牢なロールバック戦略を実装します。これには、以前のデータベース状態にロールバックしたり、個々の移行スクリプトを元に戻すことが含まれます。

  • データベース移行の進行状況とステータスを追跡するためのモニタリングとログ記録のメカニズムを設定します。これにより、問題をすばやく特定して解決できます。

エピック

タスク説明必要なスキル

ローカルワークステーションで Git を設定および設定します。

Git ドキュメントの手順に従って、ローカルワークステーションに Git をインストールして設定します。

DevOps エンジニア

プロジェクトフォルダを作成し、 GitHub リポジトリからファイルを追加します。

  1. このパターンのGitHub リポジトリを開きます。

  2. Code を選択してクローンオプションを表示し、 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. ナビゲーションペインで [Pipelines] (パイプライン) を選択します。

3. パイプラインを選択しますdb-cicd-integration

4. パイプラインの実行が正常に完了したことを確認します。

DevOps エンジニア
タスク説明必要なスキル

インフラストラクチャをクリーンアップします。

  1. プロジェクトが完了したら、 コマンドを使用して作成したインフラストラクチャをクリーンアップします。

    terraform destroy --var-file=terraform.sample
  2. yes を入力して確定します。

DevOps エンジニア

関連リソース

AWS ドキュメント

Terraformのドキュメント