Slide 1

Slide 1 text

#jjug_ccc 勤怠管理サービスでの継続的テストの取り組み JJUG CCC 2021 Fall 株式会社ラクス Yuya Yamaguchi

Slide 2

Slide 2 text

#jjug_ccc 2 自己紹介 SIerでAWS, Azure, k8s 株式会社ラクス で楽楽勤怠に所属 バックエンドエンジニア + CI周りを担当

Slide 3

Slide 3 text

3 https://fortee.jp/jjug-ccc-2021-fall/proposal/8256578c-e568-46a0-9eb5-85ee954f1d0e

Slide 4

Slide 4 text

#jjug_ccc Agenda 1. なぜ継続的テストを進めているの か 2. CIパイプラインへのテストの組み 込み 3. テストの自動化 4

Slide 5

Slide 5 text

#jjug_ccc Agenda 1. なぜ継続的テストを進めているの か 2. CIパイプラインへのテストの組み 込み 3. テストの自動化 5

Slide 6

Slide 6 text

#jjug_ccc なぜ継続的テストを進めているのか 6 1. 勤怠管理サービスの特徴 2. QA・SETエンジニアがいない 3. リリースサイクルを短縮したい

Slide 7

Slide 7 text

#jjug_ccc なぜ継続的テストを進めているのか 7 1. 勤怠管理サービスの特徴 2. QA・SETエンジニアがいない 3. リリースサイクルを短縮したい

Slide 8

Slide 8 text

#jjug_ccc 勤怠管理サービスの特徴 8

Slide 9

Slide 9 text

#jjug_ccc なぜ継続的テストを進めているのか 9 1. 勤怠管理サービスの特徴 2. QA・SETエンジニアがいない 3. リリースサイクルを短縮したい

Slide 10

Slide 10 text

#jjug_ccc QA・SETエンジニアがいない 10 プロダクトマネージャ バックエンドエンジニア フロントエンドエンジニア デザイナー インフラエンジニア QAエンジニア SETエンジニア

Slide 11

Slide 11 text

#jjug_ccc なぜ継続的テストを進めているのか 11 1. 勤怠管理サービスの特徴 2. QA・SETエンジニアがいない 3. リリースサイクルを短縮したい

Slide 12

Slide 12 text

#jjug_ccc なぜ継続的テストを進めているのか 12 1. 勤怠管理サービスの特徴 2. QA・SETエンジニアがいない 3. リリースサイクルを短縮したい

Slide 13

Slide 13 text

#jjug_ccc Agenda 1. なぜ継続的テストを進めているの か 2. CIパイプラインへのテストの組み 込み 3. テストの自動化 13

Slide 14

Slide 14 text

#jjug_ccc CIパイプラインの対象範囲 14 ● Single Page Application ● Vue.js ● Spring Boot ● PostgreSQL Vue.js PostgreSQL

Slide 15

Slide 15 text

#jjug_ccc CIパイプラインへのテストの組み込みで利用したもの 15

Slide 16

Slide 16 text

Gitlab-CIとは 16 GitLab CI/CDパイプラインは、統合され た単一のワークフローの一部としてコー ドのビルド、テスト、デプロイ、監視を行 います。 Forrester CI Wave™のリーダーに選出 されました。 https://www.gitlab.jp/stages-devops-lifecycle/continuous-integration/

Slide 17

Slide 17 text

#jjug_ccc Gitlab-CIの特徴 17 ● マルチプラットフォーム: Unix、Windows、macOS、その他Goをサポートするあらゆるプラットフォームでビルドを実行 できます。 ● 安定性: ビルドは GitLab とは別のマシンで実行されます。 ● 柔軟なパイプライン: ステージごとに複数の並列ジョブを定義し、 他のビルドをトリガー することができます。 ● バージョン管理されたパイプライン: .gitlab-ci.yml ファイル にはテストなどのすべてのステップが含まれています。 ブ ランチで .gitlab-ci.yml ファイルを変更することで、誰でも安全にパイプラインの変更を試すことができます。 ● Dockerのサポート: カスタムDockerイメージを使用したり、テストの一環として サービス を起動したり、 新しいDocker イメージをビルド したり、Kubernetes上で実行したりすることができます。 ● コンテナレジストリ: コンテナイメージを保存、共有、使用するための 組み込みコンテナレジストリ を利用できます。 ● 保護変数: 環境ごとに 保護変数 を使用して、デプロイに必要な認証情報などを安全に保存し、使用することができま す。 https://www.gitlab.jp/stages-devops-lifecycle/continuous-integration/

Slide 18

Slide 18 text

#jjug_ccc Gitlab-CIの特徴 18 ● マルチプラットフォーム: Unix、Windows、macOS、その他Goをサポートするあらゆるプラットフォームでビルドを実行 できます。 ● 安定性: ビルドは GitLab とは別のマシンで実行されます。 ● 柔軟なパイプライン: ステージごとに複数の並列ジョブ を定義し、 他のビルドをトリガー することができます。 ● バージョン管理されたパイプライン: .gitlab-ci.yml ファイル にはテストなどのすべてのステップが含まれています。 ブ ランチで .gitlab-ci.yml ファイルを変更することで、誰でも安全にパイプラインの変更を試すことができます。 ● Dockerのサポート: カスタムDockerイメージを使用したり、テストの一環として サービス を起動したり、 新しいDocker イメージをビルド したり、Kubernetes上で実行したりすることができます。 ● コンテナレジストリ: コンテナイメージを保存、共有、使用するための 組み込みコンテナレジストリ を利用できます。 ● 保護変数: 環境ごとに 保護変数 を使用して、デプロイに必要な認証情報などを安全に保存し、使用することができま す。 https://www.gitlab.jp/stages-devops-lifecycle/continuous-integration/

Slide 19

Slide 19 text

#jjug_ccc Gitlab-CIの特徴 19 ● マルチプラットフォーム: Unix、Windows、macOS、その他Goをサポートするあらゆるプラットフォームでビルドを実行 できます。 ● 安定性: ビルドは GitLab とは別のマシンで実行されます。 ● 柔軟なパイプライン: ステージごとに複数の並列ジョブを定義し、 他のビルドをトリガー することができます。 ● バージョン管理されたパイプライン: .gitlab-ci.yml ファイル にはテストなどのすべてのステップが含まれています。 ブ ランチで .gitlab-ci.yml ファイルを変更することで、誰でも安全にパイプラインの変更を試すことができます。 ● Dockerのサポート: カスタムDockerイメージを使用したり、テストの一環として サービス を起動したり、 新しいDocker イメージをビルド したり、Kubernetes上で実行したりすることができます。 ● コンテナレジストリ: コンテナイメージを保存、共有、使用するための 組み込みコンテナレジストリ を利用できます。 ● 保護変数: 環境ごとに 保護変数 を使用して、デプロイに必要な認証情報などを安全に保存し、使用することができま す。 https://www.gitlab.jp/stages-devops-lifecycle/continuous-integration/

Slide 20

Slide 20 text

#jjug_ccc .gitlab-ci.yml $ cat .gitlab-ci.yml stages: - build - test build-code-job: stage: build script: - echo "Check the ruby version, then build some Ruby project files:" - ruby -v - rake test-code-job1: stage: test script: - echo "If the files are built successfully, test some files with one command:" - rake test1 test-code-job2: stage: test script: - echo "If the files are built successfully, test other files with a different command:" - rake test2 20 https://docs.gitlab.com/ee/ci/yaml/gitlab_ci_yaml.html

Slide 21

Slide 21 text

#jjug_ccc Gitlab-CIの特徴 21 ● マルチプラットフォーム: Unix、Windows、macOS、その他Goをサポートするあらゆるプラットフォームでビルドを実行 できます。 ● 安定性: ビルドは GitLab とは別のマシンで実行されます。 ● 柔軟なパイプライン: ステージごとに複数の並列ジョブを定義し、 他のビルドをトリガー することができます。 ● バージョン管理されたパイプライン: .gitlab-ci.yml ファイル にはテストなどのすべてのステップが含まれています。 ブ ランチで .gitlab-ci.yml ファイルを変更することで、誰でも安全にパイプラインの変更を試すことができます。 ● Dockerのサポート: カスタムDockerイメージを使用したり、テストの一環として サービス を起動したり、 新しいDocker イメージをビルド したり、Kubernetes上で実行したりすることができます。 ● コンテナレジストリ: コンテナイメージを保存、共有、使用するための 組み込みコンテナレジストリ を利用できます。 ● 保護変数: 環境ごとに 保護変数 を使用して、デプロイに必要な認証情報などを安全に保存し、使用することができま す。 https://www.gitlab.jp/stages-devops-lifecycle/continuous-integration/

Slide 22

Slide 22 text

#jjug_ccc Gitlab-CIのDockerサポート 22 https://docs.gitlab.com/runner/executors/

Slide 23

Slide 23 text

#jjug_ccc Gitlab-CIのDockerサポート 23 https://docs.gitlab.com/runner/executors/

Slide 24

Slide 24 text

#jjug_ccc CIパイプラインへのテストの組み込み 24

Slide 25

Slide 25 text

#jjug_ccc CIパイプラインへのテストの組み込み 25 アプリケーションとインフラのコードを分離

Slide 26

Slide 26 text

#jjug_ccc CIパイプラインへのテストの組み込み 26 アプリケーションとインフラのコードを分離 アプリケーション

Slide 27

Slide 27 text

#jjug_ccc CIパイプラインへのテストの組み込み 27 アプリケーションとインフラのコードを分離 インフラ

Slide 28

Slide 28 text

#jjug_ccc CI CIパイプラインへのテストの組み込み 28 アプリケーションとインフラのコードを分離 インフラ アプリケーション

Slide 29

Slide 29 text

#jjug_ccc CIパイプラインへのテストの組み込み 29 4つのステージ構成

Slide 30

Slide 30 text

#jjug_ccc stageとは 30 https://docs.gitlab.co.jp/ee/ci/pipelines/ jobのグループ化と実行順序を制御する

Slide 31

Slide 31 text

#jjug_ccc stageとは 31 https://www.gitlab.jp/stages-devops-lifecycle/continuous-integration/

Slide 32

Slide 32 text

#jjug_ccc CIパイプラインへのテストの組み込み 32 4つのステージ構成 code

Slide 33

Slide 33 text

#jjug_ccc CIパイプラインへのテストの組み込み 33 4つのステージ構成 code test

Slide 34

Slide 34 text

#jjug_ccc CIパイプラインへのテストの組み込み 34 4つのステージ構成 code test build

Slide 35

Slide 35 text

#jjug_ccc CIパイプラインへのテストの組み込み 35 4つのステージ構成 code test deploy build

Slide 36

Slide 36 text

#jjug_ccc CIパイプラインへのテストの組み込み 36 code test deploy build

Slide 37

Slide 37 text

#jjug_ccc stageとは 37 $ cat .gitlab-ci.yml stages: # code - build - test - deploy

Slide 38

Slide 38 text

#jjug_ccc CIパイプラインへのテストの組み込み 38 code test deploy build

Slide 39

Slide 39 text

#jjug_ccc CIパイプラインへのテストの組み込み 39 code

Slide 40

Slide 40 text

#jjug_ccc CIパイプラインへのテストの組み込み 40 code test deploy build git push

Slide 41

Slide 41 text

#jjug_ccc stageとは 41 $ cat .gitlab-ci.yml stages: # code - build - test - deploy

Slide 42

Slide 42 text

#jjug_ccc CIパイプラインへのテストの組み込み 42 code test git push

Slide 43

Slide 43 text

#jjug_ccc CIパイプラインへのテストの組み込み 43 code test deploy build analysis git push

Slide 44

Slide 44 text

#jjug_ccc analysis job ● 静的コード解析を実行するジョブ ● コーディング規約などをチェック ● PMD, Spotbugs, CheckStyle 44

Slide 45

Slide 45 text

#jjug_ccc 静的解析 $ cat .gitlab-ci.yml stages: - test analysis: stage: test image: openjdk script: - /bin/sh gradlew clean checkstyleMain checkstyleTest spotbugsMain pmdMain pmdTest 45

Slide 46

Slide 46 text

#jjug_ccc CIパイプラインへのテストの組み込み 46 code test deploy build unit test git push

Slide 47

Slide 47 text

#jjug_ccc unit test job ● 単体テストを実行するジョブ ● JUnit 47

Slide 48

Slide 48 text

#jjug_ccc unit test job $ cat .gitlab-ci.yml stages: - test services: - name: postgres unit-test: stage: test image: openjdk script: - /bin/sh gradlew clean test 48

Slide 49

Slide 49 text

#jjug_ccc servicesとは $ cat .gitlab-ci.yml stages: - test services: - name: postgres unit-test: stage: test image: openjdk script: - /bin/sh gradlew clean test 49

Slide 50

Slide 50 text

#jjug_ccc servicesとは ● jobを実行するdockerイメージとは別のdockerイメージを実行するための仕組み ● データベースコンテナを動作させておきたいユースケースに対応 50

Slide 51

Slide 51 text

#jjug_ccc unit test job $ cat .gitlab-ci.yml stages: - test services: - name: postgres unit-test: stage: test image: openjdk script: - /bin/sh gradlew clean test 51

Slide 52

Slide 52 text

#jjug_ccc CIパイプラインへのテストの組み込み 52 code test deploy build unit test git push

Slide 53

Slide 53 text

#jjug_ccc CIパイプラインへのテストの組み込み 53 code test deploy build arch test git push

Slide 54

Slide 54 text

#jjug_ccc arch test job ● アーキテクチャテストを実行するジョブ ● レイヤー間の依存関係をチェック ● ドメインモデル間の依存関係をチェック ● ArchUnit 54

Slide 55

Slide 55 text

#jjug_ccc CIパイプラインへのテストの組み込み 55 code test deploy build merge request arch test unit test analysis git push

Slide 56

Slide 56 text

#jjug_ccc CIパイプラインへのテストの組み込み 56 code test deploy build analysis git push arch test unit test analysis merge request

Slide 57

Slide 57 text

#jjug_ccc CIパイプラインへのテストの組み込み 57 code test deploy build unit test git push arch test unit test analysis merge request

Slide 58

Slide 58 text

#jjug_ccc CIパイプラインへのテストの組み込み 58 code test deploy build arch test git push arch test unit test analysis merge request

Slide 59

Slide 59 text

#jjug_ccc CIパイプラインへのテストの組み込み 59 code test deploy build arch test unit test analysis git push arch test unit test analysis merge request

Slide 60

Slide 60 text

#jjug_ccc CIパイプラインへのテストの組み込み 60 code test build git push arch test unit test analysis merge request arch test unit test analysis

Slide 61

Slide 61 text

#jjug_ccc CIパイプラインへのテストの組み込み 61 code test deploy build build git push arch test unit test analysis merge request arch test unit test analysis

Slide 62

Slide 62 text

#jjug_ccc build job ● アプリケーションのビルドを実行するジョブ 62

Slide 63

Slide 63 text

#jjug_ccc build job $ cat .gitlab-ci.yml stages: - build build: stage: build image: openjdk script: - /bin/sh gradlew clean bootJar after_script: - aws s3 cp build/libs/app.jar s3://bucket/app.jar 63

Slide 64

Slide 64 text

#jjug_ccc build job $ cat .gitlab-ci.yml stages: - build build: stage: build image: openjdk script: - /bin/sh gradlew clean bootJar after_script: - aws s3 cp build/libs/app.jar s3://bucket/app.jar 64

Slide 65

Slide 65 text

#jjug_ccc CIパイプラインへのテストの組み込み 65 code test deploy build build git push arch test unit test analysis merge request arch test unit test analysis

Slide 66

Slide 66 text

#jjug_ccc CIパイプラインへのテストの組み込み 66 code test deploy build git push arch test unit test analysis merge request arch test unit test analysis build

Slide 67

Slide 67 text

#jjug_ccc CIパイプラインへのテストの組み込み 67 code test deploy build trigger git push arch test unit test analysis merge request arch test unit test analysis build

Slide 68

Slide 68 text

#jjug_ccc trigger job $ cat .gitlab-ci.yml stages: - deploy trigger: stage: deploy variables: APP_VERSION: 1.0 trigger: project: infra-repository 68

Slide 69

Slide 69 text

#jjug_ccc CIパイプラインへのテストの組み込み 69 code test deploy build trigger インフラ git push arch test unit test analysis merge request arch test unit test analysis build

Slide 70

Slide 70 text

#jjug_ccc CIパイプラインへのテストの組み込み 70 code test deploy build trigger インフラ deploy git push arch test unit test analysis merge request arch test unit test analysis build

Slide 71

Slide 71 text

#jjug_ccc deploy job $ cat .gitlab-ci.yml stages: - deploy deploy: stage: deploy image: ansible script: - /usr/local/bin/ansible-playbook -i staging/hosts -e “app_version=${APP_VERSION’}” deploy.yml rules: - if ‘$APP_VERSION’ 71

Slide 72

Slide 72 text

#jjug_ccc deploy job $ cat .gitlab-ci.yml stages: - deploy deploy: stage: deploy image: ansible script: - /usr/local/bin/ansible-playbook -i staging/hosts -e “app_version=${APP_VERSION’}” deploy.yml rules: - if ‘$APP_VERSION’ 72

Slide 73

Slide 73 text

#jjug_ccc CIパイプラインへのテストの組み込み 73 code test deploy build trigger インフラ deploy git push merge request trigger analysis unit test arch test analysis unit test arch test build アプリケーション

Slide 74

Slide 74 text

#jjug_ccc Agenda 1. なぜ継続的テストを進めているの か 2. CIパイプラインへのテストの組み 込み 3. テストの自動化 74

Slide 75

Slide 75 text

#jjug_ccc 自動化しているテスト ● ユニットテスト ● パフォーマンステスト ● E2Eテスト 75 https://note.com/globis_engineers/n/n455d7322fa33

Slide 76

Slide 76 text

#jjug_ccc 自動化しているテスト 76 ● ユニットテスト ● パフォーマンステスト ● E2Eテスト https://note.com/globis_engineers/n/n455d7322fa33

Slide 77

Slide 77 text

#jjug_ccc パフォーマンステストを自動化される前は 77 1. 負荷がかかるサーバを構築する 2. 負荷をかけるサーバを構築する 3. パフォーマンステストを実行する 4. テストをもとにSpreadsheetのグラフに落としこむ 5. すべてのパフォーマンステストのシナリオに対して上記の作業を繰り返す

Slide 78

Slide 78 text

#jjug_ccc パフォーマンステストが自動化される前の問題 1. 1つのJMeterシナリオをテストするのに時間がかかる 2. 手作業なので作業ミスが発生する 3. テスト結果を確認するためのグラフを作るのに大変 78

Slide 79

Slide 79 text

#jjug_ccc パフォーマンステストの自動化で利用したもの 79

Slide 80

Slide 80 text

#jjug_ccc パフォーマンステストを自動化される前は 80 1. 負荷がかかるサーバを構築する 2. 負荷をかけるサーバを構築する 3. パフォーマンステストを実行する 4. テストをもとにSpreadsheetのグラフに落としこむ 5. すべてのパフォーマンステストのシナリオに対して上記の作業を繰り返す

Slide 81

Slide 81 text

#jjug_ccc パフォーマンステストの自動化 81 テストを実行する ansible influxdb PostgreSQL Grafana 負荷がかかるサーバ

Slide 82

Slide 82 text

#jjug_ccc パフォーマンステストの自動化 82 負荷がかかるサーバを構築する ansible influxdb PostgreSQL Grafana 負荷がかかるサーバ

Slide 83

Slide 83 text

#jjug_ccc パフォーマンステストを自動化される前は 83 1. 負荷がかかるサーバを構築する 2. 負荷をかけるサーバを構築する 3. パフォーマンステストを実行する 4. テストをもとにSpreadsheetのグラフに落としこむ 5. すべてのパフォーマンステストのシナリオに対して上記の作業を繰り返す

Slide 84

Slide 84 text

#jjug_ccc パフォーマンステストを自動化される前は 84 1. 負荷がかかるサーバを構築する 2. 負荷をかけるサーバを構築する 3. パフォーマンステストを実行する 4. テストをもとにSpreadsheetのグラフに落としこむ 5. すべてのパフォーマンステストのシナリオに対して上記の作業を繰り返す

Slide 85

Slide 85 text

#jjug_ccc パフォーマンステストの自動化 85 JMeter環境を構築する ansible influxdb PostgreSQL Grafana 負荷がかかるサーバ

Slide 86

Slide 86 text

#jjug_ccc パフォーマンステストを自動化される前は 86 1. 負荷がかかるサーバを構築する 2. 負荷をかけるサーバを構築する 3. パフォーマンステストを実行する 4. テストをもとにSpreadsheetのグラフに落としこむ 5. すべてのパフォーマンステストのシナリオに対して上記の作業を繰り返す

Slide 87

Slide 87 text

#jjug_ccc パフォーマンステストを自動化される前は 87 1. 負荷がかかるサーバを構築する 2. 負荷をかけるサーバを構築する 3. パフォーマンステストを実行する 4. テストをもとにSpreadsheetのグラフに落としこむ 5. すべてのパフォーマンステストのシナリオに対して上記の作業を繰り返す

Slide 88

Slide 88 text

#jjug_ccc パフォーマンステストの自動化 88 JMeterシナリオを実行する ansible influxdb Grafana 負荷がかかるサーバ PostgreSQL

Slide 89

Slide 89 text

#jjug_ccc JMeter CLI $ jmeter -n -t scenario.jmx -l /usr/local/report/jtl.csv -e -o /usr/local/report 89

Slide 90

Slide 90 text

#jjug_ccc パフォーマンステストを自動化される前は 90 1. 負荷がかかるサーバを構築する 2. 負荷をかけるサーバを構築する 3. パフォーマンステストを実行する 4. テストをもとにSpreadsheetのグラフに落としこむ 5. すべてのパフォーマンステストのシナリオに対して上記の作業を繰り返す

Slide 91

Slide 91 text

#jjug_ccc パフォーマンステストの自動化 91 JTLファイルをインポートする ansible influxdb PostgreSQL Grafana 負荷がかかるサーバ

Slide 92

Slide 92 text

#jjug_ccc JTLファイル $ cat jtl.csv timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,fa ilureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect 1234567890123,1,GET /index.html,200,OK,rakus.co.jp:1099-Thread Group 1-1,text,true,,1689,1,1,1,https://rakus.co.jp/,1,0,1 92

Slide 93

Slide 93 text

#jjug_ccc パフォーマンステストの自動化 93 JTLファイルをインポートする ansible influxdb PostgreSQL Grafana 負荷がかかるサーバ

Slide 94

Slide 94 text

#jjug_ccc InfluxdbにJMeterの結果をインポートする方法 ● JMeterのbackend listenerを利用する ○ JMeterで負荷テスト中にリアルタイムで連携する方法 ○ 3種類の方法がある ■ (公式)InfluxDBBackendListenerClient ■ (非公式)JMeter InfluxDB v2.0 listener plugin ● JMeterのJTLファイルを利用する 94

Slide 95

Slide 95 text

#jjug_ccc パフォーマンステストの自動化 95 統計情報をインポートする ansible influxdb PostgreSQL Grafana 負荷がかかるサーバ

Slide 96

Slide 96 text

#jjug_ccc 統計情報 $ cat statistics.json | jq . { "GET /index.html" : { "transaction" : "GET /index.html", "sampleCount" : 1, "errorCount" : 0, "errorPct" : 0.0, "meanResTime" : 9.933357142857153, "medianResTime" : 3.0, "minResTime" : 0.0, "maxResTime" : 1557.0, "pct1ResTime" : 21.0, "pct2ResTime" : 34.0, "pct3ResTime" : 105.0, "throughput" : 23.258672993025723, "receivedKBytesPerSec" : 14.445816429262068, "sentKBytesPerSec" : 6.859491449115007 } } 96

Slide 97

Slide 97 text

#jjug_ccc パフォーマンステストの自動化 97 統計情報をインポートする ansible influxdb PostgreSQL Grafana 負荷がかかるサーバ

Slide 98

Slide 98 text

#jjug_ccc パフォーマンステストの自動化 98 統計情報をインポートする ansible influxdb PostgreSQL Grafana 負荷がかかるサーバ JTLファイルをインポートする

Slide 99

Slide 99 text

#jjug_ccc パフォーマンステストの自動化 99 ansible influxdb PostgreSQL Grafana 負荷がかかるサーバ

Slide 100

Slide 100 text

100 https://grafana.com/grafana/dashboards/1152

Slide 101

Slide 101 text

#jjug_ccc パフォーマンステストを自動化される前は 101 1. 負荷がかかるサーバを構築する 2. 負荷をかけるサーバを構築する 3. パフォーマンステストを実行する 4. テストをもとにSpreadsheetのグラフに落としこむ 5. すべてのパフォーマンステストのシナリオに対して上記の作業を繰り返す

Slide 102

Slide 102 text

#jjug_ccc パフォーマンステストを自動化される前は 102 1. 負荷がかかるサーバを構築する 2. 負荷をかけるサーバを構築する 3. パフォーマンステストを実行する 4. テストをもとにSpreadsheetのグラフに落としこむ 5. すべてのパフォーマンステストのシナリオに対して上記の作業を繰り返す

Slide 103

Slide 103 text

#jjug_ccc パフォーマンステストの自動化 103 ansible influxdb PostgreSQL Grafana 負荷がかかるサーバ

Slide 104

Slide 104 text

#jjug_ccc パフォーマンステストを自動化される前の問題 1. 1つのJMeterシナリオをテストするのに時間がかかる 2. 手作業が多いので作業ミスが発生する 3. テスト結果を確認するためのグラフを作るのに大変 104

Slide 105

Slide 105 text

#jjug_ccc パフォーマンステストを自動化される前の問題 1. 1つのJMeterシナリオをテストするのに時間がかかる → 自動化されたので夜間に実施できる 1. 手作業が多いので作業ミスが発生する 2. テスト結果を確認するためのグラフを作るのに大変 105

Slide 106

Slide 106 text

#jjug_ccc パフォーマンステストを自動化される前の問題 1. 1つのJMeterシナリオをテストするのに時間がかかる → 自動化されたので夜間に実施できる 1. 手作業が多いので作業ミスが発生する → Ansibleを実行するのみで発生しにくくなった 1. テスト結果を確認するためのグラフを作るのに大変 106

Slide 107

Slide 107 text

#jjug_ccc パフォーマンステストを自動化される前の問題 1. 1つのJMeterシナリオをテストするのに時間がかかる → 自動化されたので夜間に実施できる 1. 手作業が多いので作業ミスが発生する → Ansibleを実行するのみで発生しにくくなった 1. テスト結果を確認するためのグラフを作るのに大変 → Grafanaが自動的に作成してくれる 107

Slide 108

Slide 108 text

#jjug_ccc まとめ ● Gitlab CI上にテストの組み込み ● パフォーマンステストの自動化 ↓ 継続的にテストをすることができる環境 を構築することができました。 108

Slide 109

Slide 109 text

109 ご清聴ありがとうございました。