Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
2020年2月13日_Cloud_Native_Meetup_Tokyo.pdf
Search
Noriyuki TAKEI
February 13, 2020
Technology
79
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2020年2月13日_Cloud_Native_Meetup_Tokyo.pdf
Noriyuki TAKEI
February 13, 2020
More Decks by Noriyuki TAKEI
See All by Noriyuki TAKEI
魔法少女がClaude Codeを監視する / ccportal-deck
noriyukitakei
0
520
魔法少女がClaude Codeを監視する / ccportal-deck
noriyukitakei
3
140
ラズパイ×ローカルLLMで“MAGIシステム”を作る 〜3体のAIによる合議制マルチエージェント〜/magibypi
noriyukitakei
0
93
ループエンジニアリングでE2Eテストを実践
noriyukitakei
0
510
第50回 Tokyo Jazug Night/react-deepdive
noriyukitakei
0
110
RAG構築のためのAzure OpenAI Serviceリファレンスアーキテクチャ詳解/wakarimiragarchitecture
noriyukitakei
0
320
生成AI時代の検索手法〜スターウォーズの登場人物で紐解くベクトル/セマンティック/ハイブリッド検索〜/wakarimiaisearch
noriyukitakei
0
120
Prompt flowでブログ記事紹介ツイートアプリをラクチン開発/wakarimipromptflow
noriyukitakei
0
79
世界一わかりみの深いAzure OpenAI Service/wakarimiaoai
noriyukitakei
1
950
Other Decks in Technology
See All in Technology
Adaptive Warehouse を今すぐ導入すべき理由と迷ったときの判断基準
__allllllllez__
0
230
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
350
家のリアーキテクト・リファクタリング
suguruooki
0
150
Claude Code本って、 読む必要あるの?
oikon48
2
460
GoにおけるFFIのこれまでとこれから
goccy
5
3.2k
AI時代の「技術的負債」の変質ー概念の終焉と再解釈、エージェントと共に向かう先
nwiizo
0
2.5k
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
190
品質と信頼性を地続きにする
grimoh
0
360
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.2k
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
1
520
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
1
1.6k
Featured
See All Featured
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
Six Lessons from altMBA
skipperchong
29
4.5k
Visualization
eitanlees
152
17k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
460
How to Talk to Developers About Accessibility
jct
2
550
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
930
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
410
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
My Coaching Mixtape
mlcsv
0
310
How STYLIGHT went responsive
nonsquared
100
6.3k
Transcript
© SIOS Technology, Inc. All rights Reserved. Azure Kubernetes Service
+ Seleniumで実現する お⼿軽負荷テスト環境 2020年2⽉13⽇ Cloud Native Meetup Tokyo #12
© SIOS Technology, Inc. All rights Reserved. About me 2
Internal Only BCPVUNF Noriyuki TAKEI Ҫ ٓߦ Information • サイオステクノロジー株式会社 • 千葉県在住 Favorites • Azure • Squash • Sweets blog https://tech-lab.sios.jp/ core skill Azure Kubernetes Service Cloud Native, Serverless全般 Twitter @noriyukitakei
© SIOS Technology, Inc. All rights Reserved. WordPress on k8s
3 Internal Only Internal Only https://tech-lab.sios.jp/archives/18591 今回のセッションのお話は、弊社技術ブログでも ご覧頂けます。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
4 Internal Only ハッシュタグ #cloudnativejp もしくは @noriyukitakei に忌憚ないご意⾒ お願いいたします 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
5 Internal Only 負荷テストといえば やっぱり JMeterあたり、、、。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
6 Internal Only でも⼀つ問題が。。。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
7 Internal Only 弊社開発製品の OpenID Connectの シーケンスですが、マ ジで複雑、、、。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
8 Internal Only OpenID ConnectのIDトークンはシーケンスによってはクライアントの ブラウザからPostされる形でサーバー側に渡るので、それをParseしな ければいけない、、、。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
9 Internal Only Jmeterで正規表現 書くのめんどくさい 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
10 Internal Only 本セッションの ブログのURL そこで Selenium︕︕
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
11 Internal Only ブラウザのオートメーションツール Headless Chrome / Firefox使えば GUIのない環境でも動作可能 Javaなど複数の⾔語むけにSDKが提供されている 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
12 Internal Only // アクセスする driver.get("https://hogehoge.example.com/test.php"); // ログイン // ID⼊⼒ wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("loginfmt"))); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("idSIButton9"))); driver.findElement(By.name("loginfmt")).sendKeys(userData.getUserName()); driver.findElement(By.id("idSIButton9")).click(); // パスワード⼊⼒ wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("passwd"))); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("idSIButton9"))); driver.findElement(By.name("passwd")).sendKeys(userData.getPassword()); driver.findElement(By.id("idSIButton9")).click(); JavaのSDKによるSeleniumのプログラムです。とあるログイン画⾯へ のIDとパスワードを送信しています。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
13 Internal Only 本セッションの ブログのURL Seleniumだったら ブラウザの動きを エミュレートしているだけなので、 シナリオづくり楽︕︕
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
14 Internal Only 本セッションの ブログのURL でも、 JMeterに⽐べて重いのでは︖ Jmeterは1リクエスト1スレッドで 動作するけど、Seleniumは 1プロセス1リクエストになる、、、。
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
15 Internal Only 本セッションの ブログのURL そこで Azure Kubernetes Service︕︕
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
16 Internal Only 本セッションの ブログのURL ログインする処理を実 現するSelenium(Java) をPodにデプロイ Pod間で共有するVolumeにロ グを出⼒ FluetndがApplication Insightsにログを送って、 Application Insightsのア ラートによりエラーが出た ら通知
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
17 Internal Only 本セッションの ブログのURL マネージドなサービスなので、ノード 数を動的に増やすことができる。ノー ド数増やせば負荷を増やすことができ る。
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
18 Internal Only FROM centos:7 RUN yum -y install java-1.8.0-openjdk wget unzip # 最新のSelenium Driverが最新のChromeに対応していないので、旧バージョンのSeleniumをダウンロ ードして実⾏します。 RUN wget http://dist.control.lth.se/public/CentOS-7/x86_64/google.x86_64/Packages/google- chrome-stable-71.0.3578.98-1.x86_64.rpm -P /tmp && \ yum -y install libOSMesa google-noto-cjk-fonts && \ yum -y localinstall /tmp/google-chrome-stable-71.0.3578.98-1.x86_64.rpm # Selenium Driverをダウンロードしインストールします。 RUN wget https://chromedriver.storage.googleapis.com/73.0.3683.68/chromedriver_linux64.zip && \ unzip chromedriver_linux64.zip && \ mv chromedriver /usr/local/bin/ && \ chown root:root /usr/local/bin/chromedriver Dockerfile 本セッションの ブログのURL Seleniumスクリプト実⾏⽤Dockerコンテナのイメージを作ります。
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
19 Internal Only # Chromeを実⾏するために必要なライブラリをインストールします。 RUN yum -y install libX11 GConf2 fontconfig # 負荷テストかけるアプリケーションをstresstest.jarという実⾏形式のjarファイルにして、 # 所定のディレクトリに配置します。 RUN mkdir -p /opt/stress-test/bin COPY ./stresstest.jar /opt/stress-test/bin RUN mkdir -p /opt/stress-test/data COPY ./test.csv /opt/stress-test/data # 負荷テストをかけるJavaアプリケーションを実⾏します。 CMD ["java","-jar","/opt/stress-test/bin/stresstest.jar"] Dockerfile 本セッションの ブログのURL 〜 前ページからの続き 〜
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
20 Internal Only <source> @type tail # Seleniumが吐き出すログの出⼒パスです。 path /var/log/stresstest/stress-test.log tag selenium.selenium <parse> @type none </parse> </source> <match **> @type application_insights # Application InsightsのInsturmentation Keyを指定しています。 instrumentation_key <Application InsightsのInsturmentation Key> </match> fluent.conf 本セッションの ブログのURL Seleniumが吐き出したログをApplication Insightsに出⼒するコンテナ のイメージを作成します。まず、fluentdの設定ファイルである fluent.confを以下のように作成します。
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
21 # fluentdのOffical Imageを使います。 FROM fluent/fluentd:v1.7-1 # fluentdのOfficial Imageのサイト(https://hub.docker.com/r/fluent/fluentd/)に # 書いてあるとおりにカスタマイズする。ただし13⾏⽬の部分はApplication Insights⽤の # プラグイン(https://github.com/microsoft/fluent-plugin-application-insights)を # インストールするように変更する。 USER root RUN apk add --no-cache --update --virtual .build-deps \ sudo build-base ruby-dev \ # cutomize following instruction as you wish && sudo gem install fluent-plugin-application-insights \ && sudo gem sources --clear-all \ && apk del .build-deps \ && rm -rf /home/fluent/.gem/ruby/2.5.0/cache/*.gem COPY fluent.conf /fluentd/etc/ USER fluent fluent.conf 本セッションの ブログのURL 次に以下のDockerfileを作成して、コンテナのイメージを作成します。
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
22 # Seleniumを実⾏するアプリケーションをデプ ロイするためのマニフェストです。 apiVersion: apps/v1beta1 kind: Deployment metadata: name: stress-test spec: # ここで指定した下図だけSeleniumが # 起動します。同時に負荷をかけたい接続数を # 指定して下さい。 replicas: 10 selector: matchLabels: app: stress-test template: metadata: labels: app: stress-test deployment.yml Seleniumを実⾏するアプリケーションをデプロイするためのマニフェス トです。 spec: containers: - name: stt image: ntakeiacr.azurecr.io/stt:1.4 # fluentdとログを共有するための # Volumeをmountします。 volumeMounts: - mountPath: /var/log/stresstest name: log-volume imagePullSecrets: - name: docker-reg-credential # fluentdとログを共有するための # Volumeを作成します。 # Pod間でデータを共有したいので # hostPathとします。 volumes: - name: log-volume hostPath: path: /var/log/stresstest 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
23 # fluentdを実⾏するためのマニフェストです。 # サイドカーとして配置するので、 # 各Nodeに⼀つづつ配置します。そのため # リソースの種別はDamemonSetとしています。 apiVersion: apps/v1 kind: DaemonSet metadata: name: fluentd spec: selector: matchLabels: app: fluentd template: metadata: labels: app: fluentd deployment.yml fluentdを実⾏するアプリケーションをデプロイするためのマニフェスト です。 spec: containers: - image: ntakeiacr.azurecr.io/fluentd:1.2 name: fluentd # Seleniumとログを共有するための # Volumeをmountします。 volumeMounts: - mountPath: /var/log/stresstest name: log-volume imagePullSecrets: - name: docker-reg-credential # Seleniumとログを共有するための # Volumeを作成します。 # Pod間でデータを共有したいので # hostPathとします。 volumes: - name: log-volume hostPath: path: /var/log/stresstest 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
24 Internal Only 本セッションの ブログのURL まとめ︕︕
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
25 Internal Only シナリオづくりが簡単 ノード数を増やせば、簡単に負荷を増やすことができる。 Javaなど複数の⾔語むけにSDKが提供されている。 開発の間⼝が広い︕︕ メリット 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
26 Internal Only Jmeterのようにたくさんの負荷をかけることは出来ない。 そこそこの負荷の要件のときしかマッチしない。 ノード数を増やすことで負荷を増やすので、 お⾦がかかる。⻑時間負荷をかけられない。 なんとなく、Kubernetesの正しい使い⽅で ないような気もする、、、。 デメリット 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. Selenium on AKSでお⼿軽負荷テスト
27 Internal Only うっかりKubernetesクラスター削除し 忘れると1⽇でこういうことになりま す、、、。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. さいごに 28 Internal
Only Internal Only https://tech-lab.sios.jp/ 弊社技術ブログは、 下記URLでお届けしております。⾒てね︕︕
ご清聴ありがとうございました