GREEにおけるJenkinsの構成

GREEにおけるJenkins, その7

こんにちは、エンジニアの岡崎(@watermint)です。
先週8月23日に、川口さんの来日にあわせて開催された豆ナイト続々・CI超入門:Jenkinsのススメ3 CI導入の勘(感)所というイベントに参加してきました。
豆ナイト
先週の発表はJenkins User Conference 2012での発表とほぼ同じでしたが、Jenkins導入のマネージメントというパートを追加してどのようにJenkinsを導入したかを紹介してきました。

今回は、この内容をふまえてもう少しJenkins導入のマネージメントや工夫、結果的にうまくいったことについて紹介しようと思います。

導入期間と組織的な成熟度の関係

最初から戦略的に計画した訳ではなく結果論ですがGREEではJenkinsの導入を急いで行っていた訳ではなく、ボトムアップにゆっくりと行いました。最初はiOSやAndroidのネイティブアプリビルドとそのビルドをダウンロードするために利用してもらっていることが主な利用ケースでしたが、導入から1年をすぎたあたりからかなり多くのプロジェクトで導入が始まりました。
導入期間と成熟度の関係
これは、メインで利用しているJenkinsマスターノードの負荷統計です。最初の5ヶ月程度はほとんど岡崎の個人的な導入でしたが、徐々に利用が増え、導入からおおよそ1年半が経つ今ではかなりのプロジェクトで日々利用しています。
結果的にこのようなスピードで導入したことによって、日々発生する細かな問題も徐々に全員で認識しながら解決し、全員が少しずつ慣れたりスキルアップすることで、より高度な利用ができるようになりました。
無理に導入を焦らずに、少しずつ組織のペースをはかりながら利用シーンを増やすことによって組織における成熟度は確実に高めることが出来ると思います。

社内勉強会

GREEにはパワーランチというお弁当をたべながらの社内勉強会があります。Jenkinsについては2回ほど勉強会を行って新たな社内Jenkinsユーザを獲得してきました。
勉強会は利用シーンをいくつかピックアップして紹介することが中心です。細かなテクニックなどを勉強会で紹介しても良いのですが、テクニックはなるべく社内Wikiなどオンラインに蓄積するようにしています。

GREEにおけるJenkinsの構成

GREEで導入しているJenkinsは下図のようにひとつのマスターノードに対して、たくさんのスレーブノードがぶら下がる格好の構成となっています。マスターノードはやや非力なハードウエア構成で、その非力さを補うように多くのスレーブノードをプロジェクトごとに追加するような格好になっています。
GREEにおけるJenkinsの構成
マスターノードが強力ではなかったために、マスターノードのディスク容量不足やCPU負荷の問題等様々な問題が早期に発覚し、負荷をスレーブに分散することで解消してきています。
スレーブノードは、PHPのプロジェクトをテストするためのLinuxサーバもあれば、iOS開発者が手元で使っているMacBookのようなノートPCの場合もあります。

これは結果的にうまくいったかなと思っているところですが、Jenkinsを積極的に使うプロジェクトは手元のPCやサーバをJenkinsスレーブとして設定していくことが通例となりました。これによって、Jenkinsマスターノードを管理している人以外にもJenkinsを管理するための経験がたまりつつあり、より組織的な運用ができるようになってきました。

では次回もおたのしみに。