Location via proxy:
[ UP ]
[Report a bug]
[Manage cookies]
No cookies
No scripts
No ads
No referrer
Show this form
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
サーバレス時代の負荷テスト戦略 / Load testing strategy for se...
Search
geeawa
January 22, 2020
Technology
18
4.7k
サーバレス時代の負荷テスト戦略 / Load testing strategy for serverless
geeawa
January 22, 2020
Tweet
Share
More Decks by geeawa
See All by geeawa
“あなた” の開発を支援する AI エージェント Bedrock Engineer / introducing-bedrock-engineer
gawa
11
1.9k
生成 AI による新しい UI/UX 〜サーバーレスで実現する Generative UI の世界〜 / generative ui with serverless
gawa
13
6.1k
生成AIによる新しいUI/UX ~Generative UI の世界を感じよう~ / introducing-generative-ui
gawa
6
2.6k
実践的にAPIを開発していく - ソースコード管理とデリバリーを考えよう - / develop effective web api versioning
gawa
3
700
クラウドを駆使した開発〜AWS Lambda, Dev Tools, AppSync の革新的な最新アップデート〜 / reinvent2023-recap-serverless-meetup-tokyo-developer-experience
gawa
1
700
refactoring-serverless
gawa
1
1.9k
modern-frontend-design-pattern
gawa
9
6.3k
サーバレスブース展示物のアーキテクチャを語る / Serverless Booth Architecture at AWS Summit 2023
gawa
0
150
Effective AppSync ~ Serverless Framework を使用した AppSync の実践的な開発方法とテスト戦略 ~ / Effective AppSync
gawa
0
1.2k
Other Decks in Technology
See All in Technology
Swiftの “private” を テストする / Testing Swift "private"
yutailang0119
0
130
2024.02.19 W&B AIエージェントLT会 / AIエージェントが業務を代行するための計画と実行 / Algomatic 宮脇
smiyawaki0820
13
3.2k
【Developers Summit 2025】プロダクトエンジニアから学ぶ、 ユーザーにより高い価値を届ける技術
niwatakeru
2
1.4k
Nekko Cloud、 これまでとこれから ~学生サークルが作る、 小さなクラウド
logica0419
2
960
エンジニアのためのドキュメント力基礎講座〜構造化思考から始めよう〜(2025/02/15jbug広島#15発表資料)
yasuoyasuo
16
6.6k
The Future of SEO: The Impact of AI on Search
badams
0
190
アジャイル開発とスクラム
araihara
0
170
抽象化をするということ - 具体と抽象の往復を身につける / Abstraction and concretization
soudai
7
1.1k
現場の種を事業の芽にする - エンジニア主導のイノベーションを事業戦略に装着する方法 -
kzkmaeda
2
2k
データマネジメントのトレードオフに立ち向かう
ikkimiyazaki
6
940
Classmethod AI Talks(CATs) #16 司会進行スライド(2025.02.12) / classmethod-ai-talks-aka-cats_moderator-slides_vol16_2025-02-12
shinyaa31
0
100
30分でわかる『アジャイルデータモデリング』
hanon52_
9
2.6k
Featured
See All Featured
Building Adaptive Systems
keathley
40
2.4k
For a Future-Friendly Web
brad_frost
176
9.5k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
240
Rails Girls Zürich Keynote
gr2m
94
13k
Embracing the Ebb and Flow
colly
84
4.6k
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
Music & Morning Musume
bryan
46
6.3k
Visualization
eitanlees
146
15k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.1k
What's in a price? How to price your products and services
michaelherold
244
12k
Building a Scalable Design System with Sketch
lauravandoore
461
33k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
330
Transcript
サーバレス時代 の 負荷テスト戦略 〜CircleCIで実現する継続的負荷テストとチューニングTips〜 2020.01.22 Serverless Meetup Tokyo #15
淡路⼤輔 / INTEC @gee0awa 好きな技術 Serverless / React Native
負荷テスト と サーバレス
Elasticity Performance, Scalability, Resilience
None
App
App EC2 r4.large × 1
App EC2 r4.large × 1 ApachBench
App EC2 r4.large × 1 ApachBench $ ab -n 100
-c 10 http://example.com
EC2 EC2 EC2 EC2 EC2 App r4.large × 5
EC2 EC2 EC2 EC2 EC2 App r4.large × 5
EC2 EC2 EC2 EC2 EC2 App r4.large × 5
Master EC2 EC2 EC2 EC2 App r4.large × 5
EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 App
r4.large × 10 Master
EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2
EC2 EC2 EC2 EC2 App r4.large × 15 Master
・負荷に応じて Slave 台数をスケールさせたい ・サーバの⽤意に時間がかかる ・GUIでシナリオ作るとメンテしづらい ・EC2 ⾼い・・・ 課題
お⾦はかけたくない ⼤量リクエストを⽣成したい もっと簡単に導⼊したい Simple Performance Cost
⚡Artillery⚡
Node.js製のシンプルな負荷テストツール
Artillery scenario YAMLファイルに宣⾔的にシナリオを記述する 60秒間、20⼈の仮想ユーザがリクエスト
EC2 App ⚡Artillery⚡ $ artillery run senario.yml
CloudWatch, DataDog, aws-sigv4 etc..
EC2 App ⚡Artillery⚡ $ artillery run senario.yml
ECS Cluster App ⚡Artillery Pro⚡ $ artillery run senario.yml
Artillery + Lambda
None
serverless-artillery https://github.com/Nordstrom/serverless-artillery
None
InfluxDBに結果を保存、Grafanaで可視化
install deploy invoke remove serverless-artillery $ npm install -g serverless-artillery
$ slsart deploy —stage dev $ slsart invoke —stage dev $ slsart remove
Lambdaだから維持費ゼロ 負荷に応じたオートスケール YAMLによる宣⾔的シナリオ Simple Performance Cost
None
継続的負荷テスト 開発プロセスの早い段階から性能検証を⾏う
Github Developer commits yaml file 継続的負荷テスト CircleCIから負荷テストを実⾏する Invoke loadtest unittest
⚡ Serverless Artillery⚡
Github Developer commits yaml file 継続的負荷テスト unittest CircleCIから負荷テストを実⾏する loadtest Invoke
⚡ Serverless Artillery⚡ 処理が被ったらスキップされる
.circleci/config.yml シンプルなインタフェースで 実⾏できるようにしておく
None
None
プロダクションでは 様々なアクセスが想定される
負荷にランダム性を持たせる
Artillery scenario YAMLファイルに宣⾔的にシナリオを記述する 60秒間、20⼈の仮想ユーザがリクエスト この部分を ランダムに変化させる
シナリオファイルの負荷量を書き換える generateSenario.js duration, arrivalRate, phase数の最⼤・最⼩値だけ指定して ランダムな負荷を⽣成できるようにシナリオファイルを書き換える ChaosEngineering!!
負荷をランダムにする .circleci/config.yml
負荷テスト の 環境下 で アプリケーション を 開発する
App ⚡Serverless Artillery⚡
App ⚡Serverless Artillery⚡ get /todos get /todos/{{ id }} put
/todos/{{ id }} post /todos/{{ id }} delete /todos/{{ id }} TODOリスト アプリケーション https://github.com/serverless/examples/tree/master/aws-node-rest-api-with-dynamodb-and-offline
TODOリスト アプリケーション https://github.com/serverless/examples/tree/master/aws-node-rest-api-with-dynamodb-and-offline serverless examples の Node.js REST API
TODOリスト アプリケーション TODOリストに登録 Responseのjsonに含まれるidの値を保持 idを指定して1件取得 idを指定して1件更新 idを指定して1件削除 Artilleryのシナリオ
結果
キャパシティユニットが全然⾜りない DynamoDB
TODO⼀覧 ソース
全件スキャンになってる!! TODO⼀覧 ソース
AWS X-Ray 監視
PUT DELETE GET POST Lambdaの実⾏単位や DynamoDBへのリクエスト単位で 処理時間を計測
Lambda (cron) GetServiceGraph API Slack AWS X-Ray ALERT 監視 Response
time 4xx (error) 429 (throttling) 5xx (failure)
サーバレス時代 の 負荷テスト戦略 まとめ 宣⾔的シナリオ・低コスト・⾼負荷 継続的負荷テスト・ランダム性 分散トレーシング・監視 ⚡Serverless Artillery⚡ AWS
X-Ray CircleCI
ご静聴ありがとうございました