GTMF 2015:...

Preview:

Citation preview

テスト管理ツール「CAT」導入によるデバッグ管理の効率化

GTMF 2015 OSAKA

2015/7/7

自己紹介

島川 知 (しまかわ とも)

10年間 携帯電話端末の第三者検証サービスに従事。 2013年株式会社SHIFTに参画。 ゲームデバッグサービスの立上げを担う。 2014年よりGame Sectionの責任者に就任

株式会社SHIFT ソフトウェアテスト事業本部 テストエンジニア部 Game Section Section長

SHIFTについて

4

会社概要

SHIFTは、ソフトウェアの「品質保証」を支援する会社

社名 株式会社SHIFT

業務内容 ソフトウェアの品質保証支援、ソフトウェアテスト事業

設立 2005年9月7日

上場 東証マザーズ 3697

従業員数 500名 ※契約社員含む(2014年10月時点)

代表者 代表取締役社長 丹下 大 Masaru Tange

所在地

【本社&東京TC】東京都港区麻布台2-4-5メソニック39MTビル

【札幌TC】北海道札幌市中央区北1条西3丁目3 札幌プラザビル

【福岡TC】福岡県福岡市中央区天神1-15-6 綾杉ビル ※TC…テストセンター

子会社 SHIFT INDIA PRIVATE LIMITED(インド国) SHIFT GLOBAL PTE LTD(シンガポール国)

5

従業員数

6

強み(サマリー)

抱えている課題

エクセルの集計・分析に時間を浪費!

回収したExcel

リーダー

エンジニア ディレクター

毎日、集計と 分析を実行

メンバー

ファイルが破損すると目も当てられない事態に・・・・

蓋を開けたら全然進んでいなかった!

デバッグ会社 QA部隊

報告が上がってくるまで状況が見えない

ディレクター

報告コストを掛けるより、ちゃんとデバッグ

しよう!

1日1回の進捗報告

進捗遅延

デバッグ状況が見えずらいため、 余計なコミュニケーションコストがかかっている

テスト管理ツール「CAT」

CATを導入すると

リアルタイムで情報共有 テスト結果

不具合レポート 課題

進捗状況 不具合管理 課題管理

素早く、正確に次の一手を打てる!! 透明性100%!!

ディレクター エンジニア

QAマネージャ

テスター

テスター

障害改修後の再テストもスムーズ

障害報告時にテストケースを紐づけて登録

影響項目の洗い出しが不要

障害管理機能

実行管理機能

管理コスト 30%~50%カット

メンバー対応

デバッグリーダーの工数

報告・連絡

集計・分析

メンバー対応

報告・連絡

浮いた工数を何に使う? ・経験を活かしたフリーデバッグ? ・新しい観点のテスト考察? ・ゲームバランスのチェック? ・メンバーの教育?

同コストでさらに高い品質レベルを目指すことも可能になる

集計コストゼロ コミュニケーションコスト削減

2015年8月 トライアルサービス開始!

詳しくはWebで www.catcloud.net

Kiuwanによる 継続的コードインスペクション

SHIFT & Kiuwan©, an Optimyth™ Brand

自動コードインスペクションの課題

• コードインスペクションツールの検出する欠陥はバグではなく、潜在欠陥もしくは技術的負債

• たくさんの欠陥を検出してくれるが、どこから着手して、どこまで直すべきかの定量的根拠が弱い

• 結果、Jenkinsのジョブで自動実行するが、検出した欠陥は放置されることが多い

Kiuwan クラウド型コードインスペクションサービス

クラウド上で実施

3. 品質モデルを管理する

1. コードを分析する 2. コードの品質を可視化する

4. ポートフォリオ分析をする

Kiuwan

Kiuwan©, an Optimyth™ Brand 3

コードを品質特性に基づいて数値化

Kiuwan©, an Optimyth™ Brand 4

品質特性や言語、重要度でドリルダウン

Kiuwan©, an Optimyth™ Brand 5

複数のソフトウェアのポートフォリオ分析

Kiuwan©, an Optimyth™ Brand 6

簡単に開始できる

3. 品質モデルを管理する • 独自のモデルを定義 or 既存モデルを利用 • コードのベストプラクティスとメトリクス • ポートフォリオの定義

1. コードを分析する • ローカルもしくはクラウドで • 開発のライフサイクルに統合できる • 通信は暗号化されている • 分析時間が速い

2. コードの品質を可視化する

• リスク • 欠陥 • メトリクス • Technical debt

4. ポートフォリオ分析をする • ポートフォリオ分析をしてアクションを決定 • 複数のアプリケーションと時系列の分析 • 修正に必要な抗すつとリソースを見積もり

Kiuwan©, an Optimyth™ Brand 7

C/C++を始め多数の言語に対応

Kiuwan©, an Optimyth™ Brand 8

Jenkins Kiuwanプラグイン

Jenkins Kiuwanプラグイン Kiuwanプラグインによって、JenkinsによるCIやCDにKiuwanによるコードインスペクションを組み込むことが可能 Kiuwanのローカル分析がビルドプロセス上で実行され、結果がKiuwanの各アプリケーションにアップされる

Kiuwan©, an Optimyth™ Brand 9

デモ

Kiuwanによる自動コードインスペクションの改善

• どこから直すの判断が容易 – ベンチマークとなる製品と比較して劣っている品質特性に関係する欠陥から

– 最も低い品質特性の重要度の高いものから

• どれだけ直すの判断が容易 – What ifで工数見積もり

• どれだけ改善されたの判断が容易 – 時系列と製品横断で品質改善を評価

1

Jenkins Enterpriseによるコンテンツパイプラインの改善

株式会社SHIFT 技術開発部

2

• CloudBees Jenkins Platform Enterprise Editionの紹介

• シチュエーション別Enterprise Editionによる解決 – 長いコンテンツパイプラインの記述と実行 – JenkinsのマスターがSPOF – 複数のマスターでスレーブを共有

アジェンダ

3

CloudBees Jenkins Platform Enterprise Editionの紹介

4

• Enterprise Edition – 通常のオープンソースのJenkinsをベースに、CloudBees社によって管理・リリースされている有償版

– CentOSとRedHat Enterprise Linuxのような関係 – 中小チームのために機能限定したTeam Editionもあり

• メリット – オープンソースのJenkinsの安定版をベースに、

Enterprise Edition独自のプラグインを追加している – Jenkins本体と無償版とEnterprise Editionのプラグインの両方で、使用にあたってCloudBeesのサポートを受けることができる

CloudBees Jenkins Platform Enterprise Editionの紹介

5

シチュエーション別Enterprise Editionによる解決

6

• 問題 – ゲーム業界でJenkinsを使う場合、長く複雑なビルドパイプラインやコンテンツパイプラインの記述が必要になる

• OSS Jenkinsによる解決 – Copy Artifactプラグイン、Parameterized Trigger Plugin、

Conditional Build Stepプラグイン、Build Flow Pluginなどを組み合わせれば複雑なビルドパイプラインの記述は可能

• 但し、見通しが非常に悪くなる

• Enterprise Editionによる解決 – Workflowプラグイン

• 実はOSS版でも使える • Enterprise Editionではチェックポイントでのリラン、ステージの可視化が可能

長いコンテンツパイプラインの記述と実行

7

ワークフロー記述例 stage 'GameObjectExport' node { parallel MeshExport: { build 'MeshExport' }, GameObjectExport: { build 'GameObjectExport' } } checkpoint 'GameObjectExportFinished' stage 'AnimationTranform' node { parallel SkeltonExport: { build 'SkeltonExport' }, AnimationTranform: { build 'AnimationTranform' } }

ステージ

並列ビルド

チェックポイント

8

• Workflowプラグイン – GroovyのDSLにより並列実

行やチェックポイントを含む柔軟なビルドパイプラインの記述が可能

• Workflow Stage Viewプラグイン – ステージ毎の実行時間の

可視化 – チェックポイントからの再実

WorkflowプラグインとWorkflow Stage Viewプラグイン

9

JenkinsのマスターがSPOF

• 問題 – JenkinsのマスターがSPOFであるため、長く複雑なビルドパイプラインやコンテンツパイプラインの実行中に落ちてしまうと回復までのダメージが大きい

• OSS Jenkinsによる解決 – マスターはExecutorとはしない – マスターを分ける

• 複数のマスターで同じジョブを実行したい場合にマスター管理が面倒

• Enterprise Editionによる解決 – High Availabilityプラグイン

• Jenkinsマスターをアクティブ・スタンバイのHA構成に

10

Enterprise Editionにおける高可用性

• アクティブ・スタンバイの設定をする

アクティブ Jenkins master

$JENKINS_HOME

スタンバイ Jenkins master

リバース プロキシ

11

フェイル・オーバーすると…

• サービスが中断して、しばらくしたら、スタンバイ・ノードがサービスを引きつぐ

• 設定とビルドの履歴は残る • 人の介在は必要なし • 実行中のビルドは消失する

12

HA 監視ツール

• フェイル・オーバーを監視する小さなアプリ – 昇格&降格スクリプトを実行可能

• システム管理者がroot権限で実行することを想定 – IPのエイリアスを変更する – サーバーへ通知する

$ java -jar jenkins-ha-monitor.jar -host-promotion path/to/promotion.sh -host-demotion path/to/demotion.sh

13

複数のマスターでスレーブを共有

• 問題 – ゲームタイトルごとにJenkinsマスターを立てているが、スレーブの稼働率向上のために、複数のタイトルでスレーブを共有したい

• OSS Jenkinsによる解決 – 手動でスレーブの登録先マスターを切り替える

• 毎回の手動切り替えが大変

• Enterprise Editionによる解決 – Operations on a cluster of masters with Cluster Ops

• 複数のマスターで使用できるスレーブをOperations on a cluster of masters with Cluster Opsで管理できる

• 個々のマスターはどのスレーブを使うか判断しなくて良い

14

• マスター間でエグゼキューターを共有する – 現在はできない

開発

QA

運用

水平スケールアウトの課題: したいこと…

15

• セキュリティー情報の共有 – ユーザー情報とロール

開発

QA

運用

ops.cloudbees.com eng.cloudbees.com

http://sca12-3530-qe.cloudbees.com/jenkins

• マスター間の容易な移動

垂直スケールアウトの課題: したいこと…

16

垂直スケールアウトの課題

• いつまでJenkinsをスケールできるのか?? • 単一障害点(SPOF)の問題

17

開発

QA

運用

共有ロールと ユーザー管理

オペレーション・コントール マスター・サーバー

oc.cloudbees.com

oc.cloudbees.com/qa

oc.cloudbees.com/eng oc.cloudbees.com/ops

所属するマスター

所属するマスター 所属するマスター

マスターへ配信される

トポロジー例

18

• 新規マスターのための組込みグループ • 単一障害点となるメガ・マスターからの脱却 • オペレーション・センターマスターとマスターHAを実現する

Enterprise Editionプラグイン • オペレーション・マスターに障害が起きても、Jenkinsマスターは

稼働を継続 • 頻繁に異常終了することなく、迅速に障害から回復する軽量な

マスター

Enterprise Editionによって水平スケールアウトが可能に

19

リファレンス・アーキテクチャ

Recommended