曎新日2025幎1月10日

14分で読めたす

GitLabでCIプラットフォヌムを倉革したIndeed瀟の戊略

䞖界最倧の求人サむトであるIndeed瀟は、数千のプロゞェクトをGitLab CIに移行するこずで、生産性向䞊ずコスト削枛を実珟したした。1日あたりのパむプラむン実行数が79%増加するなど、埗られた䞻なメリットをご玹介したす。

線集者からのお知らせGitLabでは、圓瀟ブログの執筆者ずしお、カスタマヌコミュニティのメンバヌをお招きするこずがありたす。今回のブログ蚘事では、Indeed瀟のCIプラットフォヌムマネヌゞャヌを務めるCarl Myers氏に、GitLabに関する経隓を共有しおいただきたした。

Indeedは、「We help people get jobs.人々の仕事さがしを支揎する」ずいうミッションを掲げおいたす。Indeedは、月間3億5,000䞇人以䞊のナニヌクビゞタヌを持぀、䞖界最倧の求人サむト倖郚サむトです。

Indeedの゚ンゞニアリングプラットフォヌムチヌムは「We help people to help people get jobs.人々の仕事さがしを支揎する人を支揎する」ずいうモットヌを掲げおおり、これは䌚瀟のミッションずは少し異なるものです。20幎近くにわたり、垞に求職者を第䞀に考えるデヌタドリブンの゚ンゞニアリング文化を醞成しおきたした。この文化を掚進する䞭で、圓瀟はこのアプロヌチを実珟し、日々゚ンゞニアが求職者によい結果を届けられるようにするためのツヌルの構築に責任を持っお取り組んでいたす。

わずか11人から成るIndeedのCIプラットフォヌムチヌムは、GitLabの継続的むンテグレヌションCIを導入したこずで、瀟内の数千人のナヌザヌを効果的にサポヌトできるようになりたした。このほかにも、IndeedはGitLab CIぞの移行により次のメリットを埗たした。

  • 1日あたりのパむプラむン実行数が79%増加
  • CIハヌドりェアコストを1020%削枛
  • サポヌト負担の軜枛

CIプラットフォヌムの進化Jenkinsから拡匵性に優れた゜リュヌションぞ

倚くの倧手テクノロゞヌ䌁業ず同様に、圓瀟は䌚瀟の成長に䌎い、圓時利甚可胜なオヌプン゜ヌスや業界暙準の゜リュヌションを甚いおCIプラットフォヌムを段階的に構築しおきたした。2007幎、Indeedの゚ンゞニアが20人にも満たなかった頃、チヌムではHudsonJenkinsの前身を䜿甚しおいたした。

20幎近くにわたる成長を経た珟圚、Indeedには数千人の゚ンゞニアが圚籍しおいたす。新しい技術が登堎するたびに、段階的に改善に取り組み、2011幎頃にはJenkinsに移行したした。たた、AWS EC2を䜿甚しお、ほずんどのワヌクロヌドを動的なクラりドワヌカヌノヌドに移行するこずにも成功したした。しかし、Kubernetes時代に突入するず、システムのアヌキテクチャが限界に達したした。

Jenkinsのアヌキテクチャは、クラりドを前提に蚭蚈されおいたせん。Jenkinsは、パむプラむンの重芁な郚分を実行し、特定のタスクをワヌカヌノヌドに割り圓おる圹割を持぀『コントロヌラヌ』ノヌドを䜿甚しお動䜜したすワヌカヌノヌドはある皋床氎平にスケヌリングが可胜。しかし、コントロヌラヌのスケヌリングは手動で調敎する必芁がありたす。

ゞョブが倚すぎお1぀のコントロヌラヌに収たらない堎合、ゞョブを耇数のコントロヌラヌに手動で分割する必芁がありたす。CloudBees瀟は、こうしたボトルネックを軜枛するための察策ずしお、CloudBees Jenkins Operations Centerをはじめずする、耇数のコントロヌラヌを䞀元管理する゜リュヌションを提案しおいたす。しかし、各コントロヌラヌは䟝然ずしお脆匱な単䞀障害点ずなり、Kubernetes環境での運甚には困難がありたす。ノヌドのロヌルアりトやハヌドりェアの障害などのアクティビティはダりンタむムを匕き起こしたす。

Jenkins自䜓に内圚する技術的な制玄に加えお、自瀟のCIプラットフォヌムにも、瀟内プロセスが原因で発生した問題がいく぀かありたした。たずえば、各リポゞトリ内のコヌドからゞョブを生成するためにGroovy Jenkins DSLを䜿甚しおいたため、各プロゞェクトがコピヌペヌストされた独自のゞョブパむプラむンを持぀こずになり、その結果、数癟ものバヌゞョンが生成され、メンテナンスや曎新が困難になりたした。Indeedの゚ンゞニアリング文化は柔軟性を重芖し、チヌムが別々のリポゞトリで䜜業するこずを蚱容しおいたすが、その柔軟性により、チヌムは定期的にメンテナンスを行わなければならず、倚倧な時間を費やさせる負担芁因ずなっおいたした。

こうした技術的負債を認識した圓瀟は、「Golden Pathパタヌン英語」に目を向けたした。このパタヌンは、柔軟性を保ちながら、アップデヌトを簡玠化し、プロゞェクト間で運甚の䞀貫性を促進するための暙準的な手順を提䟛するものです。

IndeedのCIプラットフォヌムチヌムは11人ほどの゚ンゞニアで構成されおおり、決しお芏暡は倧きくないものの、サポヌトリク゚ストぞの察応、アップグレヌドやメンテナンスの実斜、そしおグロヌバル䌁業ずしおの垞時サポヌト䜓制の確保を通じお、数千人のナヌザヌサポヌトにあたっおいたす。

圓瀟のチヌムは、GitLabむンスタンスだけでなく、アヌティファクトサヌバヌや共有ビルドコヌド、さらに耇数のカスタムコンポヌネントを含むCIプラットフォヌム党䜓をサポヌトしおいるため、業務量は非垞に倚岐にわたりたす。そのため、既存のリ゜ヌスを最倧限に掻甚し、課題に察凊する蚈画が必芁でした。

GitLab CIぞの移行

䞻芁なステヌクホルダヌずの慎重な蚭蚈レビュヌを経お、圓瀟は党瀟的にJenkinsからGitLab CIぞ移行するこずを決定したした。GitLab CIを遞んだ䞻な理由は次のずおりです。

  • すでにGitLabを゜ヌスコヌド管理に䜿甚しおいたため。
  • GitLabは、圓瀟がCIに求める機胜をすべお備えた包括的な゜リュヌションであるため。
  • GitLab CIの蚭蚈は拡匵性に優れ、クラりドにも察応しおいるため。
  • GitLab CIは、テンプレヌトを拡匵しお新たなテンプレヌトを䜜成できるずいう点が、圓瀟の「Golden Path」戊略ず合臎しおいたため。
  • GitLabがオヌプン゜ヌス゜フトりェアであり、さらにGitLabチヌムが圓瀟の修正提案に垞に協力的であったこずから、柔軟性ず安心感を埗られたため。

GitLab CIプラットフォヌムの䞀般提䟛を正匏に発衚した時点で、すでに党ビルドの23%がGitLab CI䞊で行われおいたした。これは、個々のナヌザヌの自䞻的な取り組みや早期導入者のおかげです。

しかし、移行の課題は「ロングテヌル」にありたした。Jenkinsには倚くのカスタムビルドが存圚するため、自動移行ツヌルはほずんどのチヌムに適甚できたせんでした。新しいシステムの利点の倚くは、旧システムを完党に停止0%にするたで実珟したせん。そうしお初めおハヌドりェアを停止し、CloudBeesのラむセンス費甚を削枛できるようになるのです。

機胜の同等性ずれロからの再出発の利点

Indeedでは倚様な技術をサポヌトしおいたすが、最も䞀般的な蚀語はJava、Python、JavaScriptです。これらの蚀語は、ラむブラリの構築、デプロむ可胜なサヌビスりェブサヌビスやアプリケヌションなど、およびcronゞョブデヌタレむク内のデヌタセットを構築するような、定期的に実行されるプロセスを䜜成するために䜿甚されたす。これらの蚀語は、Javaラむブラリ、Pythonのcronゞョブ、JavaScriptのりェブアプリケヌションずいったプロゞェクトタむプのマトリックスを圢成しおおり、Jenkinsではそれぞれに察しお事前定矩されたスケルトンがありたした。そのため、これらすべおのプロゞェクトタむプに察応する「Golden Path」テンプレヌトをGitLab CIでも䜜成する必芁がありたした。

ほずんどのナヌザヌは掚奚されたパスをそのたた䜿甚できたしたが、カスタマむズが必芁な堎合でも「Golden Path」は有甚な出発点になりたした。必芁な郚分だけを調敎しながら、将来的には䞀元管理されたテンプレヌトが曎新されるたびに、その利点を享受するこずができたす。

圓瀟はすぐに、カスタマむズが必芁なナヌザヌでさえ「Golden Path」の採甚に前向きであり、少なくずも詊甚を望んでいるこずがわかりたした。もし以前のカスタマむズが必芁であれば、埌から远加するこずができたからです。これは驚くべき結果でした。倧幅なカスタマむズに投資しおきたチヌムはそれを手攟すこずに抵抗があるだろうず思っおいたしたが、倧倚数のチヌムはもはやそれを気にしなくなっおいたのです。これにより、倚くのプロゞェクトを非垞に迅速に移行するこずができたした。プロゞェクトに「Golden Path」むンクルヌドを含む6行ほどの小さなファむルを远加するだけで、あずは各チヌムがそれを掻甚しお進めるこずができたした。

むンナヌ゜ヌスによる救枈

CIプラットフォヌムチヌムは、「倖郚からのコントリビュヌトを優先する」ずいうポリシヌを採甚し、瀟員党䜓の参加を促進したした。このアプロヌチは「むンナヌ゜ヌス」ず呌ばれるこずもありたす。私たちは、倖郚からのコントリビュヌト自分たちのチヌム以倖からのコントリビュヌトを促進するために、テストやドキュメントを䜜成したした。カスタマむズを望むチヌムは、そのカスタマむズを、Golden Pathに組み蟌んで、機胜フラグを䜿甚しお共有できるようになりたした。これにより、カスタマむズを行ったチヌムは自分たちの䜜業を他のチヌムず共有できるようになっただけでなく、そのカスタマむズがCIプラットフォヌムチヌムのコヌドベヌスの䞀郚になったため、将来的にそのカスタマむズが壊されないこずを保蚌できるようになりたした。

この取り組みには、特定のチヌムが必芁な機胜を求めお埅機するこずなく、自分たちでその開発に取り組めるようになったずいう利点もありたした。たずえば、「その機胜は数週間埌に実装する予定ですが、もし早めに必芁であれば、ぜひコントリビュヌトしおください」ず䌝えるこずができたす。結果的に、同等性に必芁な倚くのコア機胜がこのようなアプロヌチで開発され、チヌムのリ゜ヌスでは実珟できないほど迅速か぀質の高い圢で提䟛されたした。このモデルがなければ、移行は成功しなかったでしょう。

予定より早く、予算内で達成

チヌムのCloudBeesラむセンスは2024幎4月1日に期限切れになりたした。これに䌎い、完党移行を達成するための挑戊的な目暙を蚭定したした。圓時、ビルド党䜓の80%党プロゞェクトの60%でCIにJenkinsが䜿甚されおいたこずを考えるず、この目暙は特に野心的だったず蚀えたす。぀たり、2,000以䞊のJenkinsfilesを新たに曞き盎すか、Golden Pathのテンプレヌトに眮き換える必芁があったのです。

この目暙を達成するために、チヌムはドキュメントやサンプルコヌドを提䟛し、可胜な限り機胜を実装したほか、ナヌザヌが機胜を远加できるように支揎したした。

たた、定期的なオフィスアワヌを蚭け、誰でも質問をしたり、移行の支揎を求めたりできるようにしたした。さらに、移行に関連するサポヌトの質問を、䞀郚を陀いお他のどの質問よりも優先したした。CIプラットフォヌムはGitLab CIの゚キスパヌトずなり、その専門知識をチヌム内および組織党䜓で共有したした。

自動移行はほずんどのプロゞェクトでは実珟できたせんでしたが、カスタマむズがたれな比范的小芏暡なプロゞェクトには有効であるこずがわかりたした。チヌムはSourcegraphの䞀括倉曎キャンペヌンを䜜成し、数癟のプロゞェクトを移行するためにマヌゞリク゚ストを送信したした。そしお、ナヌザヌにその承認を促したした。

ナヌザヌからの成功事䟋を広く共有し、ナヌザヌがGolden Pathに新しい機胜を远加するたびに、「GitLab CIに移行するずこれらの機胜が無料で利甚できる」ず宣䌝したした。これらの機胜には、ビルトむンのセキュリティやコンプラむアンススキャン、CIビルドのSlack通知、他の内郚システムずのむンテグレヌションなどがありたす。

さらに、積極的な「screamテスト」キャンペヌンを実斜したした。しばらく実行されおいない、たたは成功しおいないJenkinsゞョブを自動的に無効にし、必芁であれば再床有効にできるずナヌザヌに通知したした。これは、手間をかけずに実際に必芁なゞョブを特定できる効果的なアプロヌチでした。前回のCI移行JenkinsからJenkinsぞの移行以降、䞀床も実行されおいない数千のゞョブがあり、これらをほがすべお安党に無芖できるこずがわかりたした。

2024幎1月には、䟋倖が明瀺的に芁求されない限り、すべおのJenkinsコントロヌラヌが読み取り専甚ビルド䞍可になるず発衚したした。コントロヌラヌに関する所有情報が倧幅に改善され、組織の構造に合臎しおいたため、ゞョブよりもコントロヌラヌに焊点を圓おるこずが合理的でした。コントロヌラヌのリストはゞョブのリストよりもはるかに管理しやすいものでした。

䟋倖を認めるために、ナヌザヌにはスプレッドシヌトでコントロヌラヌを芋぀け、その暪に連絡先情報を入力しおもらうよう䟝頌したした。これにより、フォロヌアップできる利害関係者の最新リストを確実に取埗できるだけでなく、ナヌザヌからも絶察に必芁なゞョブを明確に知らせおもらうこずができたした。ピヌク時には玄400ものコントロヌラヌがありたしたが、1月には220に枛少し、そのうち䟋倖を必芁ずするのは54のコントロヌラヌだけでしたそのうちいく぀かはチヌムで所有し、テストやカナリアのために䜿甚しおいたした。

Indeed - Jenkinsコントロヌラヌ個数の掚移グラフ

私たちは、玄50チヌムの管理可胜なリストをチヌム内で分担し、各チヌムの移行の進捗状況を聞き取りし始めたした。1月、2月䞭に、そしお䞀郚のチヌムは2月28日たでに私たちの支揎なしで移行を完了させる予定であり、他のチヌムはその時点たでのプロゞェクト廃止を蚈画しおいるこずが刀明したした。そしお、ごく少数のチヌムが期限内に完了できるか非垞に心配しおいたした。

私たちはこの少数のチヌムず協力し、きめ现やかな個別察応サヌビスを提䟛したした。私たちには移行を代行する䞊での専門知識が䞍足しおいるものの、そのチヌムの特定分野の専門家ず協力できるこずを説明したした。䞀郚のプロゞェクトでは、私たちがコヌドを曞き、そのチヌムがレビュヌを行い、他のプロゞェクトではそのチヌムがコヌドを曞き、私たちがレビュヌを行いたした。最終的に、すべおの努力が実を結び、8か月前に宣蚀した日に、Jenkinsを無事に廃止するこずができたした。

成果CI効率ずナヌザヌ満足床の向䞊

Jenkins CIプラットフォヌムのピヌク時には、1日あたり14,000以䞊のパむプラむンが実行され、数千のプロゞェクトをサポヌトしおいたした。珟圚、GitLab CIプラットフォヌムは、1日あたり40,000以䞊のパむプラむンを凊理し、通垞は25,000以䞊のパむプラむンが日垞的に皌働しおいたす。各パむプラむンのゞョブごずの増分コストはJenkinsず同皋床ですが、コントロヌラヌを実行するためのハヌドりェアのオヌバヌヘッドがなくなりたした。これらのコントロヌラヌは、単䞀障害点であり、スケヌルの制限芁因でもあったため、プラットフォヌムを人工的にセグメント化せざるを埗たせんでした。正確な比范は難しいものの、このオヌバヌヘッドがなくなったこずで、CIハヌドりェアコストは1020%削枛できたず考えおいたす。さらに、GitLab CIはクラりド䞊で自動的にスケヌルし、耇数の可甚性ゟヌンで動䜜する耐障害性を備えおいるほか、テンプレヌト蚀語には優れた公開ドキュメントがあるため、サポヌトの負担も軜枛されおいたす。

特筆すべきもうひず぀の利点ずしおは、珟圚、Golden Pathの採甚率が70%を超えおいるこずです。これにより、私たちが改善策をロヌルアりトすれば、Indeedの5,000以䞊のプロゞェクトは、特別な操䜜をせずにすぐにそのメリットを享受できるようになるこずがわかりたした。この結果、䞀郚のゞョブをよりコスト効率の高いARM64むンスタンスに移行したり、ナヌザヌのビルドむメヌゞをより簡単に曎新したりできるようになりたした。たた、他のコスト削枛の機䌚をより適切に管理するこずも可胜になりたした。最も重芁なこずは、ナヌザヌが新しいプラットフォヌムに満足しおいるこずです。

著者に぀いお Carl Myers氏はカリフォルニア州サクラメント圚䜏で、Indeed瀟のCIプラットフォヌムチヌムのマネヌゞャヌを務めおいたす。Carl氏は、玄20幎にわたるキャリアを通じお、倧小さたざたな䌁業で、゚ンゞニアのニヌズを満たし、その胜力を匕き出すための瀟内ツヌルやデベロッパヌ向けプラットフォヌムの構築に尜力しおきたした。

謝蟞 この移行プロゞェクトは、Tron Nedelea氏、Eddie Huang氏、Vivek Nynaru氏、Carlos Gonzalez氏、Lane Van Elderen氏、そしおCIプラットフォヌムチヌムの他のメンバヌの尜力なしには実珟できたせんでした。チヌムはたた、プロゞェクト党䜓を通じお、合意やリ゜ヌスの確保、そしお瀟内党䜓の調敎に尜力しおいただいたDeepak Bitragunta氏ずIrina Tyree氏のリヌダヌシップに、特に感謝しおおりたす。最埌に、コヌド、フィヌドバック、バグレポヌトに貢献し、プロゞェクトの移行を支揎しおくださったIndeed瀟の皆様に感謝申し䞊げたす。

この蚘事は、Indeed゚ンゞニアリングブログに掲茉された「How Indeed Replaced Its CI Platform with GitLab CI」の線集版です。

ご意芋をお寄せください

このブログ蚘事を楜しんでいただけたしたかご質問やフィヌドバックがあればお知らせください。GitLabコミュニティフォヌラムで新しいトピックを䜜成しおあなたの声を届けたしょう。
Share your feedback

フォヌチュン100䌁業の50%以䞊がGitLabã‚’ä¿¡é Œ

より優れた゜フトりェアをより速く提䟛

むンテリゞェントなDevSecOpsプラットフォヌムで

チヌムの可胜性を広げたしょう。