Upgrade to Pro — share decks privately, control downloads, hide ads and more …

大容量データをDynamoDBで扱う際のMomento導入検討

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 大容量データをDynamoDBで扱う際のMomento導入検討

Avatar for k1nakayama

k1nakayama

June 22, 2023
Tweet

More Decks by k1nakayama

Other Decks in Technology

Transcript

  1. © 2022, CHARA-WEB Co.,Ltd. All rights reserved. 自己紹介 • 中山

    桂一 ( @k1nakayama ) • 株式会社キャラウェブ クラウドパートナーグループ 副部長 • クラウドインテグレーション事業をリード • AWS Community Builders (Serverless) • AWS x Serverless / GitLab / DevSecOps
  2. © 2022, CHARA-WEB Co.,Ltd. All rights reserved. 検証1:まとめ Ø 毎回スキャンをするより、キャッシュがあったらLambdaの実行時間で15分の1、コ

    ストは134分の1に削減できる Ø キャッシュを作成する際は、毎回スキャンをするより、100msほど長く掛かるが、 コストはほぼ同じ Ø 実質10行前後のコード追加で大幅なパフォーマンス改善ができる!
  3. © 2022, CHARA-WEB Co.,Ltd. All rights reserved. 検証2:まとめ Ø 圧縮・解答の処理に100ms弱かかる

    Ø S3に保存する場合と比べて、ほぼ同等レベルの速度・コストで処理可能 Ø Momentoのスループット制約等を考慮し、キャッシュする容量やI/Oの頻度を照ら し合わせて検討する。容量が大きい場合は、Momentoが向かない可能性もある Ø いずれにしても、何らかのキャッシュ先を作って保存するべき
  4. © 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
  5. © 2022, CHARA-WEB Co.,Ltd. All rights reserved. DynamoDB + Momentoの活用(ここまでのまとめ)

    Ø 検証結果からDynamoDBを利用する際に、Momentoを組み合わせることは、相 性が非常によい Ø 特にGetItemや100KB程度の結果となるクエリ結果のキャッシュは、UX、コスト共 にメリットが得られる DynamoDBを使う際は、Momentoとセットで使っていくと、みんなハッピー!! ほんとに? キャッシュされているアイテムが更新されたらどうするの!?
  6. © 2022, CHARA-WEB Co.,Ltd. All rights reserved. 他にも欲しい機能 Ø RedisのKEYS

    そもそもKeyの存在チェックをするAPIはあるが、Keyの一覧を返すAPIは存在しな いため、キャッシュを能動的にクリアしたい場合などにオペレーションがしにくい KeysのAPIがあり、パターン一致した一覧を取得できる場合、簡易的なクエリを キャッシュアイテムに対して行うことも出来るため、ユースケースが広がりそう Ø DynamoDBのプロキシ的な機能 今回のQuery結果のアイテムを含め、DynamoDBのキャッシュを透過的に扱える ようになったら、もはやMomentoを使わない理由がなくなってくる Ø 検索機能(ロードマップにあった?) ElasticsearchやAlgoliaのような検索エンジン的なものをサーバーレスで!
  7. © 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について発信していくと、 驚異的なスピードで解決できるので、悩む前に聞くが一番!