CircleCI の Performance プランで 毎日1時間以上のビルド待ち時間を削減
「何でもできる」が負担に
グループウェアとして国内市場 No.1 のシェアを誇る「サイボウズ Office」や「Garoon」、 開発知識がなくても様々な業務に合わせたシステムを作成可能な「kintone」などのサ ービスを開発、 販売、 運用するサイボウズ株式会社。オンプレミスにもクラウドにも開発 基盤をもつ同社では、クラウド版の CircleCI Cloud とオンプレミス版の CircleCI Server の両方を活用している。
CircleCI の導入以前は大半のチームがオープンソースの CIツールである Jenkins を利用していた。 当初 はひとつの Jenkins サーバーを複数のチームで共有していたが、 何らかの理由でサーバーが落ちてしま うと、すべてのチームの CIが止まってしまう。そこでチームごとにサーバーを運用することになったが「10 チームほどがそれぞれに Jenkins サーバーを立て、それぞれのチームがビルドマシンのエージェントを 追加で立てる必要があったので最終的には 30台ほどの VMを管理していました。」(宮田氏)
プラグインのインストールによって豊富な機能を利用できる Jenkins だが、 管理に苦労があったようだ。 「Jenkins は機能が豊富で何でもできるのですが、 何でもできすぎて、 気づいたら知らないプラグインが 入っていて、 微妙に挙動が変わってビルドが壊れてしまうことがありました。 また、 脆弱性が見つかっ た場合、 バージョンアップをしなければいけないのですが、 本体だけではなく、 各プラグインもバージ ョンアップをする必要があります。 かといってバージョンアップをしたら互換性がなくなって落ちてしまう ということがありました。 」(宮田氏) CircleCI ではプラグインや細かな脆弱性対応などの必要がない ので、 このような管理コストの大幅な削減が期待できる。 また、「何でもできる」ことが招く弊害につ いては五十嵐氏も言及している。「従来のツールですと設定ファイル内にプログラミングコードも記述 できて何でもできるのですが、 記法が複雑で、 慣れていない人が書くには大変です。 CircleCI では該当 機能の公式ドキュメントへのリンクを提示するだけで済んでいます。 」(五十嵐氏)
サイドプロジェクトでのクラウド活用が CircleCI 導入のきっかけに
2016年末頃、 同社ではある小規模のサービスを AWS上に構築すると いうサイドプロジェクトを立ち上げることになった。 AWS を利用するの で、 積極的にクラウドの開発基盤を利用という流れになり、 GitHub の リポジトリもクラウドに立て、 CircleCI Cloud のようなクラウドサービス も試験導入した。 その導入から間もなく、 CircleCI Cloud はバージョン 2.0をリリースし大幅な機能改善を行った。 「CircleCI 2.0 がリリースさ れて、 使いやすくなり、 CIのレスポンスも速くなったので、 既存の CI環境 を置き換えられそうだという実感がそのサイドプロジェクトで得られま した。 その結果、 徐々にほかのプロジェクトでも使っていきましょうとい う流れになってきました。 」(宮田氏)
その後、 オンプレミスでも開発基盤を構築している同社では、 クラウド 版の CircleCI だけではなく、 オンプレミス版の CircleCI Server も導入 している。 「私がひとりで管理している Jenkins に CIを依存することへ の懸念が社内から上がりました。 デプロイパイプラインのように本番環 境に影響を与えるものが属人化してしまわないように、 情報システム部 で CIを社内に構築しようという話があって、 CircleCI Server が候補に 上がっていました。 そこで自分が兼務という形で関わり、 メンテナンス 方法を情報システム部に共有しつつ、 CircleCI Serverを構築しました。 Terraform スクリプトが提供されているので構築は簡単でした。 実際 動かしてみると問い合わせる機会もあったのですが、 CircleCI はサポー トの返信が素早く、 日本語でのサポートも丁寧に回答いただいていま す。 」(宮田氏)
CircleCI の Performance プランでビルドの 待ち時間を解消
CircleCI によって CI の管理を削減できたが、 それ以外にはどのような メリットがあったのだろうか。 「従来のツールではジョブが埋まっていた ら待たなければいけなかったのですが、 CircleCI では AWS でオートス ケールさせたり、 あらかじめ多めにリソースを確保することで余裕がで きたりするのでほぼ待ち時間が発生しません。 このことにより開発効 率が上がっています。 また、 CircleCI 2.0 で追加された Workflow は 大きかったですね。 ジョブの並列実行によりビルド時間が大幅に短縮 されました。 さらに Performance プランではコンテナが使い放題にな って大幅に並列数を上げやすくなったので嬉しかったです。 プランの変 更前にはビルドの待ち時間が一日1時間以上発生していたのですが、 Performance プランにしてからはその待ち時間がなくなりました。 」(宮 田氏) CircleCI Cloud の Performance プランは大量のコンテナを割り 当てられるので並列処理の能力が高く、 ビルドのキューが詰まって待ち 時間が発生してしまうこともない。 開発者の生産性向上には最適なプ ランとなっている。
また、 CircleCI では config.yml というテキストファイルに CI/CD の 設 定を集約しているが、「CircleCI の利用が活発になるにつれて config. ymlが段々と大きくなるので、 CircleCI Cloud で使える Orbs(注: config.yml の記述を外部化し再利用できる機能)で共通化できるのは 設定が見やすくなって助かっています。 」と宮田氏は述べている。 また、 五十嵐氏は 「config.yml に書くだけで手軽に利用できるスケジュール 機能が便利です。 kintone 上のデータを定期的にチェックして CircleCI でジョブを実行し、 サービスに反映するといった使い方をしています。 」 と語っている。
「従来のツールですと設定ファイル内にプログラミングコードも 記述できて何でもできるのですが、 記法が複雑で、 慣れていない 人が書くには大変です。」
宮田 淳平 氏 | エンジニア | Cybozu
サイボウズ株式会社について
グループウェア「サイボウズ Office」、「Garoon」、 および、 業務改善プラットフォーム「kintone」などのサービスを 開発、 販売、 運用。 サイボウズ株式会社では、 積極的に人材募集中です。 こちらの募集情報をご覧ください。 https://cybozu.co.jp/company/job/recruitment/