Amazon Web Servicesプログラミング

―APIの基礎からElastic Beanstalkの利用まで

[cover photo]
TOPICS
Web
発行年月日
PRINT LENGTH
348
ISBN
978-4-87311-581-8
原書
Programming Amazon EC2, Elastic Beanstalk
FORMAT
PDF
Ebook
3,520円
Ebookを購入する

本書は、既存のWebアプリケーションのAWS(Amazon Web Services)への移植に始まり、AWSの機能を活かしてアプリケーションのスケーラビリティをはるかに高める手法や、運用に必要な技術までを幅広く解説します。本書を読めば、ソフトウェアでプログラミング可能なインフラストラクチャである、AWSを操る楽しさを知ることができるでしょう。
さらに、JavaベースのWebアプリケーションを容易にAWS上で構成できるElastic Beanstalkの活用方法についても詳細に解説。日本語版独自の付録として、AWS上でのWindowsインスタンスの活用、そして耐障害性に関する情報などを追加しました。AWSについて、基礎から実践までを知りたいエンジニア必携の一冊です。

目次

目次
日本語版まえがき
序文
訳者まえがき
はじめに

I部 プログラミング AWS

1章  AWSの紹介
    1.1 0から AWSへ
        1.1.1 大きい問題から先に対処
        1.1.2 無限のストレージ
        1.1.3 時間単位のコンピューティング
        1.1.4 極めてスケーラビリティの高いデータストア
        1.1.5 さらなる最適化
        1.1.6 グローバル展開
    1.2 アプリケーションへの成長
        1.2.1 まずは現実的な期待値を設定
        1.2.2 単純に小さく
        1.2.3 成長
        1.2.4 結合からの脱却
    1.3 “You Build It, You Run It”
        1.3.1 個々人とインタラクション:1つのチーム
        1.3.2 ソフトウェアを扱うということ:責任の共有
        1.3.3 顧客との共同作業:インフラストラクチャを進化させる
        1.3.4 変化への適応:笑顔で「できます」と答えよう
    1.4 まとめ

2章  EC2、RDS、S3/CloudFrontから始めよう
    2.1 環境の設定
        2.1.1 自分のAWSアカウントの作成
        2.1.2 コマンドラインツール
        2.1.3 AWS Management Console
        2.1.4 その他のツール
    2.2 地理的な場所、リージョン、アベイラビリティゾーンの選択
    2.3 アーキテクチャの選択
    2.4 EC2上でのRailsサーバーの生成
        2.4.1 鍵ペアの生成
        2.4.2 適切な AMIの探し方
        2.4.3 Web/アプリケーションサーバーのセットアップ
    2.5 RDSデータベース
        2.5.1 RDSインスタンスの生成(DB Instance Wizardの起動)
        2.5.2 これで全部?
    2.6 S3/CloudFront
        2.6.1 S3と CloudFrontのセットアップ
        2.6.2 S3/CloudFrontへの静的コンテンツの提供
    2.7 ボリュームのバックアップの作成
        2.7.1 ツールのインストール
        2.7.2 スクリプトの実行
    2.8 まとめ

3章  S3、ELB、Auto Scaling、RDSでの成長
    3.1 スケールの準備
        3.1.1 ツールのセットアップ
    3.2 S3へのファイルのアップロード
        3.2.1 Kulitzer(Rails)へのファイルアップロード
    3.3 Elastic Load Balancing
        3.3.1 ELBの作成
        3.3.2 ELBでの問題
    3.4 Auto Scaling
        3.4.1 Auto Scalingのセットアップ
        3.4.2 Auto Scalingの実際
    3.5 リレーショナルデータベースのスケーリング
        3.5.1 スケールアップ(あるいはダウン)
        3.5.2 スケールアウト
        3.5.3 便利な小技集
    3.6 まとめ

4章  SQS、SimpleDB、SNSによるデカップリング
    4.1 SQS
        4.1.1 例 1:Kulitzerにおける画像処理のオフロード(Ruby)
        4.1.2 例 2:Marviaにおける優先順位を付けた PDFの処理(PHP)
        4.1.3 例 3:Decafでのキューのモニタリング(Java)
    4.2 SimpleDB
        4.2.1 SimpleDBのユースケース
        4.2.2 例 1:Kulitzerのユーザーの保存(Ruby)
        4.2.3 例 2:Marviaのアカウント及びテンプレートの共有(PHP)
        4.2.4 例 3:DecafにおけるSimpleDB(Java)
    4.3 SNS
        4.3.1 例 1:Kulitzerのためのコンテストのルールの実装(Ruby)
        4.3.2 例 2:MarviaでのPDF処理状況のモニタリング(PHP)
        4.3.3 例 3:DecafでのSNS(Java)
    4.4 まとめ

5章 不可避なダウンタイムの管理
    5.1 計測
        5.1.1 アップ/ダウンのアラート
        5.1.2 内部からのモニタリング
        5.1.3 外部からのモニタリング
    5.2 理解
        5.2.1 なぜインスタンスがなくなったのか?
        5.2.2 スパイクは面白い
        5.2.3 ボトルネックの予測
    5.3 改善の戦略
        5.3.1 ベンチマーキングとチューニング
        5.3.2 仮想ハードウェアの利点
    5.4 まとめ

6章 稼働時間の向上
    6.1 計測
        6.1.1 EC2
        6.1.2 ELB
        6.1.3 RDS
        6.1.4 コマンドラインからの次元の利用
        6.1.5 アラート
    6.2 理解
        6.2.1 期待の設定
        6.2.2 コンポーネントの表示
    6.3 改善の方針
        6.3.1 オートスケールしないコンポーネントに関する計画
        6.3.2 Auto Scalingのチューニング
    6.4 まとめ

7章 デカップリングされたシステムの管理
    7.1 計測
        7.1.1 S3
        7.1.2 SQS
        7.1.3 SimpleDB
        7.1.4 SNS
    7.2 理解
        7.2.1 アンバランス
        7.2.2 バースト
    7.3 改善方針
        7.3.1 キューによるバーストの中和
        7.3.2 通知の加速
    7.4 まとめ

8章 今後に向けて
    8.1 他のアプローチ
    8.2 プライベート /ハイブリッドクラウド
    8.3 感謝の言葉

II部 Elastic Beanstalk

9章  Elastic Beanstalkを使ってみよう
    9.1 Elastic Beanstalkとは何か?
    9.2 Elastic Beanstalkで実行できるアプリケーション
    9.3 サインアップ
    9.4 Elastic Beanstalkで実行するアプリケーションの候補
    9.5 Hystqioに決定
        9.5.1 Hystqioのコード
        9.5.2 Hystqioのビルド
    9.6 Elastic BeanstalkへのHystqioのデプロイ
    9.7 まとめ

10章  Elastic Beanstalkでの作業
    10.1 様々な環境での Elastic Beanstalkの利用
    10.2 Elastic Beanstalkの操作
    10.3 Eclipseでの開発
        10.3.1 環境のセットアップ
        10.3.2 アプリケーションのデプロイ
    10.4 Jenkinsを使った継続的インテグレーション
        10.4.1 EC2インスタンスの起動
        10.4.2 Jenkinsのインストール
        10.4.3 Jenkinsのプラグインのインストール
        10.4.4 WARを Beanstalkにデプロイする Javaアプリケーション
        10.4.5 Jenkinsのジョブの作成
        10.4.6 イメージの作成
    10.5 実働用 Environmentのセットアップ
        10.5.1 サーバー(EC2のインスタンス)
        10.5.2 Elastic Load Balancer
        10.5.3 Auto Scaling
        10.5.4 コンテナ
        10.5.5 Configuration
    10.6 新しいバージョンのステージング
        10.6.1 Environmentの起動
        10.6.2 限界の探索
        10.6.3 実働用のEnvironmentの更新
    10.7 まとめ

11章  Elastic Beanstalkのハック
    11.1 インスタンス
        11.1.1 ロギング
        11.1.2 SunJDK
        11.1.3 Nginx
    11.2 インフラストラクチャ
    11.3 まとめ

付録 A Windowsインスタンス
    A.1 コマンドラインツール
    A.2 インスタンスの起動(Request Instances Wizard)
    A.3 EBSボリュームの生成と利用
    A.4 EIPの生成と割り当て
    A.5 ソフトウェアのインストール
    A.6 カスタムイメージの作成
    A.7 RDSforMicrosoftSQLServer
    A.8 RDSインスタンスの生成(DB Instance Wizardの起動)
    A.9 S3/CloudFront
    A.10 S3と CloudFrontのセットアップ
    A.11 まとめ

付録 B AWSに追加された機能
    B.1 Route53
    B.2 Elastic Load Balancing
        B.2.1 SSLサポート
        B.2.2 Sticky Sessionのサポート
        B.2.3 VPCにおけるELBのサポート
    B.3 EC2
        B.3.1 インスタンスタイプの追加
        B.3.2 IO性能の強化
    B.4 RDS
        B.4.1 データベースエンジンの追加
        B.4.2 インスタンスタイプの追加
        B.4.3 バックアップ期間の拡大
    B.5 S3
        B.5.1 静的なサイトのホスト
        B.5.2 有効期限付きのオブジェクト
    B.6 DynamoDB
    B.7 Elastic Beanstalk
        B.7.1 東京リージョンでのElastic Beanstalk
        B.7.2 PHP及び.NETのサポート
        B.7.3 ElastiCache
    B.8 VPC/DirectConnect
        B.8.1 Virtual Private Cloud
        B.8.2 Amazon DirectConnect
    B.9 Elastic MapReduce

付録 C AWSと耐障害性
    C.1 障害は起こるもの
    C.2 AWSの障害対策(Webアプリケーションを例に)
        C.2.1 アベイラビリティゾーンとリージョン
        C.2.2 ELB
        C.2.3 EC2
        C.2.4 RDS
        C.2.5 自動バックアップ
        C.2.6 MultiAZ構成によるフェイルオーバー
        C.2.7 S3
        C.2.8 CloudWatch

付録 D AWSに関する日本語の情報
索引