WebSocketsを使ってGitLab CIのステータスを... ノート
RSS GitLab

WebSocketsを使ってGitLab CIのステータスを劇的に向上させた方法

GitLabは、CIジョブステータスの更新に関するAPI呼び出しを大幅に削減し、1日あたり4500万回から340万回へと92.56%削減しました。以前は、ジョブヘッダーコンポーネントがポーリングを使用しており、データの変更に関わらず30秒ごとにネットワークリクエストを行っていました。これにより、ユーザーの遅延とデータベースへの負荷が発生していました。チームは、イベント駆動型のアプローチであるGraphQLサブスクリプション over WebSocketsに移行しました。この変更により、ジョブステータスが変更された際に即座に更新が行われるようになり、不要なネットワークトラフィックが排除されました。15分あたりのネットワーク呼び出し回数は、547,145回から39,670回に減少しました。ユーザーは、リアルタイムのステータス表示を体験できるようになりました。この最適化は、CPU使用率や操作率の増加にはつながりませんでした。GitLabは、製品全体で全てのポーリングメカニズムをGraphQLサブスクリプションに置き換える予定です。その目的は、CI/CDワークフロー全体で即時フィードバックを提供することです。