SlideShare a Scribd company logo
JMeterクラスタをAWS上に
Pythonで上げるテンプレートを作ってみた
STRICTLY PRIVATE AND CONFIDENTIAL|© 2020 iRidge, Inc.
モチベーション
● 上司のおすすめでJMeterでAPIの負荷試験をすることになった
● サーバ1台ではリソース不足に陥ったため、クラスタを構築を検討
● 必要な時に必要な台数だけ上げたいので、クラウド上がよさそう
● 社内にナレッジが多いので、Pythonを使ってデプロイしたい
1
STRICTLY PRIVATE AND CONFIDENTIAL|© 2020 iRidge, Inc.
sceptreとtroposphere
● sceptre
○ CloudFormation (CFn)テンプレートやスタック等をPythonで管理できるモ
ジュール
○ https://github.com/Sceptre/sceptre
● troposphere
○ CloudFormation (CFn)テンプレートとなるJSON/YAMLをPythonコードから生
成できるモジュール
○ https://github.com/cloudtools/troposphere
sceptre + troposphereでCFnテンプレート作成からデプロイまで可能に!
2
troposphere sceptre
STRICTLY PRIVATE AND CONFIDENTIAL|© 2020 iRidge, Inc.
CloudFormation
● JSONかYAMLでAWSリソースを宣言構築・運用できるAWSサービス
○ いわゆる「Infrastructure as Code」を実現できる
3
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/cfn-whatis-howdoesitwork.html
{
"AWSTemplateFormatVersion" :
"2010-09-09" ,
"Description" : "A simple EC2 instance" ,
"Resources" : {
"MyEC2Instance" : {
"Type" : "AWS::EC2::Instance" ,
"Properties" : {
"ImageId" :
"ami-0ff8a91507f77f867" ,
"InstanceType" : "t1.micro"
}
}
}
}
STRICTLY PRIVATE AND CONFIDENTIAL|© 2020 iRidge, Inc.
JMeter
● Java製の負荷試験ツール
○ GUIで簡単シナリオ作成
○ 詳細なレポート出力機能
○ Webブラウザと連携して自動でシナリオ作成可能なプロキシ
4
https://jmeter.apache.org/
STRICTLY PRIVATE AND CONFIDENTIAL|© 2020 iRidge, Inc.
テンプレートで出来上がるシステムと負荷試験実施イメージ
1. sceptreコマンドでJMeterのクライアントとサーバを起動
2. サーバを作ったテンプレートに付与された、各サーバのIP群を取得
3. クライアントにログインして、シナリオにサーバのIP群をセット
4. 負荷試験対象システムに負荷をかける
5
STRICTLY PRIVATE AND CONFIDENTIAL|© 2020 iRidge, Inc.
使用感や工夫した点
6
● ClientとServerを分けて作成・削除できるのがGood
○ Serverの入れ替えや増減もパラメータ変更して半自動デプロイ
○ 各サーバのIPをテンプレートに出力するようにしたため、全サーバのIPを探し
てシナリオにセットする手間を削減
○ 負荷試験を途中でやめるときも「sceptre delete cluster/servers」ですぐに止
められる
● パラメータを宣言的に定義でき、誰でも簡単にクラスタが立てられる
○ YAMLファイルにJMeterクラスタ構築に必要なパラメータはすべて落とし込ん
だため、ユーザはYAMLファイルに基本情報を記載すればクラスタが作れる
○ CloudFormationのテンプレートのお作法もPythonのお作法も知らなくてよい
ので、透過的
● 半自動的にすぐ作成、すぐ削除ができる
○ これは本来の目的の達成でもある
STRICTLY PRIVATE AND CONFIDENTIAL|© 2020 iRidge, Inc.
まとめ
7
● 最近、AWSインフラはCDKで管理することも多くなってきたので、新しくインフラを
定義する場合はCDK推奨。Pythonも利用可能
○ ただし、Ver. Upが早いことに気を付けて
○ https://aws.amazon.com/jp/cdk/
● クラウド上に一時的にリソースあげる場合は、少しでも使いまわす可能性があると
予見できたらコード化しておいた方がよい
○ 後々全体 or 部分的に流用が効く
○ 積極的にコード化して、流用可能な成果物を蓄積していくことが大切
https://docs.aws.amazon.com/cdk/latest/guide/home.html
JMeterクラスタをAWS上にPythonで上げるテンプレートを作ってみた

More Related Content

PDF
Developers.IO 2019 ハイブリッド/マルチVPC環境を構成するためのAWSネットワーク完全理解
Shuji Kikuchi
 
PDF
Introduction of Azure Docker Integration
Takekazu Omi
 
PPTX
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech
 
PDF
Bicep 入門 MySQL編
Takekazu Omi
 
PPTX
ストレージサービスからの情報漏えいにサヨナラ
Masato Nakamura
 
PDF
Node.jsアプリの開発をモダン化するために取り組んできたこと
bitbank, Inc. Tokyo, Japan
 
PDF
はじめよう Azure Functions
一希 大田
 
PPTX
CloudSQL v2は デキる子なのか?
Kumano Ryo
 
Developers.IO 2019 ハイブリッド/マルチVPC環境を構成するためのAWSネットワーク完全理解
Shuji Kikuchi
 
Introduction of Azure Docker Integration
Takekazu Omi
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech
 
Bicep 入門 MySQL編
Takekazu Omi
 
ストレージサービスからの情報漏えいにサヨナラ
Masato Nakamura
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
bitbank, Inc. Tokyo, Japan
 
はじめよう Azure Functions
一希 大田
 
CloudSQL v2は デキる子なのか?
Kumano Ryo
 

What's hot (20)

PDF
JAWS-UG中央線東海支部ハンズオン
真吾 吉田
 
PDF
KubernetesでPHPを動かした話
gree_tech
 
PDF
[Cloud OnAir ] #06 メルカリ & ソウゾウの世界展開と Google Cloud
Google Cloud Platform - Japan
 
PDF
[JAWS-UG 横浜] AWS re:Invent 2019 Network関連アップデート 5本立て
Shuji Kikuchi
 
PDF
The Internal of Serverless Plugins
Terui Masashi
 
PPTX
活動報告4 ~gitとjenkinsとcloud9~
vx-pc-club
 
PDF
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
normalian
 
PDF
JAZUG5周年総会 仮想マシンの?(ハテナ)を試す
Yui Ashikaga
 
PDF
[JAWS-UG Tokyo 32] AWS Client VPNの特徴
Shuji Kikuchi
 
PPTX
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Yasuaki Matsuda
 
PPTX
AWSを用いてNode-REDでらくらくAPI
Kazumi Kanda
 
PDF
20200623 Client VPNの使いどころ
Masaru Ogura
 
PDF
もうすぐ春だしAWSでさくらをやってみた
Masamitsu Maehara
 
PDF
VPC Reachability Analyzer 使って人生が変わった話
Noritaka Sekiyama
 
PDF
20191111 sd 8_kitazaki_t0
Ayachika Kitazaki
 
PDF
jaws securityhub
kota tomimatsu
 
PPTX
20140331 hiroshima
Ayako Tani
 
PDF
Global azure boot camp 2015 in japan 妖怪はみた!実録 Azure事件簿
Yui Ashikaga
 
PDF
Windows Azure kaasanイメージについて
松田 千尋
 
PDF
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
虎の穴 開発室
 
JAWS-UG中央線東海支部ハンズオン
真吾 吉田
 
KubernetesでPHPを動かした話
gree_tech
 
[Cloud OnAir ] #06 メルカリ & ソウゾウの世界展開と Google Cloud
Google Cloud Platform - Japan
 
[JAWS-UG 横浜] AWS re:Invent 2019 Network関連アップデート 5本立て
Shuji Kikuchi
 
The Internal of Serverless Plugins
Terui Masashi
 
活動報告4 ~gitとjenkinsとcloud9~
vx-pc-club
 
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
normalian
 
JAZUG5周年総会 仮想マシンの?(ハテナ)を試す
Yui Ashikaga
 
[JAWS-UG Tokyo 32] AWS Client VPNの特徴
Shuji Kikuchi
 
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Yasuaki Matsuda
 
AWSを用いてNode-REDでらくらくAPI
Kazumi Kanda
 
20200623 Client VPNの使いどころ
Masaru Ogura
 
もうすぐ春だしAWSでさくらをやってみた
Masamitsu Maehara
 
VPC Reachability Analyzer 使って人生が変わった話
Noritaka Sekiyama
 
20191111 sd 8_kitazaki_t0
Ayachika Kitazaki
 
jaws securityhub
kota tomimatsu
 
20140331 hiroshima
Ayako Tani
 
Global azure boot camp 2015 in japan 妖怪はみた!実録 Azure事件簿
Yui Ashikaga
 
Windows Azure kaasanイメージについて
松田 千尋
 
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
虎の穴 開発室
 
Ad

JMeterクラスタをAWS上にPythonで上げるテンプレートを作ってみた

  • 2. STRICTLY PRIVATE AND CONFIDENTIAL|© 2020 iRidge, Inc. モチベーション ● 上司のおすすめでJMeterでAPIの負荷試験をすることになった ● サーバ1台ではリソース不足に陥ったため、クラスタを構築を検討 ● 必要な時に必要な台数だけ上げたいので、クラウド上がよさそう ● 社内にナレッジが多いので、Pythonを使ってデプロイしたい 1
  • 3. STRICTLY PRIVATE AND CONFIDENTIAL|© 2020 iRidge, Inc. sceptreとtroposphere ● sceptre ○ CloudFormation (CFn)テンプレートやスタック等をPythonで管理できるモ ジュール ○ https://github.com/Sceptre/sceptre ● troposphere ○ CloudFormation (CFn)テンプレートとなるJSON/YAMLをPythonコードから生 成できるモジュール ○ https://github.com/cloudtools/troposphere sceptre + troposphereでCFnテンプレート作成からデプロイまで可能に! 2 troposphere sceptre
  • 4. STRICTLY PRIVATE AND CONFIDENTIAL|© 2020 iRidge, Inc. CloudFormation ● JSONかYAMLでAWSリソースを宣言構築・運用できるAWSサービス ○ いわゆる「Infrastructure as Code」を実現できる 3 https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/cfn-whatis-howdoesitwork.html { "AWSTemplateFormatVersion" : "2010-09-09" , "Description" : "A simple EC2 instance" , "Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance" , "Properties" : { "ImageId" : "ami-0ff8a91507f77f867" , "InstanceType" : "t1.micro" } } } }
  • 5. STRICTLY PRIVATE AND CONFIDENTIAL|© 2020 iRidge, Inc. JMeter ● Java製の負荷試験ツール ○ GUIで簡単シナリオ作成 ○ 詳細なレポート出力機能 ○ Webブラウザと連携して自動でシナリオ作成可能なプロキシ 4 https://jmeter.apache.org/
  • 6. STRICTLY PRIVATE AND CONFIDENTIAL|© 2020 iRidge, Inc. テンプレートで出来上がるシステムと負荷試験実施イメージ 1. sceptreコマンドでJMeterのクライアントとサーバを起動 2. サーバを作ったテンプレートに付与された、各サーバのIP群を取得 3. クライアントにログインして、シナリオにサーバのIP群をセット 4. 負荷試験対象システムに負荷をかける 5
  • 7. STRICTLY PRIVATE AND CONFIDENTIAL|© 2020 iRidge, Inc. 使用感や工夫した点 6 ● ClientとServerを分けて作成・削除できるのがGood ○ Serverの入れ替えや増減もパラメータ変更して半自動デプロイ ○ 各サーバのIPをテンプレートに出力するようにしたため、全サーバのIPを探し てシナリオにセットする手間を削減 ○ 負荷試験を途中でやめるときも「sceptre delete cluster/servers」ですぐに止 められる ● パラメータを宣言的に定義でき、誰でも簡単にクラスタが立てられる ○ YAMLファイルにJMeterクラスタ構築に必要なパラメータはすべて落とし込ん だため、ユーザはYAMLファイルに基本情報を記載すればクラスタが作れる ○ CloudFormationのテンプレートのお作法もPythonのお作法も知らなくてよい ので、透過的 ● 半自動的にすぐ作成、すぐ削除ができる ○ これは本来の目的の達成でもある
  • 8. STRICTLY PRIVATE AND CONFIDENTIAL|© 2020 iRidge, Inc. まとめ 7 ● 最近、AWSインフラはCDKで管理することも多くなってきたので、新しくインフラを 定義する場合はCDK推奨。Pythonも利用可能 ○ ただし、Ver. Upが早いことに気を付けて ○ https://aws.amazon.com/jp/cdk/ ● クラウド上に一時的にリソースあげる場合は、少しでも使いまわす可能性があると 予見できたらコード化しておいた方がよい ○ 後々全体 or 部分的に流用が効く ○ 積極的にコード化して、流用可能な成果物を蓄積していくことが大切 https://docs.aws.amazon.com/cdk/latest/guide/home.html