翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Terraform を使用してデータベース移行用の CI/CD パイプラインを設定する
Amazon Web Services、Rahul Sharad Gaikwad 博士、Ashish Bhatt、Aniket Dekate、Ruchika Modi、Tamilselvan P、Nadeem Rahaman、Aarti Rajput、Naveen Suthar
概要
このパターンでは、信頼性が高く自動化された方法でデータベース移行を管理するための継続的インテグレーションと継続的デプロイ (CI/CD) パイプラインを確立します。Infrastructure as Code (IaC) ツールである Terraform を使用して、必要なインフラストラクチャのプロビジョニング、データの移行、スキーマの変更のカスタマイズを行うプロセスについて説明します。
具体的には、このパターンでは、オンプレミスの Microsoft SQL Server データベースを AWSの Amazon Relational Database Service (Amazon RDS) に移行する CI/CD パイプラインを設定します。このパターンを使用して、仮想マシン (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 はフルマネージド型の継続的統合サービスであり、このサービスにより、ソースコードをコンパイルし、テストを実行し、デプロイ可能なソフトウェアパッケージを作成できます。
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 内の Database Migration DevOps Framework using Terraform samples
ベストプラクティス
データベース移行の自動テストを実装して、スキーマの変更とデータの整合性の正確性を確認します。これには、ユニットテスト、統合テスト、エンドツーエンドテストが含まれます。
データベースの堅牢なバックアップおよび復元戦略を、特に移行前に実装します。これにより、データの整合性が確保され、障害が発生した場合にフォールバックオプションが提供されます。
移行中に障害や問題が発生した場合にデータベースの変更を元に戻すための堅牢なロールバック戦略を実装します。これには、以前のデータベースの状態にロールバックしたり、個々の移行スクリプトを元に戻したりすることが含まれます。
データベース移行の進行状況とステータスを追跡するため、モニタリングとログ記録のメカニズムを設定します。これにより、問題をすばやく特定して解決できます。
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
ローカルワークステーションに Git をセットアップして構成します。 | Git ドキュメント | DevOps エンジニア |
プロジェクトフォルダを作成し、GitHub リポジトリからファイルを追加します。 |
| DevOps エンジニア |
| タスク | 説明 | 必要なスキル |
|---|---|---|
必須パラメータを更新します。 |
ローカルワークステーションの | DevOps エンジニア |
Terraform の設定を初期化します。 |
| DevOps エンジニア |
Terraform プランをプレビューしてください。 | Terraform プランを作成するには、以下のコマンドを入力します。
Terraform は設定ファイルを評価して、宣言されたリソースのターゲット状態を判断します。次に、ターゲットの状態を現在の状態と比較し、プランを作成します。 | DevOps エンジニア |
プランを検証してください。 | プランを確認し、ターゲットの AWS アカウントアカウントで必要なアーキテクチャが設定されていることを確認します。 | DevOps エンジニア |
ソリューションのデプロイ |
| DevOps エンジニア |
| タスク | 説明 | 必要なスキル |
|---|---|---|
デプロイを検証する。 |
1. にサインインし AWS マネジメントコンソール、AWS CodePipeline コンソール 2. ナビゲーションペインで [Pipelines] (パイプライン) を選択します。 3. 4. パイプライン実行が正常に完了したことを検証します。 | DevOps エンジニア |
| タスク | 説明 | 必要なスキル |
|---|---|---|
インフラストラクチャをクリーンアップします。 |
| DevOps エンジニア |
関連リソース
AWS ドキュメント
Terraformのドキュメント