はじめに
前回に続いて、2020年に公開された論文「Scalable Build Service System with Smart Scheduling Service(PDF)」を紹介します。この論文では、Google社内で利用されている「分散ビルドシステム」のアーキテクチャーが解説されています。今回は、このシステムの実際の動作環境について、論文に掲載の性能データなどを含めて紹介します。
コンポーネントの配置とスケーラビリティ
Google社内の分散ビルドシステムは、前回の図1に示したように、いくつかの独立したサービスが連携するマイクロサービス型のアーキテクチャーになっており、それぞれのサービスは、負荷分散のために複数デプロイされています。また、世界各地の開発者が利用するシステムのため、各サービスは複数のデータセンターに分散配置されており、データセンターを跨いだサービス間の連携も行われます。Googleのデータセンターは、Googleが所有する専用回線で相互接続されており、地理的に離れたデータセンター間でも数ミリ秒以下のレイテンシーで通信することができます。これにより、システム全体の性能を損なうことなく、データセンターを跨いだマイクロサービスの配置が可能になります。
ただし、特に低レイテンシーでの通信が求められるサービスは、同一のリージョン内で連携します。たとえば、前回の図1にあるスケジューリングサービスは、Spannerデータベースに対するデータの読み書きが大量に発生するので、同一リージョンにあるSpannerを利用します。また、Bazel Workerからのイベント情報をリアルタイムに取得するEvent Serviceも、同一リージョンで連携します。つまり、リージョンAのBazel WorkerのイベントはリージョンAのEvent Serviceが収集して、リージョンBのBazel WorkerのイベントはリージョンBのEvent Serviceが収集するといった動作になります。同様に、Bazel WorkerとExecutor Clusterも同一リージョンでの連携が行われます。
この続きは以下をご覧ください
(リンク »)
お問い合わせにつきましては発表元企業までお願いいたします。