Amazon DynamoDBの耐障害性を考える

2023/11/29に公開

はじめに

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

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

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

  • Amazon DynamoDBとは
  • Amazon DynamoDB for Advance
  • Amazon DynamoDBのスケーラビリティ
  • Amazon DynamoDBのディザスタリカバリ

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

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

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

Amazon DynamoDBとは

Amazon DynamoDBは、高い可用性、耐障害性、およびスケーラビリティを備えた、完全にマネージドされたNoSQLデータベースサービスです。

DynamoDBはTalbeと呼ばれる単位で構成され、各テーブルが必ず1つのPrimary Keyを保持しています。

Amazon DynamoDB for Advance

ストリーミング

DynamoDB Streamsは、データベース内の変更をリアルタイムで捕捉する機能を提供します。
これにより、データの変更に対してトリガーを設定して、リアルタイムアプリケーションやイベント駆動型サービスを構築できます。

以前はDynamoDBのストリーミングはDynamoDB Streamsのみでしたが、最近になってKinesis Data Streamsとも連携できるようになりました。

基本的にはDynamoDB StreamsはDynamoDBテーブルへの変更をトリガーにLambdaあるいはKCL Adapterに連携するために利用します。

一方、Kinesis Data Streamsはより広域な目的に利用できるため、DynamoDB Streamsで満たせない要件があるときにはKinesis Data Streamsの利用を検討しましょう。

最後に比較表をまとめたので参考にしてください。

機能 DynamoDB Streams Kinesis Data Streams
目的 DynamoDB テーブルへの変更をキャプチャ データストリームを処理
対応するデータ DynamoDB テーブル 任意のデータ
データの順序 保証される 保証されない
設定の容易さ 比較的容易 比較的大変

Amazon DynamoDBのスケーラビリティ

キャパシティモード

DynamoDBは、オンデマンドモードとプロビジョニングモードという2つの異なるキャパシティモードを提供しています。

オンデマンドモードではトラフィックに応じて自動的にスケーリングされ、課金は使用量に基づいて行われます。
急激なトラフィック変動に対応し、柔軟な利用が可能です。

プロビジョニングモードでは事前に設定したスループット容量に基づいて課金され、定常的なワークロードに最適です。
トラフィックの変動が予測可能な場合に適しています。

DynamoDB Accelerator

DynamoDB Accelerator(DAX)は、インメモリキャッシュを提供し、ミリ秒単位のレイテンシでデータへのアクセスを可能にします。

DAXを使用することで、データベースへのアクセス速度が向上し、アプリケーションのパフォーマンスが向上します。

なお、AWSではインメモリキャッシュとしてAmazon ElastiCacheが提供されていますがDAXとElastiCacheはそれぞれ異なる使用ケースに適しています。

DAXはDynamoDBに特化しており、DynamoDBへのアクセスを高速化する際に理想的です。
一方、ElastiCacheはRedisやMemcachedを使用することで、汎用的なデータキャッシュソリューションとして広く利用されます。

Amazon DynamoDBのディザスタリカバリ

DynamoDB Global Table

DynamoDB Global Tablesは、複数のAWSリージョンにまたがるデータの自動的なレプリケーションをサポートします。
これにより、地域全体の障害に対処し、ユーザーエクスペリエンスを向上させることができます。

グローバルテーブルは、書き込み可能なプライマリリージョンと、読み取り専用のセカンダリリージョンを指定でき、地理的な近接性に応じてトラフィックを分散させることが可能です。

Point-in-Time Recovery

Point-in-Time Recovery(PITR)は、誤って削除されたテーブルやアイテムを特定の時点まで復元できる機能を提供します。

データの損失を防ぎ、データの安全性を確保します。PITRを使用することで、意図しないデータの変更に対処できます。

オンデマンドバックアップ

DynamoDBでは、オンデマンドバックアップを手動で作成できます。
これにより、データの安全性を確保し、災害復旧やデータ損失に備えるための手段となります。

まとめ

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

  • Amazon DynamoDBとは
  • Amazon DynamoDB for Advance
  • Amazon DynamoDBのスケーラビリティ
  • Amazon DynamoDBのディザスタリカバリ

次回はDBの耐障害性と絡めてAWS DMSを用いた耐障害性を考えます。

Discussion