パイプラインベースのCI/CDツール、Concourseとは?
モダンなソフトウェア開発においては、ウォーターフォールモデルではもう限界だと叫ばれて久しい。その理由として、「素早くソフトウェアをリリースできない」「変化に対応できない」などが挙げられる。そこで素早く開発して細かくリリースするアジャイル開発がもてはやされている。また開発と運用をひとつながりのプロセスとして素早く開発と実装を回すDevOpsも、NetflixやAmazonなどで実際に利用されていることは業界では常識だ。しかしソフトウェアの開発プロセスをもう少し詳しく見るとコーディングからビルド、テストなどのプロセスをいかに自動化するか? の部分に大きな進展があることに気づく。いわゆる継続的インテグレーション(CI)、継続的デリバリー(CD)だ。
CI/CDは、素早くソフトウェアを開発してリリースするプロセスに大きな効果を挙げている。この領域ではCloudBeesの川口耕介氏が開発したJenkinsが2004年に登場し、プログラマーがコードを変更してからのビルド、テストの実行といった一連の流れをGUIを活用して自動化をもたらしたことが大きな実績と言っていいだろう。Jenkinsのサイトにも2014年現在で最も利用されているCIツールである、というリサーチが紹介されている。しかしサーバーベースのJenkinsは、サーバーの負荷が高い、プラグインで拡張を行うためプラグインの管理が煩雑、構築と運用にJenkinsの専門知識が必要、GUIによる設定で再利用が困難、などの問題点が多いことも事実だ。専門知識が必要ということでいわゆる「Jenkinsおじさん問題」が発生する。そこでよりシンプルに構成が可能で、ビルド~テスト~リリースまでのプロセスが見渡せるパイプラインベースのCIツールが登場してきた。その一例が今回取り上げるConcourseだ。
Concourseは、Cloud Foundryやアジャイル開発のコンサルティングなどでソフトウェア開発をリードするPivotalのエンジニアが、Go言語で開発したパイプラインベースのCI/CDツールだ。実際に日本国内では、ヤフーや楽天などで導入が進んでいる。2014年にPivotalのエンジニアが開発し、オープンソースソフトウェアとして公開されたConcourseは1.0.0がリリースされたのが2016年の3月、ということで非常に若いソフトウェアと言っていい。だがアジャイル開発を啓蒙するPivotalのエンジニアが必要に迫られて開発したとすれば、その背景を理解することは今のCI/CDで求められている要件を把握するために必要であろう。
今回はPivotalの日本法人、Pivotalジャパン株式会社のエバンジェリスト、市村友寛氏とGwen Etourneau氏にインタビューを行った。
まずConcourseの特徴を教えてください。
Etourneau:もともとPivotalがCloud Foundryを開発する際に必要としていたCI/CDツールを探していて、JenkinsもTravisもGoCDも試してみた結果、どうしても満足できなくて、それなら自分たちで作ろうということでゼロから作ったツールです。Concourseはパイプラインでプロセスを構成できるだけではなく、それを可視化、ビジュアライゼーションできるところに大きな特徴があります。
Pivotalのサンフランシスコオフィスにいけば、その中で開発されているパイプラインが大きなモニターでいつも表示されていますよ。これでなにがどこまで進んでいるのか、ひと目でわかります。もうひとつの特徴は全てがコンテナベースで実行されていて、毎回環境を構築しては破棄する、ということでそれぞれのタスクが独立して分離されていることです。コンテナなので、どこで実行されても同じ結果になるわけです。それによってスノーフレーク化されたサーバーというものをなくすことができます。
市村:スノーフレークについては、ちょっとわかりにくいと思うので説明しますね。雪の結晶をよく観察すると、みな同じ形をしているように見えるのに少しずつ形が違うんですね。それと同様にアプリケーションをビルドするサーバーが少しずつ違う、つまりバージョンが違ったり、パッチが違ったり、プラグインがなかったり…… そういうことがソフトウェアのビルドプロセスにおいて発生してしまうと、最終的にトラブルの原因になってしまうわけです。Concourseはそれをなくそうということを目的としています。Concourseは、一つの設定ファイルでどこでも実行できるというシンプルさを追求しています。それと、プロセスがどこでどうなっているのかを可視化するという部分が大事ですね。
これを見ると、どのプロセスで何が滞っているのかがひと目でわかりますよね。
市村:それはよく言われます。同じソースでも環境、例えばiOS用なのかAndroid用なのかによってテストやビルドを変えないといけない場合はありますよね。その場合でも、どの環境のビルドが止まっているのかが誰がみてもわかるので、管理職には評価されています。
CI/CDの分野で現在Jenkinsを使っている人たちが、Concourseのほうが良いと思うようになるには何が必要なんでしょう?
市村:Jenkinsはすでに多くのプログラマーに使われていますが、それはやはり早く出てきたということが大きいと思います。そういう人たちがConcourseのパイプラインベースの良さを感じてもらうには、ソフトウェア開発が一つのチームではなく「複数のチームに分割されて各チームが今どうなっているのかを可視化したい」という場面で使ってもらうことだと思います。
先ほどのスマートフォンのプラットフォーム別もそうですが、チームが増えて一つのコードベースを共有するようになると、どのチームが何をしているのかが見えないと全体の進捗がわからないし、チームを管理する人も誰のところでプロセスが止まっているのか、把握が難しくなります。しかしConcourseのダッシュボードを見れば、すぐに「ここのビルドで止まっている」といったことがわかるのです。
そうすると毎週の進捗会議でExcelシートに書いて…… といったことは必要なくなるわけですね。
市村:そうです。それにチームがバラバラな場所にわかれていても、ymlファイルを渡せば同じパイプラインをすぐに実行できるわけです。
Etourneau:Jenkinsからの移行の例ということでは、ChatworksがこれまでJenkinsを使っていたんですが、今は全てConcourseに移行しています。JenkinsからConcourseに移行した人たちは、誰も元に戻っていないと言いますね(笑)。Jenkinsの2.0ではパイプラインをサポートしていますが、それを使うにはGroovyという新しい言語を覚えなくてはいけません。
そうするとConcourseは構成がシンプルなこと、可視化ができること、どこでもすぐにパイプライン、つまり継続的インテグレーションを実行できることが特徴なんですね。
市村:それ以外にマルチテナント、つまり複数の権限を設定してのアクセスコントロールもできるようになりました。これもエンタープライズ向けには大きな意味があると思います。
Concourseは何人で開発しているんですか?
Etourneau:いまは3ペア、つまり6人ですね。
市村:プロダクトマネージャーのAlexに尋ねてみると、開発者はそれほど多くは必要ないと言っているので、6名で大丈夫です。
Cloud Foundryの開発がペアプログラミングで行われているのは有名だと思いますが、Concourseも同じように6名がペアを組んで開発をしているということですか?
市村:そうですね。その辺はCloud Foundryと変わりません。
実際にConcourseを使っているユーザーはどれくらいいるんですか?
Etourneau:例えばHomeDepotはConcourseユーザーで、数百人が使っていると思いますが、プログラマーはConcourseを使っているという感覚が少ないんじゃないですかね。というのも、使い始めたらConcourseそのものを意識する必要がないからです。プログラマーがCI/CDに気を遣うというのはナンセンスで、もっとコーディングに時間を使うべきだと思います。
実際にConcourseを使うとCI/CDにそれほど苦労しなくなると。
市村:このスライドにあるように企業のプログラマーは仕様を作ったり、コーディングをすることにこそ時間と労力を使うべきで、その後のテストとかビルドとかリリースの部分に苦労するべきじゃないんです。いわゆる「Jenkinsおじさん」に頼らないといけないのは問題です。たとえば海外で開発を行う場合も、ymlファイルをGitHubで共有すればいつでもパイプラインを実行できます。それぐらい簡単に実行できるべきだと思います。
企業の情報システム部門のエンジニアがConcourseを学ぼうとしたら何があるでしょう?
市村:今だとConcourseのサイトには説明やダウンロードも可能ですが、まだ日本語化はされていないのでそれはこれからですね。
Concourseの将来的なプランを教えてください。
市村:将来的にはパイプラインの先に、仮想マシンのインストールや立ち上げ、ベアメタルのマシンのPXEブートといったように、単にアプリケーションのデプロイを行うだけではなくてシステム全体のプロセスを自動化することも想定しています。Concourseから外部にアクセスするリソースを作れば、例えばOpenStackのAPIをConcourseから使って仮想マシンを作り、その上にアプリケーションを入れて実行する、といったことも可能です。
あまりにシンプルで苦労しなさそうなところが逆に話題になりにくいという印象のConcourseだが、都内では定期的にMeetupが行われているし、Cloud Foundryのイベントなどでも紹介されているので、これから導入が増えていくだろう。「Jenkinsおじさん問題」で苦労している開発部隊は、検討してみる価値はある。
ちなみに最後の写真は、このインタビューが行われたPivotalジャパンの会議室に置いててあるPost-Itの山だ。これを壁に貼り付けながら仕様の検討、優先順位の決定などを行うという。「Post-Itに書けない仕様はダメな証拠」というように、ソフトウェアの機能を細かな単位に落とし込んで開発を素早く回すアジャイル開発の本質の一端を見た気がする。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- オープンソースのファイル同期・共有ソフトウェア「Nextcloud 12」リリース
- オープンソースのファイル同期・共有ソフトウェア「Nextcloud 11」リリース
- オープンソースのファイル同期・共有ソフトウェア「Nextcloud 11」リリース
- オープンソースのファイル同期・共有ソフトウェア「Nextcloud 14」リリース
- オープンソースのファイル同期・共有ソフトウェア「Nextcloud 14」リリース
- オープンソースのファイル同期・共有ソフトウェア「Nextcloud 15」リリース
- TISが「AWS監視テンプレート」の拡張開発サービスと保守サポートサービスを提供開始、ほか
- ニューテック、リモートワーク用オンラインストレージ「Nextcloud Ready」を販売開始
- オープンソースの3Dコンテンツ作成ツール「Blender 2.92」リリース
- ストレージ戦略総まとめーEnterprise Storage Nowレポート