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
51
その Lambda、8分で 管理者権限まで奪われます
k1nakayama
7
4.3k
Amazon Q Developerを活用したアーキテクチャのリファクタリング
k1nakayama
2
420
GitLab Duo with Amazon Q の機能実装を試してみた
k1nakayama
0
210
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
Loop Engineering これくらいでいい
mikanichinose
0
210
夫婦で子育てするための育児標準化
codmoninc
PRO
0
130
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
0
300
AI駆動開発の時代になったのでトヨタ生産方式から見直す
terurou
6
5.7k
分析AIエージェントを育てる、動く環境を育てる
codatum
1
760
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.4k
おそらく日本で唯一のDevRelインターン生として
husengs7
0
170
AI時代のPRレビューにどう向き合うか?
kairim0
1
160
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
330
OSC2026on_the-world-is-waiting-for-your-voice.pdf
naruoga
0
370
「事実」を「計測」して、「解釈」する 〜AWS Lambdaのメモリ最適解の見つけ方〜
maimyyym
0
130
契約書画像からの情報抽出に特化した視覚接地モデルを育てる話
sansantech
PRO
1
160
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
720
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Building Adaptive Systems
keathley
44
3.2k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
How to build a perfect <img>
jonoalderson
1
6.1k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
Color Theory Basics | Prateek | Gurzu
gurzu
1
480
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
400
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
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.