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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
MasakiKato5
June 20, 2023
Technology
1.9k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
【JAWS-UG朝会】今更ながら Amazon DynamoDB の論文を真面目に読んでみた
2023/06/20のJAWS-UG朝会にて発表した資料。DynamoDBの英語論文を読んで面白かったところを発表
MasakiKato5
June 20, 2023
More Decks by MasakiKato5
See All by MasakiKato5
Cloud Runのアップデートにみる本番環境へのラストワンマイル戦略 / Google Cloud Next 2026 Recap
masakikato5
1
92
生成AI時代のクラウドネイティブを考える / Exploring Cloud Native for the Generative AI Era
masakikato5
0
46
authorized view data sharing in BigQuery
masakikato5
1
30
SpannerとAurora DSQLの同時実行制御の違いに想いを馳せる
masakikato5
0
1.1k
Other Decks in Technology
See All in Technology
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
200
自分が詳しくない領域でAIを使う #プロヒス2026
konifar
13
5.2k
AIはどのように 組織のアジリティを変えるのか?
junki
4
1k
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
160
AI-DLCを “そのまま導入しなかった”話 ~組織に合わせてアジャストした 私たちの実践共有~
hiroramos4
PRO
0
210
秘密度ラベル初心者が第1歩でつまづかないための「設計・運用」ポイント
seafay
PRO
0
210
日本 Fintech 未来予測レポート 2027〜2028年(手動編集版)
8maki
1
2.5k
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
1
420
LayerX コーポレートエンジニアリング室におけるサプライチェーンセキュリティへの取り組み / Supply Chain Security at LayerX Corporate Engineering
yuyatakeyama
2
680
[AWS Summit Japan 2026]迷っているあなたへ_小さな一歩が、やがて自分を助けてくれる
sh_fk2
1
160
AIチャット検索改善の3週間
kworkdev
PRO
2
140
200個のGitHubリポジトリを横断調査したかった
icck
0
140
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
30 Presentation Tips
portentint
PRO
1
330
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
490
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Designing Powerful Visuals for Engaging Learning
tmiket
1
420
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
750
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
The Limits of Empathy - UXLibs8
cassininazir
1
360
Unsuck your backbone
ammeep
672
58k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
230
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
610
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