継続的インテグレーションをクラウド化する
Hudson作成者の川口さんのBlogを読みながら、継続的インテグレーションはクラウド化と相性が良いという指摘に関するメモ。
【元ネタ】
Hudson EC2 プラグイン - 川口耕介の日記
Hudson Selenium PluginでHudsonクラスタをSelenium Gridに - 川口耕介の日記
HudsonクラスタをHadoopクラスタに - 川口耕介の日記
【既存の問題】
XPを代表とするアジャイル開発におけるコード共同所有やテスト駆動開発などのプラクティスで、いわゆる下流工程の生産性を大幅Upできる。
しかしながら、自動テストや回帰テストを行う継続的インテグレーションは、システムが大規模化するにつれてビルド時間が膨大になるので、生産性が低くなっている。
そのため、「アート・オブ・アジャイル デベロップメント ―組織を成功に導くエクストリームプログラミング」においても、ビルドに含めるテストケースに優先順位をつけたり、夜間ビルドと即ビルドを切り替える等の方策を提示している。
でも、本来は単体テストだけでなく受入テストのテストケースも全て、JUnitで記述して、継続的インテグレーションによるビルド作業の一部としてしまいたい。
そうしなければ、テスト自動化の一番の利点である回帰テストの効果が生きてこない。
【一つの解決策】
一つの解決策は、テスト環境を仮想化し、継続的インテグレーションをクラウド化することだ。
例えば、OSやJDKなどのバージョンが異なるサーバー環境はVMWareで仮想化して、複数の環境を用意できるようにする。
更に、クライアントのOSやブラウザの異なるクライアント環境も仮想化しておく。
そして、Hudsonによる自動ビルドは、複数のビルドサーバー上で並列処理できるようにする。
この利点は、格安のハードウェアを並列に処理させることで、マシンパワーで持って大量のJUnitをこなすのができること。
ビルド作業の並列処理だから、見かけ上の時間は大幅に短縮されるはず。
想像であるが、一つの業務系Webシステムをリリースできる品質に持っていくために、単体~受入テストの全てのテストケースを数えたら、おそらく最低1万件近くは必要だろうと思う。
それだけの桁のテストケースを回帰テストも含めてデイリービルドするには、仮想化+クラウド化は必須の技術だ。
【可能性】
最近のHudsonの動向を見ると、もはやCIツールではなく、汎用クラウド化ツールと呼んだ方がいいかもしれない。
例えば、
Hudson Hadoop pluginでクラスタ処理する。
Hudson PXE pluginでネットワーク接続した複数のOSを制御する。
Hudson EC2 pluginでAmazonEC2のクラウド環境を使う。
Hudson Selenium PluginでHudsonクラスタをSelenium Gridにする。
いずれも、格安のサーバー、仮想化されたビルド環境をバッチ処理のために使うという発想。
しかし、これだけクラウド化の利点があるにも関わらず普及していないのは、クラウド化する設定作業が大変だからだ。
でも、Hudsonはクラウド化の設定作業を楽にする方向で進化しているようだ。
Hudsonを十分に使いこなせれば、Hudsonによってビルド管理やリリース管理を大幅に効率化できるだろう。
XPが出現して10年近く経ってようやく、プロジェクト管理や構成管理、リリース管理などがIT化できる状況が整ってきた。
この技術革新の流れを追いかけていきたい。
| 固定リンク
「プログラミング」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのモジュールシステムは複雑性をより増している(2022.09.10)
- Javaはなぜ関数型言語になろうとしているのか(2022.09.02)
- Javaのラムダ式の考え方(2022.08.10)
- Javaはオブジェクト指向言語ではなく関数型言語だった~「[増補改訂]関数プログラミング実践入門」はお勧めの本だ(2022.08.06)
「プロジェクトマネジメント」カテゴリの記事
- PMPとCSM取得者数推移(日本 vs 中国)から読み取れる指針は何か?(2026.02.23)
- 製造業のDXを推進する部門をITコーポレート部門に割り当てるとなぜ失敗するのか(2026.02.04)
- SAFeはScrumと全く異なるアジャイル開発プロセスだ(2026.02.01)
- プ譜でプロジェクトの目的を管理する(2026.01.31)
- Redmine AI HelperプラグインはRedmineをAI駆動プロジェクト管理に変える可能性を秘めている #Redmine(2025.12.31)
「ソフトウェア」カテゴリの記事
- Redmine AI HelperプラグインはRedmineをAI駆動プロジェクト管理に変える可能性を秘めている #Redmine(2025.12.31)
- 「RedmineのUbuntu+Docker構築への移行」の感想 #redmineT(2024.11.24)
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのenum型はシングルトンクラスみたいだ(2022.06.20)
- テスラが従来の自動車メーカーと異なるところは工場までソフトウェア化すること(2022.02.09)
「Redmine」カテゴリの記事
- Redmine AI HelperプラグインはRedmineをAI駆動プロジェクト管理に変える可能性を秘めている #Redmine(2025.12.31)
- 第29回東京Redmine勉強会の感想~今話題のテーマはJTC運用とAIによるプロマネ作業支援 #redminet(2025.11.09)
- 第22回 Redmine大阪の感想 #RedmineOsaka(2025.09.21)
- RedmineJapan vol.4の感想part1~Redmine AI HeplerプラグインはRedmineのナレッジ活用を強化してくれる #RedmineJapan(2025.07.31)
- Jiraの機能はTracに似ている気がする #redmine(2025.06.01)
「構成管理・Git」カテゴリの記事
- PLMツールとは部品表の構成管理ツールでありGitHubである(2026.03.08)
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- パッケージ設計の原則の意義は変化しているのか(2023.09.30)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)


コメント