Weitere ähnliche Inhalte
Ähnlich wie Jenkinsで始める継続的デリバリーと実践の道程 (20)
Jenkinsで始める継続的デリバリーと実践の道程
- 1. Copyright © 2013 NTT DATA CORPORATIONCopyright © 2013 NTT DATA Corporation
Jenkinsで始める継続的デリバリーと
実践の道程
技術開発本部
ALMソリューションセンタ
佐藤聖規
米沢弘樹
© Kevin Gill 2012, Earth - Global Elevation Model with Satellite Imagery,
http://www.flickr.com/photos/kevinmgill/73A04043550,
http://creativecommons.org/licenses/by-sa/2.0/deed.en
- 3. Copyright © 2013 NTT DATA CORPORATION
Delivery
ユーザに価値を
© Judson Dunn 2007, Present from Evan!,
http://www.flickr.com/photos/35237094180@N01/811370168/,
http://creativecommons.org/licenses/by-sa/2.0/deed.en
Copyright © 2013 NTT DATA CORPORATION
- 6. Copyright © 2013 NTT DATA CORPORATION
Feedback
© Nguyen Hung Vu 2010, Project Management: Protect Scope at any cost,
http://www.flickr.com/photos/vuhung/7243283454/,
http://creativecommons.org/licenses/by/2.0/deed.en
- 7. Copyright © 2013 NTT DATA CORPORATION
早期にリリースして
ユーザからフィードバックを
頻繁にリリースして
デリバリープロセスにフィードバックを
あらゆる変更はフィードバックをもたらす
- 8. Copyright © 2013 NTT DATA CORPORATIONCopyright © 2013 NTT DATA CORPORATION
© Kazue Asano 2008, factory at night,
http://www.flickr.com/photos/crystallineradical/3070909504/,
http://creativecommons.org/licenses/by/2.0/deed.en
自動化
Copyright © 2013 NTT DATA CORPORATION
- 9. Copyright © 2013 NTT DATA CORPORATION
デリバリーに関する全てを自動化
• ビルド
• デプロイ
• テスト
• リリース
- 10. Copyright © 2013 NTT DATA CORPORATION
インフラの構築も自動化
コードの中のインフラ
Infrastructure as Programming
- 11. Copyright © 2013 NTT DATA CORPORATIONCopyright © 2013 NTT DATA CORPORATION
© Ramon Llorensi 2007, Sagrada familia,
http://www.flickr.com/photos/slapbcn/1517583049/,
http://creativecommons.org/licenses/by/2.0/deed.en
アーキテクチャ
Copyright © 2013 NTT DATA CORPORATION
- 12. Copyright © 2013 NTT DATA CORPORATION
継続的デリバリーを実践するには
アーキテクチャも重要となる
• デリバリーロールバック
• ゼロダウンタイムリリース
• アプリケーション
• データベースマイグレーション
• カナリアリリース
• プロビジョニング・クラウド
• モニタリング
• アプリケーション
• ユーザ行動
- 13. Copyright © 2013 NTT DATA CORPORATIONCopyright © 2013 NTT DATA CORPORATION
Jenkins
Copyright © 2013 NTT DATA CORPORATION
- 14. Copyright © 2013 NTT DATA CORPORATION
出典:http://www.slideshare.net/kohsuke/jenkins-user-conference
- 15. Copyright © 2013 NTT DATA CORPORATION
About Jenkins
Javaで実装されたCIサーバ
OSSでコミュニティも活発
インストール簡単、設定もGUIで簡単
プラグインアーキテクチャ:OSSで771+公開
Java以外の言語でも利用可能
Jenkinsも継続的デリバリー
リリース520+
- 16. Copyright © 2013 NTT DATA CORPORATION
© greeblie 2009, Dictionary,
http://www.flickr.com/photos/greeblie/3338710223/,
http://creativecommons.org/licenses/by/2.0/deed.enCopyright © 2013 NTT DATA CORPORATION
CaseCase SStudytudy
- 17. Copyright © 2013 NTT DATA CORPORATION
自己紹介
名前:米沢 弘樹
Twitter ID:
@yonezawahr
Jenkins実践入門の
著者の一人です。
猫好きです。
Twitterのアイコンは、
まさかの犬です。
- 18. Copyright © 2013 NTT DATA CORPORATION
事例
プロジェクトA
18
© takako tominaga 2011, AKB48 Café & Shop,
http://www.flickr.com/photos/coldfervor/6386750563/in/photostream/,
http://creativecommons.org/licenses/by-sa/2.0/deed.en
- 20. Copyright © 2013 NTT DATA CORPORATION
超大規模案件
• 期間:2年10ヶ月
• 人数:1200人(ピーク時)
• 規模:4MStep
• 開発言語:Java
• 開発プロセス:ウォーターフォール
20
- 22. Copyright © 2013 NTT DATA CORPORATION
Jenkinsは必須だった
22
バグ修正 デプロイ
テスト
ビルド
ビルド・デプロイの自動化が必須
結合テストに入り、デプロイの頻度が増大
- 24. Copyright © 2013 NTT DATA CORPORATION
Jenkinsは指揮者
–Jenkinsで各モジュール用のジョブを作成
• 個々のモジュール単位でビルドスクリプトを準備
• ビルドスクリプトをJenkinsで実行可能にカスタマイズ
• Jenkinsは指揮者
– 役割(ビルド・デプロイ)毎、モジュール毎にジョブを分類
– 実行条件、スケジュールをJenkinsで制御
24
- 26. Copyright © 2013 NTT DATA CORPORATION
ファイル転送・デプロイで利用
26
SVN
Jenkins
テスト環境
・・・
VPNVPN
チェックイン、チェックイン、
チェックアウト
ビルド失敗通知
チェックアウト
デプロイコマンドデプロイコマンド
実行
ファイル転送
ファイル転送、ファイル転送、
デプロイ
コンパイル
ファイル転送
テスト
踏み台マシン
商用環境
開発者
(c) Erik (HASH) Hersman 2010, RHoK Nairobi, Kenya,
http://www.flickr.com/photos/whiteafrican/4670835071/,
http://creativecommons.org/licenses/by/2.0/deed.en
手動作業
自動作業
© Widjaya Ivan 2010, Web Hosting Servers,
http://www.flickr.com/photos/28288673@N07/4847678335/,
http://creativecommons.org/licenses/by-sa/2.0/deed.en
- 28. Copyright © 2013 NTT DATA CORPORATION
1日4回の定刻デプロイ
• 定刻でデプロイ実施
– そこまでで修正されたコードをテスト環境にデプロイ
– 間に合わなかったら次のデプロイへ
28
SVN
Jenkins
テスト環境
テスト環境はテスト環境は
10環境準備
1日4回定刻デプロイ1日4回定刻デプロイ
© Torkild Retvedt 2009. Server room,
http://www.flickr.com/photos/torkildr/3462607995/in/photostream/,
http://creativecommons.org/licenses/by-sa/2.0/deed.en
- 29. Copyright © 2013 NTT DATA CORPORATION
Jenkinsが与えたインパクト
• ビルド作業の効率化
– モジュールが多数存在
– モジュール結合、機能結合が多数必要
→Jenkinsでパイプラインを制御
• 大多数のマシンへのデプロイを制御
– 40台以上のマシンへのデプロイが発生
• 作業待ち時間が大幅に削減
– ビルド開始から1時間でデプロイ完了
29
- 30. Copyright © 2013 NTT DATA CORPORATION
リスクの限定化
• 段階的なデプロイ
試験的に1つの環境にデプロイ
30分間問題なければ、全環境へデプロイ
→デプロイしたアプリの不具合で、全開発者の作業が
止まるのを避けるため
30
ビルド開始 1つの環境にデプロイ 全環境にデプロイ
30分 30分
- 32. Copyright © 2013 NTT DATA CORPORATION
2つのポイント
• 繰り返しデプロイ
– 1日4回の定刻実行でデプロイ頻度向上
• 段階的なデプロイ
– 1環境で試してから全環境に反映でリスクを低減
32
- 35. Copyright © 2013 NTT DATA CORPORATION
小規模案件(というか、自担当)
• 期間:5年
• 人数:5名(ピーク時15名)
開発言語:Python等
• 内容:OSSを組み合わせてソリューション展開
– Trac
– Subversion
– Jenkins
35
- 36. Copyright © 2013 NTT DATA CORPORATION
• Jenkinsを利用した取り組み
– ビルド
パッケージ(インストーラ)の作成
– 単体テスト
単体テスト、静的コード解析、コードカバレッジ計測
– デプロイ
最新版の資材からテスト環境を構築
– 結合テスト
Seleniumによる回帰テスト
Jenkinsを利用した取り組み
36
【参考】 Jenkinsと一緒にTracプラグイン開発(第3回Jenkins勉強会)
http://www.slideshare.net/wadatka/trac-plugin-developement-with-jenkins-8106330
- 38. Copyright © 2013 NTT DATA CORPORATION
• 「安定的な」とは
– 繰り返し実施した場合、同一の結果が期待できる
– 意図した時間内で完了できる
• 悪いケース
– 回帰テストが停止していて、テストが終わらない
– 同一対象へのテストが成功したり失敗したりする
– 回帰テストの実行に時間がかかりすぎる
安定的なデプロイ、回帰テスト
38
- 40. Copyright © 2013 NTT DATA CORPORATION
Seleniumのテスト実施が不安定
• Selenium RCの処理停止
– SeleniumのJavaScript実行に時間がかかり停止
• 初期化処理の失敗
– VBスクリプトのリモート実行のため、同期化が困難
– 初期化が完了する前にテストが開始され、失敗
• バッチファイルからテストコードを実行
– 正常に終了せず、ジョブがいつまでも完了しない
40
- 41. Copyright © 2013 NTT DATA CORPORATION
Seleniumのテストの安定化
• Selenium RCのJavaScriptの停止
– Selenium RCからWebDriverへ変更
• 初期化処理の失敗
– VBスクリプトでの初期化からWMIでの初期化へ変更
• バッチファイルからのテストコードの実行
– テストコードの実行を、バッチファイルからAntに変更
41
※ WMI:Windows Management Instrumentation
祝!祝!安定化!!安定化!!祝!祝!安定化!!安定化!!
- 45. Copyright © 2013 NTT DATA CORPORATION
複数面でのデプロイ・回帰テスト
• 複数面といったら?!
45
マルチ構成のプロジェクトマルチ構成のプロジェクト
- 48. Copyright © 2013 NTT DATA CORPORATION
やってみました
48
デプロイ環境を
複数面化
複数サーバへの
テストの実施
- 49. Copyright © 2013 NTT DATA CORPORATION
マルチ構成プロジェクトの概要
49
database=SQLite
database=MySQL
(
リポジトリ
(SVN)
・
・
・Windows Server 2008
・SQLite
・
・
・Windows Server 2003
・MySQL
・
・
・Windows 7
・Firefox
- 54. Copyright © 2013 NTT DATA CORPORATION
登る山は険しく
道は半ば
© palindrome6996 2007, Mt. Fuji,
http://www.flickr.com/photos/62904109@N00/540380945/,
http://creativecommons.org/licenses/by/2.0/deed.en
© Lisa Parker 2007, First taste,
http://www.flickr.com/photos/42242728@N06/4749036985,
http://creativecommons.org/licenses/by-sa/2.0/deed.en
今、ココ今、ココ
- 55. Copyright © 2013 NTT DATA CORPORATION
現状に満足することなく
日々改善しましょう
© Goran Hoglund (Kartlasarn), 2011 Tibet Mount Everest,
http://www.flickr.com/photos/kartlasarn/6477880613,
http://creativecommons.org/licenses/by/2.0/deed.en
- 56. Copyright © 2011 NTT DATA Corporation
Copyright © 2013 NTT DATA Corporation
記載されている会社名、商品名、又はサービス名は、各社の商標又は登録商標です。