FaaSで簡単に実現する数十万RPSスパイク負荷試験
自己紹介
株式会社 CyberZ
F.O.X事業 エンジニア
(ビッグデータ、インフラ全般、SRE)
twitter: @tkmoteki
facebook: takahiro.moteki.31
もてき たかひろ
弊社プロダクトF.O.X概要
スマートフォン広告におけるマーケティング統合プラットフォーム
レポーティング1
アプリ計測/解析機能2
マーケット分析3
リターゲティング機能4
Force Operation X(F.O.X)
やりたいこと
ここを再現したい
広告系の計測サーバで発生するスパイクアクセスの負荷テスト(HTTP)
数~秒で
30万リクエスト
常時1万リクエスト
難しそう...
(infrastructureのプロビジョニング)
やりたいこと
負荷を
かける側
負荷を
かけられる側
負荷かける側は手間とお金をかけず、簡単にやりたい
工数: 半日
とりあえずやってみた
Amazon EC2
2000RPS/台
負荷を
かけられる側
とりあえずやってみた
2000RPS/台 30万RPS
え? 150台セットアップ...?
半日で終わらないんじゃないか...?
負荷ツール選定
● マネージドサービス
○ トラフィック制限。マネー/ライセンス問題
● アプライアンス
○ 導入手間
● ハコ(筐体サーバ)を静的用意&負荷ツール自前インスト
○ 構築手間
● クラウドベンダでハコ(筐体)を自動プロビジョニング&負荷ツール
実行
○ 良さそう
● クラウドベンダ上のFaaS
○ 一番良さそう
FaaS
Lambdaの登場
Lambdaを使い、揮発的な負荷テストを行うOSSが登場
FaaS型の負荷ツール(OSS)
● goad
● artillery-dino
● clojider
OSS: goad
● Go製CLIツール
● CLI実行でLambda + SQSで分散テスト開始
● LambdaでHTTPリクエストを発行し、結果をSQSに詰めて
レポーティング
● FaaSの特性上、短時間で大量HTTPリクエストを生成
○ 長時間なHTTPリクエスト生成は不向き
● セットアップ
○ バイナリDL & IAM権限設定のみ
● 複数リージョン同時実行対応
○ https://github.com/goadapp/goad
○ https://goad.io/
OSS: artillery-dino
● artillery.ioプロジェクトの1つで、Nodejs製CLIツール
● CLI実行でLambda + SNS + SQSで分散テスト開始
● LambdaでHTTPリクエストを発行し、結果をSQSに詰めて
レポーティング
● FaaSの特性上、短時間で大量HTTPリクエストを生成
○ 長時間なHTTPリクエスト生成は不向き
● セットアップ
○ npmツールインスト & IAM権限設定のみ
● 複数リージョン同時実行不可
○ http://veldstra.org/2016/02/18/project-dino-load-testing-on-
lambda-with-artillery.html
○ https://artillery.io/
やりたいこと
ここを再現したい
アド系の計測サーバで発生するスパイクアクセスの負荷テスト(HTTP)
数~秒で
30万リクエスト
出来た!!
やりたいこと
ここを再現したい
アド系の計測サーバで発生するスパイクアクセスの負荷テスト(HTTP)
数~秒で
30万リクエスト
出来た!!
常時1万リクエスト
残り
負荷の2層がけ
1層baseトラフィックを生成
(cloudformation + jmeter)
2層FaaSを使ったOSSで
スパイク負荷
1層baseトラフィックを生成
(cloudformation + jmeter)
やりたいこと
ここを再現したい
アド系の計測サーバで発生するスパイクアクセスの負荷テスト(HTTP)
数~秒で
30万リクエスト
出来た!!
常時1万リクエスト
出来た!!
FaaSで数十万RPSスパイク負荷試験
手間とお金かけず、簡単に出来ました
おわり

[serverlessconf2017]FaaSで簡単に実現する数十万RPSスパイク負荷試験