🍣

AWS DMSを用いた耐障害性を考える

2023/11/30に公開

はじめに

この記事はDevOps on AWS大全の一部です。
DevOps on AWS大全の一覧はこちら

この記事ではAWS DMSを耐障害性の観点から超詳細解説しています。

具体的には以下流れで説明します。

  • AWS DMSとは
  • AWS DMSを用いたディザスタリカバリ
  • AWS DMSを用いる時のベストプラクティス

AWSの区分でいう「Level 200:トピックの入門知識を持っていることを前提に、ベストプラクティス、サービス機能を解説するレベル」の内容です。

この記事を読んでほしい人

  • AWS DMSを採用するときのベストプラクティスを説明できるようになりたい人
  • DBの耐障害性に不安を感じている人
  • AWS Certified DevOps Engineer Professionalを目指している人

AWS DMSとは

Amazon Web Services Database Migration Service(AWS DMS)は、異なるデータベースエンジン間でのデータの移行、変換、同期を可能にするフルマネージドなデータベース移行サービスです。

AWS DMSを使用することで、既存のデータベースをAWS上の異なるデータベースエンジンに簡単かつ効果的に移行できます。
そのため、アプリケーションのクラウドへの移行、データウェアハウスの構築、データの統合など、様々なシナリオに対応できます。

また、AWS DMSは、AWS DMSにAWS Schema Conversion Tool(AWS SCT)を利用したデータベースエンジン間でのデータ変換やフィルタリングをサポートしています。
これにより、異なるデータベースエンジン間でのデータ型や構造の違いを補正し、移行プロセス中にデータの整合性を保つことができます。

AWS SCTは、異なるデータベースエンジン間でのスキーマ変換を簡素化し、自動化するためのツールです。
AWS SCTは、オンプレミスデータベースや他のクラウドプロバイダからAmazon Aurora、Amazon Redshift、Amazon RDSなどAWSのデータベースサービスにデータを移行する際のスキーマ変換プロセスを支援します。

AWS SCTを利用する際には変換後のスキーマが正確であることを確認するために、変換されたスキーマの検証を行うことが重要です。
AWS SCTは変換プロセスの透明性を提供しますが、自動であるため意図しない変換が行われてしまうことがあります。
そのため、検証を通じてデータの整合性を確保し、移行後のシステムの安定性を向上させます。

AWS DMS for Advance

サポートされるデータベースエンジンの理解

AWS DMSは多くのデータベースエンジンと互換性がありますが、全てのデータベースエンジンに対して同じような機能や性能が提供されるわけではありません。

データベースエンジンごとにサポートされる機能や最適な構成が異なるため、移行プロジェクトを開始する前にサポートされるデータベースエンジンの特性を理解することが重要です。

ターゲットデータベースのパフォーマンステスト

データ移行が完了した後も、AWS DMSによって同期されたデータがターゲットデータベースで期待通りのパフォーマンスを発揮するかどうかを確認することが重要です。

パフォーマンステストを行い、適切な設定やインデックスを検討することで、本番環境でのスムーズな運用が期待できます。

AWS DMSを用いたディザスタリカバリ

ソースDBとターゲットDBの同期

AWS DMSは、データベースの変更をトリガーとして、ソースデータベースとターゲットデータベースを同期させることができます。

これにより、リアルタイムでのデータ同期が可能となり、データベースの冗長性と可用性を向上させます。

障害が発生した場合でも、ソースとターゲットが同期しているため、瞬時に切り替えてサービスの継続性を確保できます。

AWS DMS自体の冗長性

AWS DMSを使用する際、データ移行プロセスは冗長でフォールトトレラントなアーキテクチャに基づいています。

データ移行中にエラーが発生した場合でも、自動的にリトライが行われ、データの整合性が保たれます。
これにより、データ移行プロセス中のエラーに強いディザスタリカバリメカニズムが提供されます。

まとめ

この記事ではAWS DMSを耐障害性の観点から超詳細解説しました。

  • AWS DMSとは
  • AWS DMS for Advance
  • AWS DMSを用いたディザスタリカバリ

次回はAutoScalingを用いた耐障害性を考えます。

Discussion