engineers_blogこんにちは。Planを用いて、CI環境の改善を行った話をします。Plan最高マネーフォワードにおけるCI環境のこれまでマネーフォワードでは長い間、JenkinsをCI環境として用いてきました。社内のJenkinsを用いたCI環境では以下の問題が生じていました。Experience)も悪いしインフラも辛い。いうことで、CI環境の改善に取り掛かりました。(勿論Jenkinsおじさんでも上記の問題は解決できないことはないと思います。Jenkinsおじさん。メインのCI環境として用いることとしました。大きな理由は次の2点です。1点目はマネージドであることに依るメンテコスト削減です。Serviceでも同様のメリットは得ることが可能です。このプランの存在が決め手となりました。Successの方とメールする中で教えてもらい、すぐにトライアルを開始し現在に至ります。無制限な点にあります。次のように、アクティブユーザ数と消費クレジットから計算されます。$0.0006特徴的なのは消費クレジットです。Classによって実行時間1分当たりの消費クレジットが変動します。Classと消費クレジットの対応表を示します。40上の表が示すように、vCPUとMemoryの量に応じて1分あたりの消費クレジット料が変動します。例として以下のケースのテスト1回あたりの料金を計算してみます。程度であり、高並列度かつキューイングされない環境にも関わらず十分にリーズナブルな価格です。Planにより、マネーフォワードのCIに抱えていた課題は以下のようにして解決されました。Planでは並列度が無制限のため、各プロダクトで必要なだけテスト並列度を上げることが可能となりました。あるプロダクトを例に上げると、Jenkins時代には1回あたり8並列で30分強かかっていたCIが、CircleCIでは64並列10~15分まで改善されました。8倍の並列度にしたにも関わらず1/8の時間になっていないのは、CircleCIでテストを走らせるまでのセットアップに時間がかかっていることや、並列実行されているコンテナ間でテストの分散がうまく行われていないことに寄ります。ファイル数が多い場合に非常に時間がかかってしまうためです。(https://circleci.com/blog/deep-diving-into-circleci-workspaces/)このあたりは、巨大でモノリシックなRailsアプリであるが故に抱えている辛みであり、正直高速化するにはアプリケーションを分割していくしか無いと思っているので、今後の課題としています。同時実行コンテナ数の制限が無いので、全くキューイングされることがなくなりました。nodeをscaleさせる必要がありましたが、CircleCIでは全く考える必要がありません。従来のCircleCIの課金体系でこのキューイングされない環境を実現しようとすると、300コンテナ弱の契約が必要だと見積もっていました。288コンテナが必要です。$14400と月額約150万程のコストが掛かってしまい、いくらJenkinsよりもいい環境が手に入るとはいえ、手の出しにくい価格でした。PerformancePlanでは当初見積もりの1/4程度の金額でキューイングのない理想的なCI環境を実現できています。一例より高並列数を活かすためにあると嬉しいなCircleCI賢いテスト分散実行の仕組み現状ジョブの起動時に各コンテナが実行するテストが決定してしまうので、コンテナ間で実行時間にばらつきがある。Planの良さを殺してしまうので残念ながら利用できていません。Planが控えめに言って最高という話でした。そのうち、CircleCI全社導入にあたって行ったことや、CircleCIでのtips、ハマりポイントを書くことができたらと思います。Killerに殺されてしまう話とか)最後にマネーフォワードでは、一緒に溜まった負債を返済しながらインフラをもっと前へ進めることで、DXを向上させてくれるエンジニアを募集しています!ご応募お待ちしています。