1 of 19

E-11 Serverlessを高速化しよう!�~試して感じるパフォーマンスチューニング~

�Fusic 清家史郎 (@seike460)

�HTB 三浦一樹 (@miu_crescent)

�Stripe 岡本 秀高(@hidetaka_dev)

�Momento Yoshitaka Koitabashi(@yoshii0110)

JAWS DAYS 2024

JAWS DAYS 2024

ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_e

2 of 19

講師紹介

2

清家 史郎

JAWS-UG 福岡支部

Fukuoka.php

JP_Stripes 福岡

福岡

Serverless Meetup Fukuoka

ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_e

3 of 19

自己紹介

JAWS-UG 札幌支部

Media-JAWS

JP_Stripes サッポロ

札幌

三浦 一樹

ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_e

4 of 19

自己紹介

4

Developer Advocate @ Stripe�💬 @hidetaka_dev�✉️ https://hidetaka.dev

AWS Samurai 2017�AWS Community Builder�Alexa Champions

Hidetaka Okamoto(岡本秀高)

ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_e

5 of 19

自己紹介

JAWS-UG コンテナ支部

小板橋 由誉

よく出没するコミュニティ

TiDB User Group

ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_e

6 of 19

下準備

6

7 of 19

なにはともあれデプロイをします

今回時間が限られている為、

前提の説明前にデプロイを行います。

https://github.com/seike460/serverless-performance-handson

connpassに貼られているGitHubのREADMEの手順の、

手順1まで進めてAWS SAMのデプロイまで行ってください

7

ここまで16:20

ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_e

8 of 19

サーバーレスと高速化

8

9 of 19

Serverlessの長所 -> スケーラビリティ

サーバーレスはスケーラビリティが高い!

でもサーバーレスをただただ使えば解決するわけではない

  • 仕様上どうしても重い処理が入ってしまう
  • 非常に多くのデータ量
  • アンコントローラブルなアクセス

これらの問題に立ち向かう為に、

パフォーマンスチューニングを行いましょう!

9

ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_e

10 of 19

トレーシング

10

11 of 19

まずは現状を知ることから

パフォーマンスチューニングしましょう!

でも特にサーバーレスの場合、状況を追いづらく、

まずどこから手をつけるべきわからない事が多いです

またシステムの端から端まで理解するのは難しい

それではトレーシングを利用することで、

ボトルネックを特定しましょう

手順2まで進めて負荷をかけることで、

問題になっている処理を特定しましょう

11

ここまで16:30

ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_e

12 of 19

改善

12

13 of 19

DynamoDBの乱暴なScan

かなり乱暴なDynamoDBをScanをしている事がわかりました

�データ量が多くなれば多くなるほど、

動作に影響が出てきます

お金にものを言わせて高速化する事も出来ますが、

正しくQueryすることでDynamoDBの負荷を下げましょう

13

ここまで16:40

ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_e

14 of 19

非同期化

もう一つのボトルネックが購入処理にありました。

今回はSleepが入っていますが、

ここは購入処理を行う別システムに

リクエストしていると読み替えてください。

その場合、私達にはどうしようもすることは出来ません。

そこで非同期化を行うことにします。

手順3まで進めて、SQSによる非同期化とDynamoDBの改善で

購入体験の高速化を行ってください。

14

ここまで16:40

ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_e

15 of 19

API キャッシュ

15

16 of 19

API キャッシュ

最後に更に負荷分散を行っていきます。

手順4まで進めてください。

DynamoDBの読込の負荷が減っている事を確認してください

1分間購入履歴が更新されないことにはなりますが、

その代わりにDynamoDBの読込負荷を

大幅に軽減する事が可能です。

※キャッシュは使い方を間違えると両刃の剣になりかねません

仕様の調節や自身のサービスの特性を理解して使いましょう

16

ここまで16:50

ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_e

17 of 19

お片付け

17

18 of 19

お片付け

お片付けをします。

手順5を実施してAWS SAMのリソースを削除した後に

Cloud9を削除してください。お疲れ様でした。

今回行ったハンズオンは高速化の入口のような内容ですが�興味が出てきた方は是非パフォーマンスチューニングを�更に行ってみてください。

今回禁止していたVPCを利用することでDynamoDB Accelerator (DAX)利用するなど更なる高速化の世界にのめり込みましょう

18

ここまで17:00

ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_e

19 of 19

19