Slide 1

Slide 1 text

re:Invent 2024 の 
 DB アップデートは Multi-Region! 
 JAWS-UG横浜 #79 AWS re:Invent 2024 re:Cap Database
 大栗 宗
 1 #jawsugyokohama


Slide 2

Slide 2 text

お前誰よ? 大栗 宗(@maroon1st) クラスメソッド株式会社所属 re:Invent は 8 回目の参加 日系SIer → クラスメソッド → 某外資 → クラスメソッド (2回目) 最近は Cloudflare のプリセールスをやりつつ クラウド二刀流 Top Engineer をやってブログ書いてます ● Cloudflare, Google Cloud, AWS, etc ● Google Cloud Partner Top Engineer 2023, 2024, 2025 ● 2022, 2023 Japan AWS Top Engineers (Database) ● 2022, 2023, 2024 Japan AWS All Certifications Engineers #jawsugyokohama

Slide 3

Slide 3 text

データベースの アップデート #jawsugyokohama

Slide 4

Slide 4 text

一言でいうと #jawsugyokohama

Slide 5

Slide 5 text

Multi-Region #jawsugyokohama

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Amazon Aurora DSQL ● 「真にサーバーレスな分散 SQL データベース」 ● 主な特徴は ○ 楽観的同時実行制御 ○ 事実上の無制限スケール ○ インフラストラクチャの管理無し ○ 99.999% のマルチリージョン可用性 ○ 強い一貫性 ○ PostgreSQL 互換 ○ シンプルな設定

Slide 8

Slide 8 text

楽観的同時実行制御 ● アプリケーションから RDBMS へアクセスするときに長時 間ロックを取らないために採用される手法 ● 最初にデータを読んだ時点から書き込み時までにデー タが変更されていなければ書き込みを確定する ● DSQL ではデータ読み書き時はローカルリージョンの データで行い、コミット時に異なるリージョンに対して競 合を解決する

Slide 9

Slide 9 text

リージョン間の競合解決はコミット時

Slide 10

Slide 10 text

楽観的同時実行制御 ● 別のセッションに対して レコードをロックしない ● 競合が発生すると待たずにエラーを返すので、 アプリケーションでの リトライ処理は必須

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

4倍速い?

Slide 13

Slide 13 text

ロックしてくれる DB との レイテンシー比較。。。 低レイテンシーでも 競合時にリトライ処理が必要 (競合発生時の完了までの処理期間は?)

Slide 14

Slide 14 text

シンプルな設定

Slide 15

Slide 15 text

シンプルな設定 設定はこれだけ ● クラスタ設定 ○ マルチリージョン ■ リンク リージョンの追加有無 ■ リンク リージョンの指定 ■ ウィットネス リージョンの指定 ○ 削除保護の有無 ● タグ

Slide 16

Slide 16 text

Aurora Limitless Database も Active/Active なデータベースでしたよね

Slide 17

Slide 17 text

Aurora Limitless Database との比較 ● Aurora Limitless Database とは色々異なる Aurora DSQL Aurora Limitless Database データ配置 指定不能 指定可能 パラメータグループ 設定不能 指定可能 ロック なし(待たずにエラー) あり エンドポイント Public(VPC 外) Private(VPC 内) リージョン Multi-Region Single-Region SQL の互換性 制限が大きい 制限が小さい

Slide 18

Slide 18 text

Aurora DSQL アーキテクチャ

Slide 19

Slide 19 text

Amazon Aurora アーキテクチャ

Slide 20

Slide 20 text

Amazon Aurora のストレージ

Slide 21

Slide 21 text

Log レイヤーが別になっていたり 新規にストレージを開発している DSQL は 果たして Aurora と呼べるのだろうか。。。?

Slide 22

Slide 22 text

リージョン間の競合解決はコミット時

Slide 23

Slide 23 text

DSQL のコミット時は リージョン間通信を行う 書き込み処理を行う場合の レイテンシーは大きくなる

Slide 24

Slide 24 text

書き込みレイテンシも短い Multi-Region の DB が 欲しいとなったら

Slide 25

Slide 25 text

DynamoDB Global Tables

Slide 26

Slide 26 text

DynamoDB Global Tables Global Tables は2種類 ● 結果整合性 ○ 以前からある整合性(RPO がゼロではない) ○ 書き込み操作のレイテンシが小さい ○ 古いバージョンのデータを読む可能性がある(〜1秒) ● 強い整合性 ○ re:Invent 2024 で発表された整合性(RPO がゼロ) ○ 書き込み操作と強い一貫性読み取り操作のレイテンシが大 きい ○ 最新のデータを読み込む

Slide 27

Slide 27 text

DynamoDB 以外にも Multi-Region の DB が 出てますよ!

Slide 28

Slide 28 text

Amazon MemoryDB

Slide 29

Slide 29 text

Amazon MemoryDB Multi-Region ● ElastiCache にはグローバルデータストア(実質的な Cross-Region Replication)があった ● MemoryDB Multi-Region は Active/Active で書き込み ● 読み込みも書き込みも低レイテンシー (マイクロ秒の読み取り、 1 桁ミリ秒の書き込み) ● データは通常 1 秒以内に伝播される ● 結果整合性を CRDT (Conflict-free Replicated Data Type) で実現している ● 現時点では Valkey 7.3 が対応

Slide 30

Slide 30 text

CRDT (Conflict-free Replicated Data Type) 通常は Last Write Wins (LWW) 戦略を取る

Slide 31

Slide 31 text

CRDT (Conflict-free Replicated Data Type) 削除の問題も解決

Slide 32

Slide 32 text

実は Redis Enterprise にも 同様の機能がある模様です Active-Active geo-distribution https://redis.io/active-active/

Slide 33

Slide 33 text

どうして Multi-Region? ● re:Invent 2024 の DB アップデートは Multi-Region ● リージョン障害が発生してもダウンタイムは最低限 ● リージョン復旧時のフェイルバックの手間が少ない ● そもそも Multi-Region が必要なユースケース? ○ DSQL のワークショップでは DSQL は “DynamoDB for SQL Applications” だと言っており 小規模なワークロードでも大規模でも対応できる データベースという説明

Slide 34

Slide 34 text

No content