Googleを支える技術

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

この書籍から学んだこと

  • 使う人にとっての利便性を第一に考える
    • WEBサービスを作るうえでの基本的な思想
  • GoogleFileSystem
    • 大きな組織(500人以上)や大規模な情報を扱う場合には便利
    • 100人未満の組織や扱う情報のアクセスが少ないのであれば必要なさそう
  • CPUの消費電力を抑えるためにできること
    • スイッチの頻度を低くすること
    • 静電容量を小さくする(つまり回路を物理的に小さくする)
    • 電圧とクロックを下げる(ただし性能が犠牲になる)
  • PCの消費電力削減
    • CPUの次に電源による消費電力も大きい
    • もし1億台のPCの電源を改良すれば3年で400億kWhの電力削減につながる
    • GoogleIntelやDellに呼びかけて2007年6月にClimateSarversComputingInitiativeという団体を立ち上げた
    • この団体によりマザーボードへと供給する電圧は12Vに統一するという方向で新しいPCの規格作りが開始された
  • ハードディスクはいつ壊れるか
    • 次の通説は必ずしも正しくない
      • 読み書きが多いと壊れやすくなる
      • 温度が高いと壊れやすくなる(温度が低いと壊れるという結果もある)
    • SMARTのスキャンエラーの値は故障率に影響する
    • ディスク読み書き失敗回数も故障率に影響する
  • Googleの開発体制
    • 魅力のないプロジェクトは忘れ去れてなくなる
    • 選ばれたプロジェクトはGoogleのプロジェクトとしてリリースされる
    • Googleではコードレビューが必須とされている
    • コードレビューには2つの段階がある
    • Googleでは言語ごとにコーディングスタイルが統一されている
      • これにより誰が書いても同じようなソースコードになるようになっている
    • 基本設計を文書にする
      • 背景、目的の明記
      • 設計の明記
      • メンバーは誰をアサインするか
      • セキュリティ、プライバシー
      • テスト、モニタプランなど

この書籍から起こすべきアクション

  • 自社のソースコードのコーディングスタイルを策定する
    • 2009年から作成されたソースコードにはコーディングスタイルを適用することとする
    • ソースコードを修正したものは必ずファイルの最初のInformationにどこをどのように修正したかを明記する
    • Subversionにコミットする際は追加項目、修正項目を明確にする
    • ソースコードに記載すべき情報必須項目をまとめる
    • インデントの幅を明確に定義する(半角スペース4文字が妥当)
    • 誰がソースコードを生成したかを明記する(氏名明記)
    • いつソースコードを生成したかを明記する(年月日)
    • これらのルールを形骸化させずに文化として継承していく

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)