翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Terraform を使用してデータベース移行用の CI/CD パイプラインを設定する
作成者: Dr. Rahul Sharad Gaikwad (AWS)、Aarti Rajput (AWS)、Ashish Bhatt (AWS)、Aniket Dekate (AWS)、Naveen Suthar (AWS)、Nadeem Rahaman (AWS)、R™ka Modi (AWS)、Tamilselvan P (AWS)
概要
このパターンは、データベース移行を信頼性が高く自動化された方法で管理するための継続的インテグレーションと継続的デプロイ (CI/CD) パイプラインを確立するためのものです。Infrastructure as Code (IaC) ツールである Terraform を使用して、必要なインフラストラクチャのプロビジョニング、データの移行、スキーマの変更のカスタマイズを行うプロセスについて説明します。
具体的には、このパターンは、オンプレミスの Microsoft SQL Server データベースを Amazon Relational Database Service (Amazon RDS) に移行するように CI/CD パイプラインを設定します AWS。このパターンを使用して、仮想マシン (VM) または別のクラウド環境にある SQL Server データベースを Amazon RDS に移行することもできます。
このパターンは、データベースの管理とデプロイに関連する以下の課題に対処します。
手動データベースデプロイは時間がかかり、エラーが発生しやすく、環境間で一貫性がありません。
インフラストラクチャのプロビジョニング、データ移行、スキーマの変更を調整することは、複雑で管理が難しい場合があります。
本番システムでは、データの整合性を確保し、データベースの更新中のダウンタイムを最小限に抑えることが重要です。
このパターンには次の利点があります。
データベース移行用の CI/CD パイプラインを実装することで、データベースの変更を更新およびデプロイするプロセスを合理化します。これにより、エラーのリスクが軽減され、環境間の一貫性が確保され、ダウンタイムが最小限に抑えられます。
信頼性、効率性、コラボレーションの向上に役立ちます。市場投入までの時間を短縮し、データベース更新中のダウンタイムを短縮できます。
データベース管理に最新の DevOps プラクティスを採用するのに役立ちます。これにより、ソフトウェア配信プロセスの俊敏性、信頼性、効率性が向上します。
前提条件と制限
前提条件
アクティブな AWS アカウント
Terraform 0.12 以降がローカルマシンにインストールされている (手順については、Terraform ドキュメント
を参照してください) HashiCorp からの Terraform AWS Provider バージョン 3.0.0 以降 (このプロバイダーの GitHub リポジトリ
を参照) 最小特権 AWS Identity and Access Management (IAM) ポリシー (ブログ記事「最小特権 IAM ポリシーを記述するためのテクニック
」を参照)
アーキテクチャ
このパターンでは、データベース移行プロセスの完全なインフラストラクチャを提供する次のアーキテクチャを実装します。

このアーキテクチャでは、以下のようになります。
ソースデータベースは、オンプレミス、仮想マシン (VM)、または別のクラウドプロバイダーによってホストされている SQL Server データベースです。この図は、ソースデータベースがオンプレミスデータセンターにあることを前提としています。
オンプレミスのデータセンターと AWS は、VPN または AWS Direct Connect 接続を介して接続されます。これにより、ソースデータベースと AWS インフラストラクチャ間の安全な通信が可能になります。
ターゲットデータベースは、データベースプロビジョニングパイプラインを使用して の仮想プライベートクラウド (VPC) AWS 内でホストされる Amazon RDS データベースです。
AWS Database Migration Service (AWS DMS) は、オンプレミスデータベースを にレプリケートします AWS。これは、ソースデータベースからターゲットデータベースへのレプリケーションを設定するために使用されます。
次の図は、プロビジョニング、 AWS DMS セットアップ、検証を含む、さまざまなレベルのデータベース移行プロセスで設定されたインフラストラクチャを示しています。

このプロセスでは、次の操作を行います。
検証パイプラインはすべてのチェックを検証します。必要なすべての検証が完了すると、統合パイプラインは次のステップに進みます。
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 ツールで、クラウドおよびオンプレミスのリソースの作成と管理に役立ちます。 HashiCorp
コードリポジトリ
このパターンのコードは、GitHub Database Migration DevOps Framework using Terraform samples
ベストプラクティス
データベース移行の自動テストを実装して、スキーマの変更とデータ整合性の正確性を検証します。これには、ユニットテスト、統合テスト、end-to-endテストが含まれます。
特に移行前に、データベースの堅牢なバックアップおよび復元戦略を実装します。これにより、データの整合性が確保され、障害が発生した場合にフォールバックオプションが提供されます。
移行中に障害や問題が発生した場合にデータベースの変更を元に戻すための堅牢なロールバック戦略を実装します。これには、以前のデータベース状態にロールバックしたり、個々の移行スクリプトを元に戻したりすることが含まれます。
データベース移行の進行状況とステータスを追跡するためのモニタリングとログ記録のメカニズムを設定します。これにより、問題をすばやく特定して解決できます。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
ローカルワークステーションで Git をセットアップして設定します。 | Git ドキュメントの指示に従って、ローカルワークステーションに Git | DevOps エンジニア |
プロジェクトフォルダを作成し、GitHub リポジトリからファイルを追加します。 |
| DevOps エンジニア |
タスク | 説明 | 必要なスキル |
---|---|---|
必須パラメータを更新します。 |
ローカルワークステーションの | DevOps エンジニア |
Terraform 構成を初期化します。 |
| DevOps エンジニア |
Terraform プランをプレビューしてください。 | Terraform プランを作成するには、次のコマンドを入力します。
Terraform は設定ファイルを評価して、宣言されたリソースのターゲット状態を判断します。次に、ターゲットの状態を現在の状態と比較し、プランを作成します。 | DevOps エンジニア |
プランを検証してください。 | 計画を確認し、ターゲットに必要なアーキテクチャが設定されていることを確認します AWS アカウント。 | DevOps エンジニア |
ソリューションをデプロイします。 |
| DevOps エンジニア |
タスク | 説明 | 必要なスキル |
---|---|---|
デプロイを検証します。 |
1. にサインインし AWS Management Console、 AWS CodePipeline コンソール 2. ナビゲーションペインで [Pipelines] (パイプライン) を選択します。 3. パイプラインを選択します 4. パイプラインの実行が正常に完了したことを確認します。 | DevOps エンジニア |
タスク | 説明 | 必要なスキル |
---|---|---|
インフラストラクチャをクリーンアップします。 |
| DevOps エンジニア |
関連リソース
AWS ドキュメント
Terraformのドキュメント