ウェブエンジニア珍道中

日々の技術的に関する経験を書いていきます。脱線もしますが助けになれば幸いです。

SRE サイトリアイアビリティエンジニアリング 2章まとめ

前章はこちら

www.te-nu.com

2章をざっくりとメモしました。

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

  • Googleのデータセンターは一般のものと大きく異なり、従来では見られなかった問題や機会を生み出したので、これらの解説と本書で使う用語を紹介する

  • GoogleのコンピュートリソースのほとんどはGoogleが設計したデータセンターにある、これらのハードウェアはデータセンター名で統一されている

  • 用語

    • マシン:1つのハードウェア(または1つのVM)
    • サーバー:サービスを実装しているソフトウェア
  • マシンは任意のサーバーを動作させることができるので、あるマシンをあるサーバ専用にする必要はない

  • 代わりにGoogleのクラスタオペレーティングシステムであるBorgがリソースの割当を行う

  • Googleにおけるサーバーという言葉の違いは通常とは異なるが慣れてしまえば妥当たと明らかになるだろう

  • Googleのデータセンターは数十台のマシンが1つのラックに配置され、それら複数が1列に並び、1~数列でクラスタを構成する。そして1つのデータセンターの建物は複数のクラスタを格納する。データセンターの建物複数はキャンパスを構成する

  • データセンター内のマシン群はお互いに通信出来なければならないため、数万のポートを持つ高速な仮想スイッチをGoogleは開発した

  • Googleのハードウェアはスケーラビリティが高いソフトウェアで管理されている、これによって注意しなければならないことの一つがハードウェアの障害である

  • Googleの管理しているマシンはとても多いため、障害の数はとても多い。その中でもユーザやチームに影響を与えないようにしている。各データセンターキャンパスには専門のチームがいる

  • マシン群の管理はBorg(Kubernetesの先祖)という分散クラスタオペレーティングシステムで行っている

  • Borgはクラスタ単位でジョブの管理を行い、ユーザからのジョブの実行を受け持つ。ジョブには同一タスクが一つ以上含まれることがあるが、これには2つ理由があり、信頼性の担保と、単一プロセスではクラスタにきたトラフィックを処理しきれないためである

  • Borgはタスクを実行させるマシンを見つけて実行させ、モニタリングを行う。異常があればkillして再起動を行う

  • タスクはマシン間で流動的に割り当てられるため、IPやポートで参照できない。そのためタスク開始時にBorg Naming Service(BNS)を使い名前とインデックス番号を割り当てる

  • Borgはリソースの割り当ても行うので全てのジョブはリソースの指定も行わなければならない。また、障害ドメインも考慮に入れ全タスクを同じラックで行わないようにもしている

  • タスクはローカルディスクをスクラッチパッドとして使うことができ、永続化ストレージとして使えるクラスタのストレージも複数用意されている(ListreやHDFSに相当)

    • スクラッチパッドメモリ:Scratchpad memory、CPUの近くに配置された高速なメモリのこと。
  • ストレージレイヤーはクラスタで利用できるストレージへ高い信頼性の元容易にアクセスできるようにする、ストレージには多くのレイヤーがある(図を使って細かく説明していたがここでは省略)

  • Googleのネットワークハードウェアは複数の方法で制御されている。低価格な「ダム」スイッチングハードウェアを集中コントローラと合わせて使いネットワーク間の最善経路を事前に計算している

  • こうすることでルータにルーティングの判断をさせずに済み、シンプルなスイッチングハードウェアを使える

  • 他にも重要なコンポーネントがある(ここでは省略するが、ロックサービス、モニタリングなどがあった)

  • Googleは開発の速度を重要視しているため、Googleのインフラストラクチャを最大限に活用できる完全な開発環境が構築されている

  • Googleのほとんどのソフトウェアエンジニアは単一のリポジトリを使って作業を行う、これはワークフローについて重要な影響を及ぼす

    • 自分のプロジェクト外の問題に遭遇した場合に、問題を修正して変更の提案をそのプロジェクトの人にレビューしてもらい、メインラインに投入してもらうことができる
    • 自分のプロジェクト内のソースに変更を加える際にはレビューをしてもらわなければならない
  • ソフトウェアのビルドはデータセンターにリクエストを送って行ってもらう、テストの際にも使われ他プロジェクトに影響が出る時は通知が飛ぶようになっている

  • (サンプルがあったがここでは省略)

感想

「Googleの環境はすごいんだぜ」って章でした(笑)。規模が大きいのでそのまま参考にすることは出来なさそうでしたが、実際の環境を紹介しながら背景や理由などを説明してくれているので、それは参考にできそうでした。

次の章

www.te-nu.com

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

  • 作者: 澤田武男,関根達夫,細川一茂,矢吹大輔,Betsy Beyer,Chris Jones,Jennifer Petoff,Niall Richard Murphy,Sky株式会社玉川竜司
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2017/08/12
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (1件) を見る