大規模開発とCIの関係、CI製品/サービス7選、選定の3つのポイント、Jenkins導入で解決した問題点などを解説する
本連載では、グリーのサービス開発において導入している継続的インテグレーション(Continuous Integration、以下、CI)と、CIツールであるJenkinsの導入について3回に分けて説明します。Jenkinsのインストールといった“手順”よりも、CI導入の“モチベーション”や“進め方のポイント”を中心に説明します。
SNSやソーシャルゲームなどを運営するグリーでは、数百名の技術者が日々さまざまな機能やサービスを開発し、リリースしています。このような規模、リリース頻度での開発を支えるには数多くの工夫や仕組みが必要です。この中でも最も大きな仕組みの1つにCIが挙げられます。
グリーでは、開発にCIを本格的に導入し始めたのは2011年からです。導入前に抱えていた問題点と、この2年間で解決したことを今回含め3回に分けて説明します。
CIとは、単体のモジュールをテストしたり品質チェックすることはもちろんのこと、関連する周辺のモジュール全体も含めてテスト、品質チェックを頻繁に実施することで早期に問題を発見しようという試みです。
例えば、Xさんの開発担当範囲であるモジュールAと、担当範囲外のモジュールBがあったとします。モジュールBはモジュールAを利用します。
ここで、XさんがモジュールAに修正を加えたとします。Xさんの担当範囲はモジュールAだけなので、モジュールAの単体テストまでは確認しますが、モジュールBは確認しません。これではモジュールAの修正によってモジュールBがうまく動作しなくなることが見逃されます。
CIは、上述の例でいうモジュールAとBの結合テストまで含めて頻繁に行うことで、このような問題の早期発見に役立ちます。
数百名の技術者が日々開発・リリースを行うような場合には、このような問題発見の遅れはリリース作業に致命的な影響を与えることになります。問題の発見は早ければ早いほど修正が容易です。
CIの仕組みを自動化し、チーム全体で利用することで開発からリリースまでのプロセスで手戻りを驚くほど削減できました。
CIを支援するツールはオープンソース製品、商用製品、クラウドサービスなど多くの選択肢があります。すべては列挙できませんが、下記に代表的なものを紹介します。
Copyright © ITmedia, Inc. All Rights Reserved.