ウェブオペレーション

―サイト運用管理の実践テクニック

[cover photo]
TOPICS
Web
発行年月日
PRINT LENGTH
278
ISBN
978-4-87311-493-4
原書
Web Operations
FORMAT
PDF
Ebook
2,860円
Ebookを購入する

ウェブアプリケーションは、もはや生活の一部であり、さらに速く・安全で・世界中どこからでも・常に利用可能であることが求められるようになっています。これを構築・運用・保守の面から支えるのが「ウェブオペレーション」です。
本書は、ウェブオペレーションに携わるエキスパートたちの経験と知識を18本のエッセイにまとめたもの。Yahoo!でさまざまなサービスを立ち上げたエンジニア、ソーシャルゲームの大手Zyngaのストレージマネージャ、Ganglia・Chef・Maatkitといったツールの開発者などが、インフラとアプリケーションのメトリクス・機能低下の人的要因・アジャイルインフラストラクチャ・NoSQL・継続的デプロイ・ウェブオペレーションのキャリア構築などについて、具体的な事例を挙げて紹介しています。日本語版では、料理レシピサイトで有名なクックパッドを支えるオペレーション技術も掲載しています。
日々の試行錯誤から体得するウェブの運用・管理の技術について、経験豊富な技術者のノウハウを紹介する本書は、様々なケースに応用できる発想を導く一冊となるでしょう。

目次

目次

訳者まえがき
まえがき
はじめに

1章  ウェブオペレーション:キャリア
    1.1  なぜウェブオペレーションが難しいのか?
        1.1.1  コンピュータの動作に関する深い知識
        1.1.2  経験を積んだ決断力
        1.1.3  穏やかな気質
    1.2  アプレンティスからマスターへ
        1.2.1  知識
        1.2.2  ツール
        1.2.3  経験
        1.2.4  規律
    1.3  結論

2章  Picnikにおけるクラウドコンピューティングの利用とその教訓
    2.1  クラウドが適しているところ(とその理由!)
        2.1.1  ストレージ
        2.1.2  EC2とハイブリッドコンピューティング
    2.2  クラウドが適していないところ(Picnikの場合)
    2.3  結論

3章  インフラとアプリケーションのメトリクス
    3.1  時間分解能と保存項目
    3.2  メトリクスの収集・保存における地域性
    3.3  メトリクスのレイヤ
        3.3.1  ビジネスメトリクスとアプリケーション機能のメトリクス
        3.3.2  システムやサービスレベルのメトリクス
    3.4  異常検出とアラート
    3.5  ログもメトリクス
    3.6  変更管理とインシデント時間の関係
    3.7  アラートでメトリクスを活用する
    3.8  メトリクスを使った負荷フィードバックメカニズムの調整
    3.9  メトリクス収集システムの例(Ganglia)
        3.9.1  背景
        3.9.2  Ganglia入門
    3.10  結論

4章  継続的デプロイ
    4.1  小さなバッチはフィードバックが早い
    4.2  小さなバッチは問題を局所化する
    4.3  小さなバッチはリスクを減らす
    4.4  小さなバッチはオーバーヘッドを減らす
    4.5  品質管理者の嘆き
        4.5.1  なぜ継続的デプロイが有効なのか?
    4.6  さあ始めよう
        4.6.1  手順1:継続的統合サーバ
        4.6.2  手順2:ソース管理コミットチェック
        4.6.3  手順3:シンプルなデプロイスクリプト
        4.6.4  手順4:リアルタイムアラート
        4.6.5  手順5:根本原因分析(5つのなぜ)
    4.7  継続的デプロイはミッションクリティカルなアプリケーションに
        4.7.1  えーまたリリース? やらなくちゃいけないの?
        4.7.2  QAのジレンマ
    4.8  結論

5章  コードとしてのインフラ
    5.1  サービス指向アーキテクチャ
        5.1.1  構成管理
        5.1.2  システム統合
    5.2  結論

6章  監視
    6.1  物語「旅の始まり」
    6.2  手順1:監視対象を理解する
    6.3  手順2:通常の動作を理解する
    6.4  手順3:準備して学ぶ
    6.5  結論

7章  いかにして複雑なシステムは失敗するか
    7.1  いかにして複雑なシステムは失敗するか
    7.2  ウェブオペレーションに関すること
    7.3  補足資料

8章  コミュニティ管理とウェブオペレーション

9章  予期しないトラフィック急増への対応
    9.1  事の始まり
    9.2  アラーム三昧
    9.3  火消し
    9.4  週末を生き延びる
    9.5  将来への備え
    9.6  CDNの救援
    9.7  プロキシサーバ
    9.8  スタンピードを捕まえる
    9.9  コードの整理
    9.10  確認
    9.11  本物のテスト
    9.12  教訓
    9.13  日々改善

10章  開発と運用の協力と連携
    10.1  デプロイ
    10.2  共有のオープンなインフラ
    10.3  信頼
    10.4  オンコール開発者
        10.4.1  ライブデバッグツール
        10.4.2  フィーチャフラグ
    10.5  非難を避ける
    10.6  結論

11章  訪問者の気持ち:ユーザ対面メトリクス
    11.1  なぜユーザ対面メトリクスを収集するのか?
        11.1.1  成功するスタートアップ企業の学習と適応
        11.1.2  パフォーマンス重要
        11.1.3  関係を定量化する最新の研究
    11.2  なぜサイトが遅くなるのか?
        11.2.1  サービスの検出
        11.2.2  リクエストの送信
        11.2.3  レスポンスを考える
        11.2.4  レスポンスの配信
        11.2.5  非同期通信と更新
        11.2.6  レンダリング時間
    11.3  遅延の計測
        11.3.1  統合監視
        11.3.2  リアルユーザ監視
    11.4  SLAの構築
        11.4.1  Apdex
    11.5  訪問者の成果:解析
        11.5.1  マーケティングの成功の定義
        11.5.2  4種類のサイト
        11.5.3  (超)基本的な解析モデル
        11.5.4  パフォーマンスと時間の関連
        11.5.5  パフォーマンスと訪問の関連
    11.6  マーケティングが気にするその他のメトリクス
        11.6.1  ウェブインタラクション解析
        11.6.2  顧客の声(VOC)
    11.7  ユーザエクスペリエンスのウェブオペレーションへの影響
        11.7.1  もっと多くのステークホルダ
        11.7.2  単なるQAではなくライフサイクルの一部として監視する
    11.8  ウェブ監視の未来
        11.8.1  部品からユーザへ
        11.8.2  サービス中心アーキテクチャ
        11.8.3  クラウドと監視
        11.8.4  APIとRSSフィード
        11.8.5  リッチインターネットアプリケーション
        11.8.6  HTML5:Server-Sent EventとWebSocket
        11.8.7  オンラインコミュティとロングファンネル
        11.8.8  メールとコンバージョンループを結び付ける
        11.8.9  キャパシティ・コスト・収益の均衡
    11.9  結論

12章  ウェブにおけるリレーショナルデータベースの戦略と戦術
    12.1  ウェブデータベースの要件
        12.1.1  常時稼動
        12.1.2  トランザクション処理
        12.1.3  シンプルなデータ・シンプルなクエリ
        12.1.4  一貫性よりも可用性
        12.1.5  迅速な開発
        12.1.6  オンラインデプロイ
        12.1.7  開発者によるビルド
    12.2  典型的なウェブデータベースの成長
        12.2.1  単一サーバ
        12.2.2  マスタとレプリケーションスレーブ
        12.2.3  機能分割
        12.2.4  シャーディング(水平分割)
        12.2.5  キャッシュレイヤ
    12.3  クラスタあこがれ
        12.3.1  CAP定理と「ACID」対「BASE」
        12.3.2  MySQLのクラスタリング
    12.4  データベース戦略
        12.4.1  アーキテクチャ要件
        12.4.2  堅ろうなアーキテクチャ
        12.4.3  危険なアーキテクチャ
    12.5  データベース戦術
        12.5.1  バックアップはスレーブで
        12.5.2  オンラインスキーマ変更
        12.5.3  監視・グラフ・状態監視
        12.5.4  パフォーマンス分析
        12.5.5  データのアーカイヴと削除
    12.6  結論

13章  障害を活用する:ふりかえりの技芸と科学
    13.1  最悪のふりかえり
    13.2  ふりかえりとは
    13.3  ふりかえりの時期
    13.4  ふりかえりの参加者
    13.5  ふりかえりの実施
    13.6  ふりかえりのあとで
    13.7  結論

14章  ストレージ
    14.1  データ資産の棚卸し
    14.2  データ保護
    14.3  キャパシティ計画立案
    14.4  ストレージのサイジング
    14.5  オペレーション
    14.6  結論

15章  非リレーショナルデータベース
    15.1  NoSQLデータベースの概要
        15.1.1  キーバリュー型
        15.1.2  データ構造型
        15.1.3  グラフ型
        15.1.4  ドキュメント指向型
        15.1.5  高分散型
    15.2  NoSQLデータベースの詳細
        15.2.1  Cassandra
        15.2.2  HBase
        15.2.3  Riak
        15.2.4  CouchDB
        15.2.5  MongoDB
        15.2.6  Redis
    15.3  結論

16章  アジャイルインフラストラクチャ
    16.1  アジャイルインフラストラクチャ
        16.1.1  でも、進化するのはアジャイルだけじゃない
        16.1.2  ウェブオペレータに生まれる人もいれば、ウェブオペレータに押し上げ
   られる人もいる
        16.1.3  動くソフトウェアは進捗の第一の指標
        16.1.4  アプリケーションはインフラであり、インフラはアプリケーションである
   
    16.2  で、何が問題なの?
        16.2.1  おしゃべりでご飯は炊けない
    16.3  利益共同体とプラクティスのコミュニティ
    16.4  トレーディングゾーンと謝罪
        16.4.1  何をすべきか?
    16.5  結論

17章  夜中に聞こえる奇妙な物音(と、ぐっすり眠る方法)
    17.1  定義
    17.2  9はいくつ?
    17.3  「影響継続」対「事故継続」
    17.4  データセンタの足跡
    17.5  劣化障害
    17.6  誰も信じない
    17.7  フェイルオーバーのテスト
    17.8  監視とパターンの歴史
    17.9  ぐっすり眠る

18章  日本の料理のインフラ
    18.1  クックパッドを動かすサーバ群
    18.2  厳格なレスポンスタイムとその監視
    18.3  キャパシティ(リソース)の管理
    18.4  ソースコードだけでない履歴管理
    18.5  情報共有の取り組み
    18.6  必要ならばアプリケーションも書く
    18.7  抱える課題
    18.8  終わりに

寄稿者紹介
索引