
ポケコロのビルドマシンを強くしてチームの作業を快適にした話
-
2020年12月28日
ポケコロ事業部に所属している D です。主に、ポケコロのクライアント開発をしております。
今回はポケコロのビルドマシンを強くしてチームの作業を快適にした話を紹介します。
ポケコロのビルドマシン
ポケコロチームでは開発したアプリを、QAやデザイナーが実機上でチェックしています。
アプリをビルドするときは、共有のビルドマシン上の Jenkins でビルドします。
ビルドが完了したら、それを AppCenter に自動でアップロードして、Slack に完了通知を出しています。
ビルドマシンは iOS 用と Android 用の 2 台があって、性能としては以下のような感じでした。
旧マシン
用途 | モデル | プロセッサ | メモリ |
---|---|---|---|
iOS 用 | Mac Pro (Late 2013) | 2.7 GHz 12コア Intel Xeon E5 | 32 GB |
Android 用 | Mac Pro (Late 2013) | 3.5 GHz 6コア Intel Xeon E5 | 32 GB |
旧マシンでのビルド & アップロードまでの所要時間
用途 | ビルド & アップロードまでの所要時間(※1) |
---|---|
iOS 用 | 約 30 分(※2) |
Android 用 | 約 50 分 |
ビルドに時間を要することによるデメリット
うちのチームはクライアント開発者が 6 人ほどいて、常時 3 つから 4 つくらいの案件が同時進行で動いています。
そのため、たまに Jenkins のジョブが 2 つ 3 つ被ったりすると Android に関しては QA 開始できるまでに 2 時間待ちになってしまい、そこで非常〜に無駄な時間を食っておりました。
ビルド時間を短くするために、
- warning を消す
- Header ファイルを Header ファイルにかかない( C++ コードなので)
- コンパイルオプションをいじる
- Xcode の設定を変える
などなど、ググればいくらでも出てくるものを試しましたが、焼け石に水状態で数分早くなる程度(ソースコード量が結構なことになっていて根本的なリファクタリングしろって話ですが)。
マシンの新調
という訳で、うだうだ考えずにビルドマシンの買い替えを交渉し、下記のマシンに買い替え。
Mac Pro(2019)
新マシン
用途 | モデル | プロセッサ | メモリ | 価格 |
---|---|---|---|---|
iOS 用 | Mac Pro (2019) | 2.7 GHz 24コア Intel Xeon W | 96 GB | 約 150 万円 |
Android 用 | Linux | AMD Ryzen 9 3950X 16-Core Processor | 16 GB | 約 25 万円 |
24 コアって人生で初めて生でみた。。値段も。。
新マシンでのビルド & アップロードまでの所要時間(改善結果)
用途 | ビルド & アップロードまでの所要時間(※1) |
---|---|
iOS 用 | 約 10 分 |
Android 用 | 約 10 分 |
相当早くなって相当快適になりました。あの無駄な待ち時間がなくなっただけでも相当楽です。
特に本番用ビルドアップロード時などは、やることなく待つときが結構あったりしたので、非常に楽になりました。
中々にうちの会社としては高い買い物でしたが、今まで何人もの人間の待ち時間の無駄な工数を考えると実は数ヶ月( 1 ヶ月以内?)でペイできてしまうという。何十人とかかってくるならお金をかけても、全然よいなと思いました。
という結局、最終的にはお金で解決したよという話でした。
Linux( Ryzen 9 3950X )からの CPU ステータス。
16 コア / 32 スレッド
Mac Pro(2019)からの CPU ステータス
24 コア / 48 スレッド
(※1 Jenkins でビルドを実行して AppCenter へのアップロードが完了し、Slackに通知されるまでの時間で計測)
(※2 アーカイブに 28 分程、アップロードに 1 〜 2 分程)