Slide 1

Slide 1 text

真のサーバーレスへ向けたAuroraの進化 Aurora Limitless Database クラスメソッド株式会社 岩⽥ 智哉 1

Slide 2

Slide 2 text

2 ⾃⼰紹介 l クラスメソッド株式会社 サーバーサイドエンジニア l 2023 Japan AWS Top Engineer l 2023 Japan AWS All Certifications Engineer l 前⼗字靭帯再建⼿術リハビリ中 l re:invent2023不参加😭 岩⽥ 智哉

Slide 3

Slide 3 text

3 Aurora Limitless Database!!

Slide 4

Slide 4 text

4 Aurora Limitless Databaseの概要 • Monday Night Liveで発表されたAuroraの新機能 • 書き込み性能を(スケールアップではなく)スケールアウトできる︕︕ • シャーディングの技術を応⽤しつつ、シャーディングの⾟みを解消 • 数100万/秒のトランザクションを処理可能 • ペタバイトクラスのデータを管理可能 • 現在プレビュー申請受付中 • 現時点ではPostgreSQL互換のみ

Slide 5

Slide 5 text

5 データベースのシャーディング id mod 4 1 2 3 4 • クライアントはどのシャードに接続するべき︖ • シャードを跨いだ操作はどうする︖ • どうやって⼀貫性を保証する︖ • ノードのリバランシングはどうする︖︖ 「シャード」という単位で分割管理する技術 シャーディングは難しい… cluster1 cluster2 cluster3 cluster4

Slide 6

Slide 6 text

6 シャーディングの複雑さを解 消し、ユーザーが意識すべき ポイントを減らしているのが Aurora Limitless Database

Slide 7

Slide 7 text

7 注意事項 プレビュー申請出しましたが まだ触れてません ドキュメントもまだ公開されていなさそうな ので、re:inventの各セッションから集めた情 報に妄想を混じえながら説明していきます

Slide 8

Slide 8 text

8 Aurora Limitless Database を⽀える技術 •Grover •Caspian •Amazon Time Sync Service

Slide 9

Slide 9 text

9 Grover 「AWS re:Invent 2023 - Monday Night Live Keynote with Peter DeSantis 」より https://youtu.be/pJG6nmR7XxI?si=KThIxLju1QTU3TzM

Slide 10

Slide 10 text

10 Grover • Auroraのストレージエンジン • 3つのAZにまたがってAZ毎に2箇所に分散書き込み • Log based storage

Slide 11

Slide 11 text

11 Caspian • AWSが新たに開発したハイパーバイザ • インスタンスの再起動無しにスケールアップ可能 「AWS re:Invent 2023 - Monday Night Live Keynote with Peter DeSantis 」より https://youtu.be/pJG6nmR7XxI?si=KThIxLju1QTU3TzM

Slide 12

Slide 12 text

12 Caspian management 「AWS re:Invent 2023 - [LAUNCH] Introducing Amazon ElastiCache Serverless (DAT342)」より https://youtu.be/YYStP97pbXo?si=BRIzTArWEG8L98Kn

Slide 13

Slide 13 text

13 Amazon Time Sync Service • フルマネージドな時刻同期サービス • Precision Time Protocol(PTP)をサポート(new!!) • マイクロ秒単位の時刻同期が可能に • コレをPostgreSQLのMVCCに活⽤ • MVCC…MultiVersion Concurrency Control

Slide 14

Slide 14 text

14 Amazon Time Sync Service 「AWS re:Invent 2023 - Monday Night Live Keynote with Peter DeSantis 」より https://youtu.be/pJG6nmR7XxI?si=KThIxLju1QTU3TzM

Slide 15

Slide 15 text

15 分散システムの難しさ 0.000 0.005 0.004 0.006 commit commit 実際の時刻 commit クライアント1 クライアント2 ノード1 ノード2 • ノード間で時刻はズレる • イベントの順序が逆転し得る

Slide 16

Slide 16 text

16 時刻の信頼区間が重ならないよう待機して対応 0.000 0.005 • 最早: 0.004 • 最遅: 0.006 • 最早: 0.005 • 最遅: 0.007 commit 待機… 実際の時刻 commit クライアント1 クライアント2 ノード1 ノード2 • 最早: 0.008 • 最遅: 0.010 commit 0.009 信頼区間の幅が⼩さいほど待機時間を短くできる

Slide 17

Slide 17 text

17 これらの技術を組み合わせ ることでシャーディングの 複雑さを解消

Slide 18

Slide 18 text

18 Aurora Limitless Databaseのアーキテクチャ概要 コンピューティングレイヤがさらに2つのレイヤに • Distributed transaction routers • Data access shards 「AWS re:Invent 2023 - [LAUNCH] Achieving scale with Amazon Aurora Limitless Database (DAT344) 」より https://youtu.be/a9FfjuVJ9d8?si=W2r3a0rCPrJGVoXX

Slide 19

Slide 19 text

19 Distributed transaction routers • シャードグループのエンドポイントの背後で稼働 • ⾃動でスケールアップ/スケールアウト • データベースのメタデータを管理 • スキーマ • シャードキーとシャードのマッピング • トランザクション管理のためのタイムスタンプ管理 • クエリのプランニングと結果の集約

Slide 20

Slide 20 text

20 Data access shards • シャードキーに対応するテーブルの⼀部を管理 • referenceテーブル(後述)のコピーを所持 • ⾃動的にスケールアウトし、分割 • シャード内のローカルなクエリのプランニング • シャード内のローカルなトランザクション管理

Slide 21

Slide 21 text

21 シャードの管理 • シャードキーのハッシュに基づいてテーブルをフラグメントとい う単位で分割管理 • Transaction Routerはフラグメントへの参照を保持する • シャーディングされたテーブルは複数のパーティションに分割 「AWS re:Invent 2023 - [LAUNCH] Achieving scale with Amazon Aurora Limitless Database (DAT344) 」より https://youtu.be/a9FfjuVJ9d8?si=W2r3a0rCPrJGVoXX

Slide 22

Slide 22 text

22 Table slice • フラグメントはさらにスライスと呼ばれる単位に分割 • スケールアウトに伴うシャード分割時にスライスが移動 • ここでGroverが活躍︕︕ 「AWS re:Invent 2023 - [LAUNCH] Achieving scale with Amazon Aurora Limitless Database (DAT344) 」より https://youtu.be/a9FfjuVJ9d8?si=W2r3a0rCPrJGVoXX

Slide 23

Slide 23 text

23 テーブルの種別 • sharded • シャーディングされるテーブル • co-located • 指定した別のテーブルと同じシャードに配置される • reference • 全シャードにテーブル全体が複製される • standard • シャーディングされない普通のテーブル

Slide 24

Slide 24 text

24 shardedが向くテーブル • 書き込みが多いテーブル • シャードキーのカーディナリティが⾼いテーブル • 顧客テーブルを性別でシャーディングしても効果は薄い • ECサイトの顧客テーブルや受注テーブル

Slide 25

Slide 25 text

25 shardedかつco-locatedが向くテーブル • シャードキーを使って他のテーブルと結合されるテーブル • 単⼀シャード内でJOINが完結すれば処理が⾼速になる • ECサイトにおける受注テーブルなど • ※よく顧客テーブルと結合される

Slide 26

Slide 26 text

26 referenceが向くテーブル • 頻繁に参照・結合されるテーブル • 単⼀シャード内でJOINが完結すれば処理が⾼速になる • ECサイトにおける税率マスタなど • 書き込み頻度が少ないテーブル • ACID特性を担保するために、全シャードにまたがる2相 コミットが必要になり、書き込み性能が出ない

Slide 27

Slide 27 text

27 テーブルの作り⽅ • DDLはPostgreSQL完全互換 • テーブルの種別やシャードキーはセッションパラメータをSETすることで指 定する • アプリのマイグレーション処理に⼀⼯夫必要になりそう • AWS環境のマイグレーション処理のみSET⽂を流すなど 「AWS re:Invent 2023 - [LAUNCH] Achieving scale with Amazon Aurora Limitless Database (DAT344) 」より https://youtu.be/a9FfjuVJ9d8?si=W2r3a0rCPrJGVoXX

Slide 28

Slide 28 text

28 開発はどう変わる︖ • テーブルの種別は何が適切か︖ • シャーディングを意識したテーブル設計 • シャードキーは何が適切か︖ • 極⼒単⼀シャードで処理が完結するように設計 • SQLのアクセスパスや実⾏計画でもシャードを意識する

Slide 29

Slide 29 text

29 まとめ Aurora Limitless Databaseを使うと 従来Auroraだけではカバーしきれなかった ワークロードもカバーできるように プレビューに申し込んで ガンガン検証しましょう︕︕

Slide 30

Slide 30 text

30 以上 ありがとうございました

Slide 31

Slide 31 text

31