SRE本2章 - SREの観点から見たGoogleのプロダクション環境

昨日ポエムだったので、今日もポエムを書こうかとも思ったんですが、それだと一体なんのためにやり始めたのかさっぱりわからなくなるので、やっぱりやめました。

2章 SREの観点から見たGoogleのプロダクション環境

1章からガラッと変わって、2章は非常に具体的にGoogleのデータセンターで実際に稼働しているシステムについて語られています。

ちょっとね、正直に言いますが、

この章、難しすぎて全然わかりません

↑この感想だけで終わりたいくらいだけど、それだとポエム以下になるのでまぁもう少し書くけれども・・・。

とりあえず、わかったところを箇条書きにします。間違っている可能性しかないです。

  1. ハードウェア
    • Googleでは、下記2用語の意味合いが通常とは少し異なる
      • マシン: 1つのハードウェア(あるいは1つのVM)
      • サーバー: サービスを実装しているソフトウェア
    • 数十台のマシンが1つのラックに配置されている
    • 複数のラックが1列に並べられている
    • 1つないし複数の列は、1つのクラスタを構成する
    • 通常は1つのデータセンターのビルディングは、複数のクラスタを格納する
    • 近くに配置されたデータセンターのビルディング群はキャンパスを構成する
    • データセンター内のマシン群は互いに通信する必要があるため、Jupiterと呼ばれるClosネットワーク装置で接続されている
    • データセンター群は、SDN(Software Defined Network)アーキテクチャであるB4で相互接続されている
  2. ハードウェアを組織化するシステムソフトウェア
    • マシン群の管理を行うBorg
    • 複数のレイヤーから構成されているストレージ
    • 低価格だが高速に動作する「ダム」スイッチングハードウェア等を使って構築しているネットワーク
    • 複数箇所のデータセンターにまたがって扱うロックサービスのChubby
  3. ソフトウェアインフラストラクチャ
    • すべてのサービスは、Stubbyと呼ばれるRPCを使って通信(StubbyのオープンソースバージョンとしてはgRPCがある)
  4. 開発環境
    • ソフトウェアのビルド時、データセンター内のビルドサーバーにビルドリクエストを送る
    • コンパイルは、多くのビルドサーバーが並列に行うため、大規模なビルドであってもすぐに実行される
    • push-on-greenシステムで、テストをパスした新バージョンが自動的にプロダクション環境に送られるプロジェクトもある

その後、サービスがGoogleのプロダクション環境にデプロイされる様子がわかりやすく例を用いて書かれています。



ま、きっとこの章は今後何度も読むんだろうなきっと。