Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
【JAWS-UG朝会】今更ながら Amazon DynamoDB の論文を真面目に読んでみた
Search
MasakiKato5
June 20, 2023
Technology
6
1.7k
【JAWS-UG朝会】今更ながら Amazon DynamoDB の論文を真面目に読んでみた
2023/06/20のJAWS-UG朝会にて発表した資料。DynamoDBの英語論文を読んで面白かったところを発表
MasakiKato5
June 20, 2023
Tweet
Share
More Decks by MasakiKato5
See All by MasakiKato5
SpannerとAurora DSQLの同時実行制御の違いに想いを馳せる
masakikato5
0
770
Other Decks in Technology
See All in Technology
AIエージェント最前線! Amazon Bedrock、Amazon Q、そしてMCPを使いこなそう
minorun365
PRO
15
5.4k
生成AIで小説を書くためにプロンプトの制約や原則について学ぶ / prompt-engineering-for-ai-fiction
nwiizo
4
2.7k
怖くない!はじめてのClaude Code
shinya337
0
110
ひとり情シスなCTOがLLMと始めるオペレーション最適化 / CTO's LLM-Powered Ops
yamitzky
0
450
本が全く読めなかった過去の自分へ
genshun9
0
620
BrainPadプログラミングコンテスト記念LT会2025_社内イベント&問題解説
brainpadpr
1
170
Amazon ECS & AWS Fargate 運用アーキテクチャ2025 / Amazon ECS and AWS Fargate Ops Architecture 2025
iselegant
17
5.8k
25分で解説する「最小権限の原則」を実現するための AWS「ポリシー」大全 / 20250625-aws-summit-aws-policy
opelab
9
1.2k
GitHub Copilot の概要
tomokusaba
1
140
プロダクトエンジニアリング組織への歩み、その現在地 / Our journey to becoming a product engineering organization
hiro_torii
0
130
250627 関西Ruby会議08 前夜祭 RejectKaigi「DJ on Ruby Ver.0.1」
msykd
PRO
2
340
Delegating the chores of authenticating users to Keycloak
ahus1
0
130
Featured
See All Featured
For a Future-Friendly Web
brad_frost
179
9.8k
The Cult of Friendly URLs
andyhume
79
6.5k
Faster Mobile Websites
deanohume
307
31k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Become a Pro
speakerdeck
PRO
28
5.4k
The Cost Of JavaScript in 2023
addyosmani
51
8.5k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Building Applications with DynamoDB
mza
95
6.5k
Scaling GitHub
holman
459
140k
Site-Speed That Sticks
csswizardry
10
660
Transcript
今更ながら Amazon DynamoDB の論文を 真面目に読んでみた 2023.6.20 Masaki Kato © 2022,
Amazon Web Services, Inc. or its affiliates. All rights reserved.
2 自己紹介 • 加藤雅己(かとう まさき) • 外資系ITコンサルティング会社3年目 (2021年新卒入社) • 好きなAWSサービス
• AWS初心者 • JAWS朝会初登壇です! • 普段はアプリケーションアーキテクトとして働いています AWS Lambda Amazon DynamoDB NAT gateway 休みの日はフリスビーを投げたりプログラムを書い たりな日々を過ごしています AWS Ground Station
3 今日のまとめ どんな論文を読んだの? • Amazon DynamoDB: A Scalable, Predictably Performant,
and Fully Managed NoSQL Database Service (動画) 2022年7月に公開された論文 Amazon DynamoDBのアーキテクチャとその進化の歴史を紹介 なんで読もうと思ったの? • ネットで感想記事見つけた⇒こんな論文があるんだ • サービスの中身を知っていた方がいいものを作れるのでは?と感じたので読んでみた! • 最初は日本語の解説記事を読んだだけだったが、気付いたら英語でも 読んだ感想 • 技術的な話よりは課題に対するアプローチの歴史の話で読みやすかった (途中PaxosやB treeの話がでて、そこは難しかった) • AWSエンジニアの顧客体験への強い熱意を感じた
© 2022, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 4 Contents 1. Amazon DynamoDBとは? 2. 論文の構成 3. アーキテクチャ 4. プロビジョンドからオンデマンドへの旅 5. まとめ
© 2022, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 5 Amazon DynamoDBとは?
© 2022, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 6 A. 「AWSが提供するフルマネージドなNoSQLデータベースサービス」です
© 2022, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 7 Amazon DynamoDBの特徴 NoSQLデータベースらしいシンプルなクエリ操作 • NoSQL = Not only SQLの略 • RDBは多機能⇒代わりに制約も多い 〇:厳密なデータ構造、 JOINなどの複雑なクエリ、データの強い整合性等 ✖:書き込みの負荷分散が難しい等 • RDBの持つ多彩な機能を制限する代わりに、特定のユースケースにおいてメリッ トを持つDBのことをNoSQLと呼ぶ • DynamoDBはPut/Get/Scanなどシンプルなクエリしかサポートしない代わりに パ フォーマンスがテーブルのサイズ・リクエスト量によらず一貫 「キャパシティ」という概念を用いたスループット制御 • 読み込みや書き込み等の APIコールに対し、キャパシティを消費 ⇒キャパシティが不足していればスロットルがかかる • リリース当初、キャパシティは事前にユーザーが定義する必要があった ⇒2018年にオンデマンドに設定可能に Amazon DynamoDBとは? Amazon Prime Day期間(66時 間)合計での数兆req・ピーク時 最大8920万req/秒の中でも1 桁ミリ秒のレイテンシを出し続 けたとのこと!! I/Oやコンピューティング時間ではな く、キャパシティという単位を用いる ことで裏のサーバーを意識させない 設計?
© 2022, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 8 Contents 1. Amazon DynamoDBとは? 2. 論文の構成 3. アーキテクチャ 4. プロビジョンドからオンデマンドへの旅 5. まとめ
© 2022, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 9 論文の構成 1. 導入 DynamoDBの特徴を紹介 2. 歴史 もともと2つのDBだったものをDynamoDBにしたんだよ、みたいな話 3. アーキテクチャ DynamoDBのアーキテクチャについて。後述 4. プロビジョンドからオンデマンドへの旅 パフォーマンスの課題をどうやって解決したのかという話。後述 5. 耐久性と完全性 データが壊れたり失われたりしないようにどうやっているか 6. 可用性 DynamoDBを止めないようにする仕組みの紹介 7. ベンチマーク DynamoDBはすごい 8. 結論 DynamoDBはすごい 今日は時間の関係 から、ここだけを紹 介 このへんもめちゃく ちゃ面白かったで す
© 2022, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 10 Contents 1. Amazon DynamoDBとは? 2. 論文の構成 3. アーキテクチャ 4. プロビジョンドからオンデマンドへの旅 5. まとめ
© 2022, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 11 マイクロサービスアーキテクチャ 複数のマイクロサービスを組み合わせ、 NoSQL DBサービスを実現 ストレージノードは最低 3つのAZにデータを複製 DynamoDBのアーキテクチャ Global Admission Control スループット 制御 Request Router Metadata Service リクエスト 受付・振分け テーブルに関する メタデータ管理 Authentication System 認証システム Autoadmin Service パーティション 配置の管理など AZ-a AZ-b AZ-c Storage Node SSD SSD Storage Node SSD SSD Storage Node SSD SSD 11
© 2022, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 12 マルチテナントアーキテクチャ × シングルテナントエクスペリエンス 1つのテーブルを小さなパーティションに分割し、ストレージノードに分散配置。 1つのストレージノードには複数のパーティションが配置される(マルチテナントアーキテクチャ)が、同じノードに別の パーティションがいることをユーザーは意識しない(シングルテナントエクスペリエンス) DynamoDBのアーキテクチャ Partition 1-A Storage Node Partition 1-B Partition 1-C Table1 Table2 Partition 2-A Partition 2-B Partition 2-C 分割 分散して 配置 Partition 1-A Partition 1-B Partition 1-C Partition 2-A Partition 2-B Partition 2-C Storage Node Storage Node 12
© 2022, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 13 Contents 1. Amazon DynamoDBとは? 2. 論文の構成 3. アーキテクチャ 4. プロビジョンドからオンデマンドへの旅 5. まとめ
Storage Node マルチテナントアーキテクチャの抱える2つの課題 1つのノードに複数のパーティションを共存させるため、パーティションに予めスループット制限をかける仕組みを採用 (WCU/RCU) プロビジョンドからオンデマンドへの旅 (1/8) Table 1 -
Partition A Table 2 - Partition X Table 1 - Partition A Table 1 - Partition B Table 1 - Partition C テーブルのスループットを パーティションに均等に割当 合計スループットがノードの限界を 超えないよう配置 Table1: 2400 WCU 800 WCU 800 WCU 800 WCU 800 WCU 900 WCU 2000 WCU (ユーザーが設定) 14
© 2022, Amazon Web Service, Inc. or its affiliates. All
rights reserved. マルチテナントアーキテクチャの抱える2つの課題 プロビジョンドからオンデマンドへの旅 (2/8) 15 Storage Node Table 1 - Partition A Table 2 - Partition X Table 1 - Partition A Table 1 - Partition B Table 1 - Partition C テーブルのスループットを パーティションに均等に割当 合計スループットがノードの限界を 超えないよう配置 Table1: 2400 WCU 800 WCU 800 WCU 800 WCU 800 WCU 900 WCU 2000 WCU 1つのノードに複数のパーティションを共存させるため、パーティションに予めスループット制限をかける仕組みを採用 (WCU/RCU) ⇒リクエストの空間的・時間的な不均一性に対応できず、スロットリング(流量制限)がかかる課題が発生 複数の解決策によりスループットを管理、調整しスロットリングを抑制⇒オンデマンドキャパシティの実現へ 課題1: 特定のキー領域へ のアクセス集中 課題2: 瞬間的なアクセ ス量の増加
Storage Node バーストによる瞬間的なリクエスト増大の吸収 普段使い切っていないキャパシティを保存⇒リクエスト増加時にバーストさせ瞬間的なリクエスト増加に対応 ストレージノードのキャパシティを超える場合には他のパーティションへ迷惑をかけるためバースト不可 プロビジョンドからオンデマンドへの旅 (3/8) Table 1 -
Partition A Table 2 - Partition X バースト可能な場合 バーストできない場合 800 WCU 1200 WCU 2000 WCU Storage Node Table 1 - Partition A Table 2 - Partition X 800 WCU 400 WCU 2000 WCU 16 ノードの限界を超えスロッ トリングがかかる ※課題として残る +700 WCU +700 WCU 例:800WCUのPartition Aに1500WCUのリクエストが来た場合
キャパシティ調整による空間的リクエスト分布の吸収 長期間特定のパーティションにアクセスが集中する場合には、均等に割り当てたキャパシティの使用量に応じた再割 り当てを実施。 プロビジョンドからオンデマンドへの旅 (4/8) 例:800WCUのPartition Aに1500WCUのリクエストが来た場合 Table 1 -
Partition A Table 1 - Partition B Table 1 - Partition C Table1: 2400 WCU 800 WCU 800 WCU Table 1 - Partition A Table 1 - Partition B Table 1 - Partition C Table1: 2400 WCU 1500 WCU 600 WCU 300 WCU 1500 WCU 割り当てを 再分配 割当量を超え瞬間的に スロットリングがかかる ※課題として残る 17 初期状態 最終状態
テーブル全域の監視による不当なスロットルの防止 パーティションのキャパシティが少ないことによる不当なスロットルを防止するため、テーブル全域の流量監視サービ ス(GAC)を作成。リクエスト時に都度キャパシティを割当ての許可をとることで不当なスロットルを防止。 プロビジョンドからオンデマンドへの旅 (5/8) 18 Global Admission Control Request
Router AZ-c Storage Node AZ-b Storage Node AZ-a Storage Node ①ストレージノードへのリク エスト前にGACへテーブル のキャパシティを確認 ②テーブルのキャパシティが 残っている場合のみ ストレージノードへアクセス ストレージノード内の流量制限は残す ⇒ハードウェアの限界を超えたリクエスト を拒否 ※GACのような攻めの仕組みと ストレージノードの流量制限のような守り の仕組みが共存するケースが多くみら れ、印象的だった
© 2022, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 消費キャパシティの監視によるパーティションの適切な配置換え ストレージノード内のパーティションの消費キャパシティが閾値を超えた場合、パーティションを追い出すようリクエスト を出すことでノードのキャパシティを超えることを予防する。 プロビジョンドからオンデマンドへの旅 (6/8) Storage Node Table 3 - Partition Y 2000 WCU Storage Node Table 1 - Partition A Table 2 - Partition X 600 WCU 1200 WCU 2000 WCU 300 WCU 19 Auto Admin Service ①Partition Xを追い出すよ うリクエスト ②空きがあるノードを探し、 Partition Xを移動
リクエストが集中するパーティションの分割 特定の範囲へのアクセスが集中する場合、どうしてもスロットルがかかりやすい。こういったアクセスが集中するパー ティションを分割することでノードの流量制限を超えることを予防。 ①特定のキーへのアクセス集中②テーブル全域のスキャンはパーティション分割の効果がないため分割しない プロビジョンドからオンデマンドへの旅 (7/8) 20 Table 1 -
Partition A Table 1 - Partition B Table 1 - Partition C Table 1 - Partition A Table 1 - Partition B Table 1 - Partition C Table 1 - Partition D PartitionCにリクエストが集中 Partitionを分割しリクエストを平準化
ついにオンデマンドへ プロビジョンドからオンデマンドへの旅 (8/8) 21 これらの仕組みにより、消費した流量からオンデマンドにキャパシティを設定する仕組みが構 築された。 時間的なリクエスト分布による課題 空間的なリクエスト分布による課題 GACによるテーブル全域での キャパシティ管理
バーストキャパシティ スループットを監視し パーティションの適切な配置換え パーティション割当て キャパシティの動的な調整 パーティションの分割 オンデマンドキャパシティ プロビジョンドキャパシティ
© 2022, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 22 Contents 1. Amazon DynamoDBとは? 2. 論文の構成 3. アーキテクチャ 4. プロビジョンドからオンデマンドへの旅 5. まとめ
© 2022, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 感想&今日のまとめ • 技術的な話よりは課題に対するアプローチの歴史の話だった ◦ 出てきた課題に対し、迅速に対応可能な部分から改善していく 姿勢は見習いたい ◦ 攻めと守りの仕組みを作ることで安全なアプリケーションを設計できる ▪ 本日紹介しなかった可用性/耐久性についての考え方でも同じ • AWSエンジニアの顧客体験への強い熱意を感じた ◦ 論文中に「エクスペリエンス」という単語が非常に多く見られた • AWSサービスはその実装を意識させない作りになっていることが多いが、裏側まで知ること でより良いアプリケーションを設計できるのではないか 参考 • Amazon DynamoDB: A Scalable, Predictably Performant, and Fully Managed NoSQL Database Service • USENIX ATC '22 - Amazon DynamoDB: A Scalable, Predictably Performant, and Fully Managed NoSQL Database Service - YouTube • Amazon DynamoDB の論文を読んでいく - Qiita • AmazonのDynamoDB論文を眺めた | Takuya Kitazawa 23