Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
大容量データをDynamoDBで扱う際のMomento導入検討
Search
k1nakayama
June 22, 2023
Technology
960
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
AIが書いたコードの中身、 把握できていますか? ― CRA対応をGitLabで
k1nakayama
1
18
その Lambda、8分で 管理者権限まで奪われます
k1nakayama
7
4.1k
Amazon Q Developerを活用したアーキテクチャのリファクタリング
k1nakayama
2
420
GitLab Duo with Amazon Q の機能実装を試してみた
k1nakayama
0
200
GitLab Ultimateを用いたDevSecOps実践事例
k1nakayama
0
260
GitLabを活用したDevSecOps
k1nakayama
1
500
GitLabを活用したクラウドネイティブ アプリケーションセキュリティ
k1nakayama
0
250
サーバーレス開発を円滑に進めるための実践DevSecOps
k1nakayama
1
580
Deep Dive on DevOps for Serverless Applications
k1nakayama
0
390
Other Decks in Technology
See All in Technology
雪かき部 #7 もう怖くない!SELECT文!
foursue
0
280
HacobuにおけるFDEとは/登壇資料(戸井田 裕貴)
hacobu
PRO
1
780
AI時代のAPI開発を加速する品質ガードレール / API Quality Guardrails in the AI Era
yokawasa
0
150
LLM機能を自作して分かるSnowflake Cortex AIの強み
nayuts
0
300
[2026-09-30]ロックンロールは鳴り止まないっ - 信頼性かまってちゃん - 「データ駆動を投げ捨ててまで。」追いかける信頼性改善に向けた取り組みの話
tosite
0
210
ログラスのマルチプロダクトを 支える認証基盤 〜テナントごとに異なる統制とどう向き合うか〜
dada4386
3
400
SDDの運用にめげずに向き合った話
sansantech
PRO
1
130
IoTデバイスを繋げるプロトコルMatterをAndroidで使用する方法
harutiro
0
120
私の推しは「聞いてから進む」AIです -AI-DLCに一人でアプリを作らせた話
yama3133
1
180
3つのアプローチで目指す チームを強くするAI駆動開発
thkt
0
120
freeeらしさをAIとともに作る / Creating the freee Experience with AI
ymrl
0
200
並行性の問題を防げ!実践トランザクション入門
occhi
0
280
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
480
Practical Orchestrator
shlominoach
192
12k
Why Our Code Smells
bkeepers
PRO
340
58k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
370
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
350
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
How GitHub (no longer) Works
holman
316
150k
Agile that works and the tools we love
rasmusluckow
331
22k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
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.