グーグルのクラウドを支えるテクノロジー > 第103回 Googleの分散ビルドシステムのアーキテクチャー(パート3)
- 編集部の見解や意向と異なる内容の場合があります
- 編集部は内容について正確性を保証できません
- 画像が表示されない場合、編集部では対応できません
- 内容の追加・修正も編集部では対応できません
CTC教育サービスはコラム「グーグルのクラウドを支えるテクノロジー > 第103回 Googleの分散ビルドシステムのアーキテクチャー(パート3)」を公開しました。
###
はじめに
前回に続いて、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も同一リージョンでの連携が行われます。
この続きは以下をご覧ください
https://www.school.ctc-g.co.jp/columns/nakai2/nakai2103.html
ソーシャルもやってます!