
CONTENT
こんにちは、エンジニアのKSです。
現在AWS資格であるソリューションアーキテクト合格に向けて勉強中です。
今回はセキュリティ関連サービスについてまとめてみました。
■DynamoDBとは
・フルマネージドなサーバーレスkey-value型NoSQLデータベースサービス
ーRDB(リレーショナルデータベース)と違い、JOINなどできない
・ミリ秒単位のアクセスレイテンシー、データの拡張性が求められるシーンで使用
・低コスト
・オートスケーリング機能あり
■キャパシティモード
◆オンデマンドモード
・特徴: アクセス量に応じて自動的に処理能力を調整してくれるモード
・メリット: トラフィックが予測できない場合に便利(突発的なアクセス増にも対応可能)
・デメリット: 一定以上のリクエストが常時ある場合はコストが高くなることもある
◆プロビジョニングモード
・特徴: ユーザーがあらかじめ「どれくらいのスループットを使うか」を指定して運用するモード
・単位は リードキャパシティユニット(RCU) と ライトキャパシティユニット(WCU) で指定する
◇リードキャパシティユニット
・読み込みの処理能力を表す単位
・1 RCU = 1秒間に、4KBまでのアイテムを1回の強い整合性読み込みできる
・弱い整合性読み込み(Eventually Consistent Read)の場合は、同じRCUで2回読み込み可能
◇ライトキャパシティユニット
・書き込みの処理能力を表す単位
・1 WCU = 1秒間に、1KBまでのアイテムを1回書き込みできる
■需要に応じたスループットの自動スケーリング設定
・プロビジョニングモードでよく使う仕組み
・「現在のアクセス量に応じて、RCUやWCUを自動的に増減」してくれる
・例えば「平均利用率が70%を超えたらスケールアップ」「30%を下回ったらスケールダウン」などのルールを設定できる
・突発的すぎるアクセスには間に合わない場合があるため、オンデマンドほど柔軟ではない
■バーストクレジット
・プロビジョニングモード利用時に関係する仕組み
・DynamoDBは短期間のリクエスト増に対応するため、余っているキャパシティをクレジットとして貯める
・突然アクセスが増えたときは、このクレジットを消費して一時的に処理能力を増やせる
・クレジットを使い切ると、指定したスループットを超えるリクエストは スロットリング (制限)される
■DynamoDB Streams
・機能概要: DynamoDBテーブルに対する変更(挿入・更新・削除)の履歴を、時系列に沿ってキャプチャして保存する仕組み
・保存期間: 最大24時間
・ユースケース
・非同期処理: 例えば「テーブルに新しい注文が入ったらLambdaで通知を送る」など
・変更データキャプチャ (CDC): データの変更を別のシステムに同期させる
・監査ログ: 誰がいつ何を変えたかを追跡
・グローバルテーブル使用時
・技術的ポイント: Lambdaと組み合わせるのが一般的(イベントドリブンアーキテクチャが組みやすい)
■DynamoDB Accelerator (DAX)
・機能概要: DynamoDB専用のインメモリキャッシュサービス
・目的: 読み込み性能をさらに向上させる(最大マイクロ秒レベル のレスポンスを実現可能)
◆仕組み
・アプリケーションはDAXクラスタにアクセス
・キャッシュにデータがあれば即応答(キャッシュヒット)
・なければDynamoDBから取得してキャッシュに保存(キャッシュミス)
◆メリット:
・レイテンシ大幅削減(低遅延が必須のアプリに向いている)
・読み取りコスト削減(RCU消費を減らせる)
◆デメリット:
・書き込みは必ずDynamoDBに行くので高速化されない
・強い整合性読み込みはサポートされない(最終的整合性)
■DynamoDB グローバルテーブル
・機能概要: 複数のリージョンにまたがって、同じテーブルを自動的にレプリケーションする仕組み
◆特徴
・各リージョンで 読み書きともに可能(アクティブ-アクティブ構成)
・データはリージョン間で非同期にレプリケートされる
◆ユースケース
・世界中にユーザーがいるアプリ(ユーザーが近いリージョンで高速にアクセスできる)
・災害対策(あるリージョンが落ちても別リージョンで継続稼働)
◆考慮点
・複数リージョンで同じアイテムを同時更新した場合は「最後に書き込んだものが勝つ」(Last writer wins)ルール
・追加コスト(リージョン間レプリケーションの通信費など)が発生する
◆手順
・元となるリージョン内のDynamoDBテーブルの Streamsを有効化
・DynamoDBテーブルに対してグローバルテーブルを設定、展開したいリージョンを指定して レプリカを追加する