楽天のアジャイル開発とメトリクス事例
Sep/15/2016
Rakuten Inc.
Ecosystem Service Department
Delivery and Quality Solution Group
Manager
荻野恒太郎
http://corp.rakuten.co.jp/careers/engineering/
自己紹介: 荻野恒太郎
2
2010 2011 2012 2013 2014 2015 2016
役割:テスト自動化エンジニア 役割:DevOpsエンジニア
マネージャー
SQiP 2014
事例発表
本日の話題②
DevOpsでのメトリクス
本日の話題①
アジャイルチーム
でのメトリクス
(継続的システムテスト)
3
本日の話題①
アジャイルチームでの
メトリクス
(継続的システムテスト)
アジャイルチームでのメトリクス
4
スプリント1 スプリント2 スプリントNスプリントn
… …
アジャイル開発の特徴:
反復型開発とチームの自己組織化
アジャイルでは迅速な開発とリリースの実現に向けた
チームの自己組織化が求められる。
そのため自律的かつ継続的な改善のための素早いフィードバックが重要。
改善とメトリクス
・Process
-ベロシティ
-スモークテスト安定率
・Product
-規模
-静的コード解析結果
-テストカバレッジ
-バグ件数
継続的システムテストによる改善活動事例
5
事例: サーチ基盤開発プロジェクトへの
継続的システムテストの導入
継続的システムテスト導入の目的
・システムテストがボトルネック
バグの修正に中央値で5日かかっていた
メトリクス活用の目的
① チームへの改善活動の提案
② チームとの改善効果の合意
③ マネージメント層へのレポート
④ 展開のためのコンセプト説明
継続的システムテストの概要
6
システムテストを自動化し 継続的に開発と並行して実行
“システムテスト自動化による大規模検索
プラットフォームの開発工程改善”, JaSST’Tokyo 2014
メトリクスの活用事例①:チームへの改善活動の提案
7
アジャイルチームではチームが自ら問題点を見つけ改善提案をする。
そのためメトリクスから継続的にチーム状態のフィードバックを得る。
チームの問題:
イテレーションの後半でのバグの発見
メトリクスから調査した原因:
・スモークテストのカバレッジ
・スモークテストの実行タイミング
改善提案:
・スモークテストのカバレッジ向上
・スモークテストのプロセスの変更
チームへの改善提案の例:スモークテスト
メトリクスの活用事例②:チームとの改善効果の合意
8
アジャイルチームではチームメンバー全員で改善活動を実施する。
そのためメトリクスから改善活動の効果をチーム全員で確認する。
テスト種別ごとのバグ曲線改善施策:
・ストーリーの分割方法
・開発プロセスの変更
メトリクスによる評価:
・バグ収束の改善
チームとの改善効果の合意の例:バグの収束
メトリクスの活用事例③:マネージメント層へのレポート
9
アジャイルチームではチームの改善活動をマネージャーが支援する。
継続的に支援を得るため、定期的に導入効果をレポートする。
マネージメント層へのレポートの例:継続的システムテスト導入
マネージメント層の興味
・ボトルネックが解消されたか?
メトリクスによるレポート:
ボトルネックが解消されたことを
メトリクスで示す
・バグ修正日数の改善
・デリバリ可能な状態をキープ
メトリクスの活用事例④:展開のためのコンセプト説明
10
アジャイルチームでは効果の出た改善事例を横展開する。
そのため改善事例のコンセプトを見慣れたメトリクスで可視化する。
展開のためのコンセプト説明の例:継続的システムテスト導入
改善活動の横展開
・しかし、新しいコンセプトは
理解してもらうことが難しい
メトリクスによる説明:
見慣れたメトリクスで可視化
・継続的なテスト実行とバグ検出
・開発とテストの並行実施
11
本日の話題②
DevOpsでのメトリクス
DevOpsでのメトリクス
12
要求分析
DevOpsの特徴
開発 テスト 運用
エンドユーザー
価値
アジャイルチームの
守備範囲
DevOpsの守備範囲
改善とメトリクス
・Process
-デリバリリードタイム
-デリバリの頻度
・Product
-本番環境での損失
-可用性
-運用のリードタイム
DevOpsでは各チームの改善活動のビジネスへの影響を最大化するため
チーム間でのより密なコミュニケーションと協働が求められる
エンタープライズアジャイルとDevOps(補足)
楽天株式会社
アジャイルコーチ
川口恭伸
Agile, Cloud, Enterpriseの流れが、
テスト自動化のみでなく開発・運用スタイルを大きく変えている 13
DevOpsでの改善活動事例
14
信頼性永続性
事例: DevOps推進プロジェクトでのメトリクス活用
DevOps導入の目的
・開発から運用までの一貫した永続性、生産性、信頼性の改善
・Dev/Test/Opsチーム間の改善活動の促進
生産性
開発チーム テストチーム 運用チーム
メトリクス活用の目的
① チーム間でのゴールの共有
② チーム間の協働の促進
DevOpsでのメトリクスの活用の目的:
チーム間でのゴールの共有と協働の促進
15
サービスの損失
(信頼性)
デリバリの頻度
(永続性)
開発チームの
リードタイム
テストチームの
リードタイム
自動化カバレッジ
セルフサービス
カバレッジ
テスト
カバレッジ
運用チームの
リードタイム
可用性混入バグ数
トレーニング頻度
ビジネスKPI
開発チームのKPI
テストチームのKPI
共通チームのkPI
運用チームのKPI
①チーム間でのゴールの共有
・ゴール(ビジネスKPI)へのチームKPIの関連付け
②協働の促進
・チーム間での問題の共有と優先順位付け
コスト
(生産性)
DevOpsでのメトリクスによる改善活動実現に向けての課題
16
課題:
・対象チームの増加による
メトリクス収集コストの増加
・ステークホルダーが増えるため
情報のリアルタイム性がより重要に
解決方法:
・収集から表示までの完全な自動化
- Jenkinsがメトリクスを収集
- ELKでデータを保存、表示
DevOpsによるリードタイムの改善の例
・共有ゴール:開発〜デリバリーのリードタイムの改善
・Dev/Test/Opsで協働した自動化を実施
・チーム間のタスクの受け渡しをなくし、リードタイムを99.40%短縮
川口恭伸, 荻野恒太郎, 古川貴朗: 楽天でのエンタープライズアジャイルとDevOps-Dev/Test/Ops
三位一体の自動化-,情報処理学会デジタルプラクティス, Vol.7, No.3, pp.243-251, 2016
17
18
まとめ
まとめ
19
アジャイルチーム
チームへの改善活動の提案
チームとの改善効果の合意
マネージメント層へのレポート
展開のためのコンセプト説明
DevOps
チーム間のゴールを共有
複数のチーム間の協働を促進
http://www.slideshare.net/rakutentech/2016-64858088
楽天テクノロジーカンファレンス
QAマネージャー募集中
http://global.rakuten.com/corp/careers/engineering/
リンク集
20
カテゴリ 文献 URL
継続的システムテスト “システムテスト自動化による大規模検索プラット
フォームの開発工程改善”, JaSST’Tokyo 2014
http://www.slideshare.net/kotaroogino/jasst14-tokyo
“継続的システムテストについての理解を深めるた
めの開発とバグのメトリクスの分析” SQiP 2014
http://www.slideshare.net/kotaroogino/ngauto-s-
qip2014presentation20140906
“安心なサービスの品質改善を実現する為の継続
的システムテスト”, 先進的な設計・検証技術の適用
事例報告書2015年度版
https://www.ipa.go.jp/files/000049409.pdf
“楽天の品質改善を加速する継続的システムテスト
パターン”, STAC 2016
http://www.slideshare.net/kotaroogino/2015-stac2015
DevOps “三位一体の自動化で壊せDevとOpsの壁”,
Developer’s Summit 2016
http://www.slideshare.net/rakutentech/devops-
58450617
“楽天のエンタープライズアジャイルとDevOps –
Dev/Test/Ops三位一体の自動化”, 情報処理学会デ
ジタルプラクディス Vo.7 No.3
https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&
active_action=repository_view_main_item_detail&item
_id=167783&item_no=1&page_id=13&block_id=8

【SQiP2016】楽天のアジャイル開発とメトリクス事例