BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Slack、E2Eパイプラインを最適化

Slack、E2Eパイプラインを最適化

原文リンク(2025-05-05)

先日、SlackのDeveloper Experience (DevXP)チームが、E2Eテストパイプラインで大幅な最適化を実施したと発表した。フロントエンドのビルド頻度が60%削減され、全体のビルド時間が50%短縮されたとしている。また、今回の最適化により、継続的インテグレーションと継続的デプロイメント (CI/CD) プロセスが効率化され、エンジニアによる繰り返し作業の高速化・効率化が実現できたという。

今回の最適化の詳細は、最新のブログ投稿の通りである。従来のSlackのモノレポリポジトリにはCI/CDパイプラインが統合されており、コードをメインブランチにマージする段階でE2Eテストが実行される。今回のE2Eパイプライン最適化で、フロントエンド、バックエンド、データベースを含めたすべてのアプリケーションスタックで変更の検証が可能になった。だが同時に、変更がない場合もフロントエンドのビルドが実施されており、ビルド時間の長期化とリソース浪費の問題が生じていることが明らかになった。1回あたりのビルド時間を約10分とすると、そのうち約5分をフロントエンドのビルドに費やしていたという。日々膨大な数のプルリクエストがマージされており、こうした冗長なビルド時間が処理時間やストレージコストを大幅に膨れ上がらせていたのだ。

こうした中、ビルド時間の効率化に向けて、条件付きのフロントエンドビルドプロセスが実装された。git diffのスリードットGit差分でプルリクエストとメインブランチを比較し、プルリクエストにフロントエンドの変更が含まれるかが検出可能になった。フロントエンドの変更が検出されない場合は、フロントエンドのビルドをスキップし、事前にビルドされたバージョンが再利用できる。AWS S3に保存されている事前ビルドされたアセットを、コンテンツデリバリーネットワーク (CDN) 経由で利用する仕組みだ。こうすることで、新規ビルドをスキップしながら、最新アセットのテストが実行可能になっている。

また、こうした変更を大規模実装したところ、100,000以上の追跡済みのファイルが保管されたリポジトリではフロントエンドの変更確認が困難になるといった新たな課題が判明したが、Gitツール機能を活用することで、実行時間をわずか数秒に短縮できたという。さらに、AWS S3ストレージや一貫したファイル命名規則を採用することで、大量のソフトウェアアセットから事前にビルドされた適切なアセットを検出する時間を平均3秒以内に短縮することに成功している。

今回のE2Eパイプラインの最適化で、Slackの開発ワークフローの効率が改善した。特に注目なのが、フロントエンドのビルド頻度が60%削減されたほか、CIリソースの浪費の原因となっていた不要なビルドを大幅に削減できたという発表である。これだけで、フロントエンドコードと依存関係にないプルリクエストのマージ時間やサーバー負荷が削減されたほか、全体のビルド時間も50%削減に成功している。今回の最適化実装を受けて開発プロセスの効率化や応答性が向上したほか、開発者の生産性向上だけでなく、ストレージコストやリソース使用率の改善も実現している。

作者について

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT