GoogleがBigQueryを安価に提供できる理由は、Borgによる大規模分散コンテナ環境があるから
いまから6年前の2014年、当時ようやくDockerコンテナが世の中に知られるようになってきた頃、Googleはすでに社内のすべてのソフトウェアをコンテナ化しており、毎週20億個ものコンテナをクラウド上で起動していると発表し、多くのエンジニアを驚かせました。
この大規模なコンテナの制御、すなわちオーケストレーションを行っていたのが同社内で「Borg」と呼ばれるソフトウェアです。
そしてKubernetesはこのBorgを基に、Googleがオープンソース化したコンテナオーケストレーションソフトウェアだとされています。
Borgの大規模分散コンテナ基盤でBigQueryが成立する
このBorgによる大規模分散コンテナ基盤があるからこそ、BigQueryが安価に提供できるのだと、Google CloudのDeveloper Advocateを務める佐藤氏がツイートしていました。
これがコンテナによる分散環境の威力をうまく表していて印象的だったので、下記にまとめてみました。
Googleのオレゴンと台湾のデータセンターに行った時に感動したのは、Borgで管理された数万台のマシンのHDDやLANアクセスのLEDがすべて均等にチカチカしてたこと。アプリ負荷をコンテナで細粒度に分割し、CPU、メモリ、I/O等のリソース配分を1万台単位で全体最適化するから全マシンがムダなく稼働する。
— Kazunori Sato (@kazunori_279) August 27, 2020
このBorgの大規模分散コンテナ基盤があるから、DremelつまりBigQueryというものが成り立つ。ひとつのSQLの実行を数100〜数1000ノードで超並列処理しながらも、使ってるCPUやメモリは圧倒的に低コストで集められる。だから異様に速いけどすごく安い。
— Kazunori Sato (@kazunori_279) August 27, 2020
Borgによる大規模分散コンテナ基盤があるからこそ、クエリの実行を数百から数千に分解して実行する機構をもつBigQueryの仕組みが成立すると。
だから、Google Cloudのデータ分析やMLの話をする時はまずコンテナとBorgの話からしなきゃならない。Googleのサービスってほぼ全てVM使ってないの皆さん知ってましたか?って。
— Kazunori Sato (@kazunori_279) August 27, 2020
BorgとgVisorこそ私にとってクラウドらしいクラウド基盤ですね〜。細粒度の超並列分散計算環境。
— Kazunori Sato (@kazunori_279) August 27, 2020
gVisorとは、コンテナの軽量さを保ちつつ、より高い分離を実現するGoogleのコンテナランタイムです。2018年にオープンソースで公開されています。
Googleがオープンソースとして公開したテクノロジーは同社の中ですでに古くなったものだ、と言われています。すでに同社のコンテナ基盤は外からは分からないものの、もうずっと先に進んでいるのでしょう。
ちなみにAWSもコンテナの軽量さと高い分離性を両立させるというgVisorと同じコンセプトのマイクロVMであるFirecrackerをオープンソースで公開しています。
FirefcackerはAWS FargateやAWS Lambdaなどコンテナを基盤としたサービスで使われているとのこと。
gVisorはコンテナの分離性を高めるというアプローチで実装され、一方のFirecrackerはマイクロVMが示す通り、仮想マシンをコンテナのように軽量化するというアプローチがとられています。両者のアプローチの違いも興味深いところです。