Your SlideShare is downloading. ×
0
Copyright © 2013 NTT DATA CORPORATIONCopyright © 2013 NTT DATA Corporation
Jenkinsで始める継続的デリバリーと
実践の道程
技術開発本部
ALMソリューションセンタ...
佐藤 聖規
Masanori Satoh
@lino_s
Copyright © 2013 NTT DATA CORPORATION
Copyright © 2013 NTT DATA CORPORATION
Delivery
ユーザに価値を
© Judson Dunn 2007, Present from Evan!,
http://www.flickr.com/photo...
Copyright © 2013 NTT DATA CORPORATION
価値
時間
1回だけのデリバリー
リリース
Copyright © 2013 NTT DATA CORPORATION
継続的デリバリー≠継続的デプロイ
価値
時間リリース リリース リリース
Copyright © 2013 NTT DATA CORPORATION
Feedback
© Nguyen Hung Vu 2010, Project Management: Protect Scope at any cost,
http:...
Copyright © 2013 NTT DATA CORPORATION
早期にリリースして
ユーザからフィードバックを
頻繁にリリースして
デリバリープロセスにフィードバックを
あらゆる変更はフィードバックをもたらす
Copyright © 2013 NTT DATA CORPORATIONCopyright © 2013 NTT DATA CORPORATION
© Kazue Asano 2008, factory at night,
http://ww...
Copyright © 2013 NTT DATA CORPORATION
デリバリーに関する全てを自動化
• ビルド
• デプロイ
• テスト
• リリース
Copyright © 2013 NTT DATA CORPORATION
インフラの構築も自動化
コードの中のインフラ
Infrastructure as Programming
Copyright © 2013 NTT DATA CORPORATIONCopyright © 2013 NTT DATA CORPORATION
© Ramon Llorensi 2007, Sagrada familia,
http://...
Copyright © 2013 NTT DATA CORPORATION
継続的デリバリーを実践するには
アーキテクチャも重要となる
• デリバリーロールバック
• ゼロダウンタイムリリース
• アプリケーション
• データベースマイグレーシ...
Copyright © 2013 NTT DATA CORPORATIONCopyright © 2013 NTT DATA CORPORATION
Jenkins
Copyright © 2013 NTT DATA CORPORATION
Copyright © 2013 NTT DATA CORPORATION
出典:http://www.slideshare.net/kohsuke/jenkins-user-conference
Copyright © 2013 NTT DATA CORPORATION
About Jenkins
 Javaで実装されたCIサーバ
 OSSでコミュニティも活発
 インストール簡単、設定もGUIで簡単
 プラグインアーキテクチャ:...
Copyright © 2013 NTT DATA CORPORATION
© greeblie 2009, Dictionary,
http://www.flickr.com/photos/greeblie/3338710223/,
http...
Copyright © 2013 NTT DATA CORPORATION
自己紹介
名前:米沢 弘樹
Twitter ID:
@yonezawahr
Jenkins実践入門の
著者の一人です。
猫好きです。
Twitterのアイコン...
Copyright © 2013 NTT DATA CORPORATION
事例
プロジェクトA
18
© takako tominaga 2011, AKB48 Café & Shop,
http://www.flickr.com/photo...
Copyright © 2013 NTT DATA CORPORATION
どんなプロジェクト?
19
Copyright © 2013 NTT DATA CORPORATION
超大規模案件
• 期間:2年10ヶ月
• 人数:1200人(ピーク時)
• 規模:4MStep
• 開発言語:Java
• 開発プロセス:ウォーターフォール
20
Copyright © 2013 NTT DATA CORPORATION
どんな経緯?
21
Copyright © 2013 NTT DATA CORPORATION
Jenkinsは必須だった
22
バグ修正 デプロイ
テスト
ビルド
ビルド・デプロイの自動化が必須
結合テストに入り、デプロイの頻度が増大
Copyright © 2013 NTT DATA CORPORATION
スムーズに入ったの?
23
Copyright © 2013 NTT DATA CORPORATION
Jenkinsは指揮者
–Jenkinsで各モジュール用のジョブを作成
• 個々のモジュール単位でビルドスクリプトを準備
• ビルドスクリプトをJenkinsで実行可能...
Copyright © 2013 NTT DATA CORPORATION
どんな使い方をしたの?
25
Copyright © 2013 NTT DATA CORPORATION
ファイル転送・デプロイで利用
26
SVN
Jenkins
テスト環境
・・・
VPNVPN
チェックイン、チェックイン、
チェックアウト
ビルド失敗通知
チェックアウ...
Copyright © 2013 NTT DATA CORPORATION
どのような運用をしたのか?
27
Copyright © 2013 NTT DATA CORPORATION
1日4回の定刻デプロイ
• 定刻でデプロイ実施
– そこまでで修正されたコードをテスト環境にデプロイ
– 間に合わなかったら次のデプロイへ
28
SVN
Jenkins...
Copyright © 2013 NTT DATA CORPORATION
Jenkinsが与えたインパクト
• ビルド作業の効率化
– モジュールが多数存在
– モジュール結合、機能結合が多数必要
→Jenkinsでパイプラインを制御
• 大...
Copyright © 2013 NTT DATA CORPORATION
リスクの限定化
• 段階的なデプロイ
試験的に1つの環境にデプロイ
30分間問題なければ、全環境へデプロイ
→デプロイしたアプリの不具合で、全開発者の作業が
止まる...
Copyright © 2013 NTT DATA CORPORATION
うまく利用できたポイントは?
31
Copyright © 2013 NTT DATA CORPORATION
2つのポイント
• 繰り返しデプロイ
– 1日4回の定刻実行でデプロイ頻度向上
• 段階的なデプロイ
– 1環境で試してから全環境に反映でリスクを低減
32
Copyright © 2013 NTT DATA CORPORATION
事例
プロジェクトZ
33
Copyright © 2013 NTT DATA CORPORATION
どんなプロジェクト?
34
Copyright © 2013 NTT DATA CORPORATION
小規模案件(というか、自担当)
• 期間:5年
• 人数:5名(ピーク時15名)
開発言語:Python等
• 内容:OSSを組み合わせてソリューション展開
– Tra...
Copyright © 2013 NTT DATA CORPORATION
• Jenkinsを利用した取り組み
– ビルド
パッケージ(インストーラ)の作成
– 単体テスト
単体テスト、静的コード解析、コードカバレッジ計測
– デプロイ
最新...
Copyright © 2013 NTT DATA CORPORATION
大事なことは…
37
Copyright © 2013 NTT DATA CORPORATION
• 「安定的な」とは
– 繰り返し実施した場合、同一の結果が期待できる
– 意図した時間内で完了できる
• 悪いケース
– 回帰テストが停止していて、テストが終わらない...
Copyright © 2013 NTT DATA CORPORATION
安定化に向けて
39
Copyright © 2013 NTT DATA CORPORATION
Seleniumのテスト実施が不安定
• Selenium RCの処理停止
– SeleniumのJavaScript実行に時間がかかり停止
• 初期化処理の失敗
– ...
Copyright © 2013 NTT DATA CORPORATION
Seleniumのテストの安定化
• Selenium RCのJavaScriptの停止
– Selenium RCからWebDriverへ変更
• 初期化処理の失敗
...
Copyright © 2013 NTT DATA CORPORATION
42
デプロイメント
ジョブ
クライアント
初期化ジョブ テスト実行ジョブ
Copyright © 2013 NTT DATA CORPORATION
43
Copyright © 2013 NTT DATA CORPORATION
安定化の次は?
44
Copyright © 2013 NTT DATA CORPORATION
複数面でのデプロイ・回帰テスト
• 複数面といったら?!
45
マルチ構成のプロジェクトマルチ構成のプロジェクト
Copyright © 2013 NTT DATA CORPORATION
いつやるの?
46
Copyright © 2013 NTT DATA CORPORATION
いつやるの?
47
今でしょ!!今でしょ!!今でしょ!!今でしょ!!
Copyright © 2013 NTT DATA CORPORATION
やってみました
48
デプロイ環境を
複数面化
複数サーバへの
テストの実施
Copyright © 2013 NTT DATA CORPORATION
マルチ構成プロジェクトの概要
49
database=SQLite
database=MySQL
(
リポジトリ
(SVN)
・
・
・Windows Server 2...
Copyright © 2013 NTT DATA CORPORATION
ジョブ設定 - ServerSetup
50
Copyright © 2013 NTT DATA CORPORATION
ジョブ設定 - ServerSetup
51
Copyright © 2013 NTT DATA CORPORATION
ジョブ設定 - SQLiteAndMySQL
52
Copyright © 2013 NTT DATA CORPORATION
ジョブ設定 - SQLiteAndMySQL
53
Copyright © 2013 NTT DATA CORPORATION
登る山は険しく
道は半ば
© palindrome6996 2007, Mt. Fuji,
http://www.flickr.com/photos/62904109@...
Copyright © 2013 NTT DATA CORPORATION
現状に満足することなく
日々改善しましょう
© Goran Hoglund (Kartlasarn), 2011 Tibet Mount Everest,
http:/...
Copyright © 2011 NTT DATA Corporation
Copyright © 2013 NTT DATA Corporation
記載されている会社名、商品名、又はサービス名は、各社の商標又は登録商標です。
Upcoming SlideShare
Loading in...5
×

Jenkinsで始める継続的デリバリーと実践の道程

8,832

Published on

July Tech Festa 2013 http://www.techfesta.jp/ の講演資料です。

http://www.techfesta.jp/p/program-2.html#A10

ビジネスの変化するスピードが早い昨今、ビジネスのニーズにマッチしたサービスをより迅速に提供するために、アジャイル開発などと共に継続的デリバリーが注目を集めています。 本セッションでは継続的デリバリーにより届けることのできる価値、及びその技術要素について解説します。 また、継続的デリバリーを実践する上で、Jenkinsは中心となり、エンジンとなります。 Jenkinsで継続的デリバリーを実践するときのポイントを事例ベースで紹介します。 事例はNTTデータならではの超大規模プロジェクトでのJenkinsによる頻繁なデプロイを中心とした事例と、小規模ながら自動テスト、マルチ構成プロジェクトを実践した事例の2件を併せて紹介します。

Published in: Technology

Transcript of "Jenkinsで始める継続的デリバリーと実践の道程"

  1. 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
  2. 2. 佐藤 聖規 Masanori Satoh @lino_s Copyright © 2013 NTT DATA CORPORATION
  3. 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
  4. 4. Copyright © 2013 NTT DATA CORPORATION 価値 時間 1回だけのデリバリー リリース
  5. 5. Copyright © 2013 NTT DATA CORPORATION 継続的デリバリー≠継続的デプロイ 価値 時間リリース リリース リリース
  6. 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. 7. Copyright © 2013 NTT DATA CORPORATION 早期にリリースして ユーザからフィードバックを 頻繁にリリースして デリバリープロセスにフィードバックを あらゆる変更はフィードバックをもたらす
  8. 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. 9. Copyright © 2013 NTT DATA CORPORATION デリバリーに関する全てを自動化 • ビルド • デプロイ • テスト • リリース
  10. 10. Copyright © 2013 NTT DATA CORPORATION インフラの構築も自動化 コードの中のインフラ Infrastructure as Programming
  11. 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. 12. Copyright © 2013 NTT DATA CORPORATION 継続的デリバリーを実践するには アーキテクチャも重要となる • デリバリーロールバック • ゼロダウンタイムリリース • アプリケーション • データベースマイグレーション • カナリアリリース • プロビジョニング・クラウド • モニタリング • アプリケーション • ユーザ行動
  13. 13. Copyright © 2013 NTT DATA CORPORATIONCopyright © 2013 NTT DATA CORPORATION Jenkins Copyright © 2013 NTT DATA CORPORATION
  14. 14. Copyright © 2013 NTT DATA CORPORATION 出典:http://www.slideshare.net/kohsuke/jenkins-user-conference
  15. 15. Copyright © 2013 NTT DATA CORPORATION About Jenkins  Javaで実装されたCIサーバ  OSSでコミュニティも活発  インストール簡単、設定もGUIで簡単  プラグインアーキテクチャ:OSSで771+公開  Java以外の言語でも利用可能 Jenkinsも継続的デリバリー リリース520+
  16. 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. 17. Copyright © 2013 NTT DATA CORPORATION 自己紹介 名前:米沢 弘樹 Twitter ID: @yonezawahr Jenkins実践入門の 著者の一人です。 猫好きです。 Twitterのアイコンは、 まさかの犬です。
  18. 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
  19. 19. Copyright © 2013 NTT DATA CORPORATION どんなプロジェクト? 19
  20. 20. Copyright © 2013 NTT DATA CORPORATION 超大規模案件 • 期間:2年10ヶ月 • 人数:1200人(ピーク時) • 規模:4MStep • 開発言語:Java • 開発プロセス:ウォーターフォール 20
  21. 21. Copyright © 2013 NTT DATA CORPORATION どんな経緯? 21
  22. 22. Copyright © 2013 NTT DATA CORPORATION Jenkinsは必須だった 22 バグ修正 デプロイ テスト ビルド ビルド・デプロイの自動化が必須 結合テストに入り、デプロイの頻度が増大
  23. 23. Copyright © 2013 NTT DATA CORPORATION スムーズに入ったの? 23
  24. 24. Copyright © 2013 NTT DATA CORPORATION Jenkinsは指揮者 –Jenkinsで各モジュール用のジョブを作成 • 個々のモジュール単位でビルドスクリプトを準備 • ビルドスクリプトをJenkinsで実行可能にカスタマイズ • Jenkinsは指揮者 – 役割(ビルド・デプロイ)毎、モジュール毎にジョブを分類 – 実行条件、スケジュールをJenkinsで制御 24
  25. 25. Copyright © 2013 NTT DATA CORPORATION どんな使い方をしたの? 25
  26. 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
  27. 27. Copyright © 2013 NTT DATA CORPORATION どのような運用をしたのか? 27
  28. 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. 29. Copyright © 2013 NTT DATA CORPORATION Jenkinsが与えたインパクト • ビルド作業の効率化 – モジュールが多数存在 – モジュール結合、機能結合が多数必要 →Jenkinsでパイプラインを制御 • 大多数のマシンへのデプロイを制御 – 40台以上のマシンへのデプロイが発生 • 作業待ち時間が大幅に削減 – ビルド開始から1時間でデプロイ完了 29
  30. 30. Copyright © 2013 NTT DATA CORPORATION リスクの限定化 • 段階的なデプロイ 試験的に1つの環境にデプロイ 30分間問題なければ、全環境へデプロイ →デプロイしたアプリの不具合で、全開発者の作業が 止まるのを避けるため 30 ビルド開始 1つの環境にデプロイ 全環境にデプロイ 30分 30分
  31. 31. Copyright © 2013 NTT DATA CORPORATION うまく利用できたポイントは? 31
  32. 32. Copyright © 2013 NTT DATA CORPORATION 2つのポイント • 繰り返しデプロイ – 1日4回の定刻実行でデプロイ頻度向上 • 段階的なデプロイ – 1環境で試してから全環境に反映でリスクを低減 32
  33. 33. Copyright © 2013 NTT DATA CORPORATION 事例 プロジェクトZ 33
  34. 34. Copyright © 2013 NTT DATA CORPORATION どんなプロジェクト? 34
  35. 35. Copyright © 2013 NTT DATA CORPORATION 小規模案件(というか、自担当) • 期間:5年 • 人数:5名(ピーク時15名) 開発言語:Python等 • 内容:OSSを組み合わせてソリューション展開 – Trac – Subversion – Jenkins 35
  36. 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
  37. 37. Copyright © 2013 NTT DATA CORPORATION 大事なことは… 37
  38. 38. Copyright © 2013 NTT DATA CORPORATION • 「安定的な」とは – 繰り返し実施した場合、同一の結果が期待できる – 意図した時間内で完了できる • 悪いケース – 回帰テストが停止していて、テストが終わらない – 同一対象へのテストが成功したり失敗したりする – 回帰テストの実行に時間がかかりすぎる 安定的なデプロイ、回帰テスト 38
  39. 39. Copyright © 2013 NTT DATA CORPORATION 安定化に向けて 39
  40. 40. Copyright © 2013 NTT DATA CORPORATION Seleniumのテスト実施が不安定 • Selenium RCの処理停止 – SeleniumのJavaScript実行に時間がかかり停止 • 初期化処理の失敗 – VBスクリプトのリモート実行のため、同期化が困難 – 初期化が完了する前にテストが開始され、失敗 • バッチファイルからテストコードを実行 – 正常に終了せず、ジョブがいつまでも完了しない 40
  41. 41. Copyright © 2013 NTT DATA CORPORATION Seleniumのテストの安定化 • Selenium RCのJavaScriptの停止 – Selenium RCからWebDriverへ変更 • 初期化処理の失敗 – VBスクリプトでの初期化からWMIでの初期化へ変更 • バッチファイルからのテストコードの実行 – テストコードの実行を、バッチファイルからAntに変更 41 ※ WMI:Windows Management Instrumentation 祝!祝!安定化!!安定化!!祝!祝!安定化!!安定化!!
  42. 42. Copyright © 2013 NTT DATA CORPORATION 42 デプロイメント ジョブ クライアント 初期化ジョブ テスト実行ジョブ
  43. 43. Copyright © 2013 NTT DATA CORPORATION 43
  44. 44. Copyright © 2013 NTT DATA CORPORATION 安定化の次は? 44
  45. 45. Copyright © 2013 NTT DATA CORPORATION 複数面でのデプロイ・回帰テスト • 複数面といったら?! 45 マルチ構成のプロジェクトマルチ構成のプロジェクト
  46. 46. Copyright © 2013 NTT DATA CORPORATION いつやるの? 46
  47. 47. Copyright © 2013 NTT DATA CORPORATION いつやるの? 47 今でしょ!!今でしょ!!今でしょ!!今でしょ!!
  48. 48. Copyright © 2013 NTT DATA CORPORATION やってみました 48 デプロイ環境を 複数面化 複数サーバへの テストの実施
  49. 49. Copyright © 2013 NTT DATA CORPORATION マルチ構成プロジェクトの概要 49 database=SQLite database=MySQL ( リポジトリ (SVN) ・ ・ ・Windows Server 2008 ・SQLite ・ ・ ・Windows Server 2003 ・MySQL ・ ・ ・Windows 7 ・Firefox
  50. 50. Copyright © 2013 NTT DATA CORPORATION ジョブ設定 - ServerSetup 50
  51. 51. Copyright © 2013 NTT DATA CORPORATION ジョブ設定 - ServerSetup 51
  52. 52. Copyright © 2013 NTT DATA CORPORATION ジョブ設定 - SQLiteAndMySQL 52
  53. 53. Copyright © 2013 NTT DATA CORPORATION ジョブ設定 - SQLiteAndMySQL 53
  54. 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. 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. 56. Copyright © 2011 NTT DATA Corporation Copyright © 2013 NTT DATA Corporation 記載されている会社名、商品名、又はサービス名は、各社の商標又は登録商標です。
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×