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
大容量データをDynamoDBで扱う際のMomento導入検討
Search
k1nakayama
June 22, 2023
Technology
910
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
大容量データをDynamoDBで扱う際のMomento導入検討
k1nakayama
June 22, 2023
More Decks by k1nakayama
See All by k1nakayama
Amazon Q Developerを活用したアーキテクチャのリファクタリング
k1nakayama
2
390
GitLab Duo with Amazon Q の機能実装を試してみた
k1nakayama
0
190
GitLab Ultimateを用いたDevSecOps実践事例
k1nakayama
0
230
GitLabを活用したDevSecOps
k1nakayama
1
490
GitLabを活用したクラウドネイティブ アプリケーションセキュリティ
k1nakayama
0
220
サーバーレス開発を円滑に進めるための実践DevSecOps
k1nakayama
1
560
Deep Dive on DevOps for Serverless Applications
k1nakayama
0
390
Access to multiple microservices on AWS
k1nakayama
3
1.6k
Other Decks in Technology
See All in Technology
中期計画、2回作ってみた ~業務委託と正社員、両方の視点から~
demaecan
1
600
「嘘をつくテスト」の失敗例から学ぶ 良いテストコード #frontend_phpcon_do
asumikam
0
600
「気づいたら仕事が終わっている」バクラクAIエージェント本番運用の裏側 / layerx-bakuraku-aie2026
yuya4
19
11k
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
130
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
0
360
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
140
OCI Oracle AI Database Services新機能アップデート(2026/03-2026/05)
oracle4engineer
PRO
0
330
LLMにもCAP定理があるという話
harukasakihara
0
280
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
9.5k
AAIFに入ってみた ~内から見えるコミュニティ動向~
sato4
0
110
2026TECHFRESH畢業分享會 - Lightning Talk - E起 See See : 電商推薦讀心術? 數據說了算
line_developers_tw
PRO
0
130
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
0
110
Featured
See All Featured
My Coaching Mixtape
mlcsv
0
140
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
300
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
180
For a Future-Friendly Web
brad_frost
183
10k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
200
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
540
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
New Earth Scene 8
popppiees
3
2.3k
Transcript
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. 大容量データをDynamoDBで扱う際 のMomento導入検討 Keiichi
Nakayama Vice General Manager Cloud Partner Group CHARA-WEB Co., Ltd.
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. 自己紹介 • 中山
桂一 ( @k1nakayama ) • 株式会社キャラウェブ クラウドパートナーグループ 副部長 • クラウドインテグレーション事業をリード • AWS Community Builders (Serverless) • AWS x Serverless / GitLab / DevSecOps
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. 本日のテーマ
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. 検証内容
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. サンプルデータ
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. 検証1-1:DynamoDBから常にScanし、一部を返却 472.16ms $0.00009134467
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. 検証1-2:Momentoにキャッシュがあったら取り出し 564.06ms $0.0000923
32.38ms $0.00000068
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. 検証1:まとめ Ø 毎回スキャンをするより、キャッシュがあったらLambdaの実行時間で15分の1、コ
ストは134分の1に削減できる Ø キャッシュを作成する際は、毎回スキャンをするより、100msほど長く掛かるが、 コストはほぼ同じ Ø 実質10行前後のコード追加で大幅なパフォーマンス改善ができる!
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. 検証2:1MB以上のデータを対象とする Momentoはデフォルトで1MB/アイテムが上限となるため、1MB以上のデータをキャッシュさ せたい場合は、データを圧縮して出し入れする必要がある
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. 検証2-1:1MB以上のデータをScanして返却する 1,606,475 1658.31ms
$0.00010123502
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. 検証2-2:キャッシュがあったら取り出し(データ圧縮) 1,606,475 2344.75ms
$0.000107 237.99ms $0.000002293
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. 検証2-3:Momentoの代わりにS3使用(圧縮せず) 1,606,475 1927.87ms
$0.000104 219.49ms $0.00000206
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. 検証2:まとめ Ø 圧縮・解答の処理に100ms弱かかる
Ø S3に保存する場合と比べて、ほぼ同等レベルの速度・コストで処理可能 Ø Momentoのスループット制約等を考慮し、キャッシュする容量やI/Oの頻度を照ら し合わせて検討する。容量が大きい場合は、Momentoが向かない可能性もある Ø いずれにしても、何らかのキャッシュ先を作って保存するべき
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. 検証3-1:1レコードをGetItemして返却 23.93ms $0.0000005425
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. 検証3-2:キャッシュがあったら取り出し(GetItem) 30.87ms $0.000000601
16.78ms $0.00000034183
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. 検証3:まとめ Ø 一番DynamoDBのパフォーマンスが出そうなGetItemでも、キャッシュがあったら
Lambdaの実行時間で30%、コストは37%削減できる Ø キャッシュを作成する際は、毎回スキャンをするより、7msほど長く掛かるが、コス トはほぼ同じ Ø キャッシュを作成する場合を含めて、Lambdaの実行時間より、API Gateway等と のインテグレーションやAWSリソースまでの通信によるレイテンシーが大きいため、 時間はキャッシュをしてもしなくても誤差の範囲だが、間違いなくコストは削減でき るので、Momentoを併用する価値は大きい 検証3と似た検証をして、同じような結果を報告している公式ブログ https://jp.gomomento.com/blog/oops-momento-ate-60-percent-of-my-lambda- latencies
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. DynamoDB + Momentoの活用(ここまでのまとめ)
Ø 検証結果からDynamoDBを利用する際に、Momentoを組み合わせることは、相 性が非常によい Ø 特にGetItemや100KB程度の結果となるクエリ結果のキャッシュは、UX、コスト共 にメリットが得られる DynamoDBを使う際は、Momentoとセットで使っていくと、みんなハッピー!! ほんとに? キャッシュされているアイテムが更新されたらどうするの!?
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. アイテムの更新アーキテクチャ (PutItem /
GetItem)
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. アイテムの更新アーキテクチャ (Query /
PutItem)
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. こんなことが出来たら良さそうアーキテクチャ
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. 他にも欲しい機能 Ø RedisのKEYS
そもそもKeyの存在チェックをするAPIはあるが、Keyの一覧を返すAPIは存在しな いため、キャッシュを能動的にクリアしたい場合などにオペレーションがしにくい KeysのAPIがあり、パターン一致した一覧を取得できる場合、簡易的なクエリを キャッシュアイテムに対して行うことも出来るため、ユースケースが広がりそう Ø DynamoDBのプロキシ的な機能 今回のQuery結果のアイテムを含め、DynamoDBのキャッシュを透過的に扱える ようになったら、もはやMomentoを使わない理由がなくなってくる Ø 検索機能(ロードマップにあった?) ElasticsearchやAlgoliaのような検索エンジン的なものをサーバーレスで!
© 2022, CHARA-WEB Co.,Ltd. All rights reserved. Momentoを使う上でのTips Ø SDKは言語毎にサポートされているAPIが異なる
https://docs.momentohq.com/ja/develop/api-reference/language-support Ø ドキュメントはたまに細かな点で間違っていたり、どこにも記載されていないものも ある GitHubのSDKのリポジトリは、それなりにしっかりとテストコードが書かれている ので、テストコードを参考に実装してみると解決が早い ドキュメントの間違いを見つけたら、ドキュメントのリポジトリでPR出していこう Ø わからないことや、期待したいことなどは、積極的に発信していくとよい Discord上や場合によってはTwitter上などで、Momentoについて発信していくと、 驚異的なスピードで解決できるので、悩む前に聞くが一番!
Accelerate your business with the cloud.