プログラマでありたい

おっさんになっても、プログラマでありつづけたい

Amazon Web Services 業務システム設計・移行ガイドの目次

 お正月に筆者陣にてAmazon Web Services 業務システム設計・移行ガイドの最終校正をおこなっていました。これで私の作業は終わりで、後はいよいよ発売を待つ限りです。発売日は、2018年1月20日の予定です。目次も確定したので、細かい部分含めて公開します。

Amazon Web Services 業務システム設計・移行ガイドの目次


Chapter1 AWSサービスの概要
1-1 AWSとは
 AWSのサービスの特徴
 AWSとオンプレミスの違い
  ・所有と利用
  ・キャパシティ設計
  ・クラウドサービスの見分け方
 AWSのメリット
  ・スモールスタートで始められて、駄目だったら捨てられる
  ・インフラ構築のスピードを加速できる
  ・事前に多めのリソースを確保する必要がなくなる
  ・AWSのメリットは、「早めに失敗する」が可能なこと
1-2 AWSのサービスの全体像
 AWSの基本的な考え方
 リージョンとアベイラビリティーゾーン
  ・リージョン
  ・アベイラビリティーゾーン
 VPCとDirect Connect
  ・VPC
  ・Direct Connect
 AWSアカウント
  ・単一アカウント
  ・複数アカウント
 AWSでの監査証跡
  ・AWSにおける監査証跡の対象
 AWSの料金
  ・AWSの料金体系
  ・AWSの無料枠
  ・AWSの料金計算ツール「Simple Monthly Calculator」
  ・一般的な構成での利用料金の内訳
1-3 主なAWSサービス
 コンピューティングサービス
  ・仮想サーバ「EC2」
  ・サーバレスなコンピュータ処理基盤「Lambda」
 ストレージサービス
  ・オンラインストレージボリューム「S3」
  ・ファイルストレージボリューム「EFS」
  ・S3へのデータ転送機能「Storage Gateway」
 データベースサービス・データ処理サービス
  ・Amazon RDS
  ・AWSのNoSQLサービス
 ネットワークサービス
  ・プライベートネットワーク機能「VPC」「Direct Connect」
  ・DNSサービス「Route 53」
  ・CDNサービス「CloudFront」
 AWSの管理ツール
  ・テンプレートによる自動構築ツール「CloudFormation」
  ・AWSの利用状態の管理ツール「CloudTrail」「Config」
  ・サポートサービス「Trusted Advisor」「AWSサポート」
 AWSへ移行するためのサービス
  ・データ移行サービス「DMS」
  ・大量データの持ち込みサービス「Snowball」
 アカウント管理
  ・AWSのアカウントの種類
  ・AWSアカウント
  ・IAMユーザー
  ・組織アカウント(AWS Organizations)
 セキュリティツール
  ・継続的セキュリティ評価ツール「Inspector」
  ・無料のサーバ証明書発行ツール「Certificate Manager」
  ・DDoSやアプリケーションレイヤーの防御「WAF」「Shield」
 通知&監視サービス
  ・通知サービス「SNS」
  ・監視サービス「CloudWatch」

Chapter2 全体設計(管理方針と移行計画)
2-1 アカウントの管理の考え方
 AWSアカウントとIAMユーザー
  ・AWSアカウント
  ・IAMの構造
  ・一時的な権限付与とクロスアカウントロール
 複数のAWSアカウントを管理する
  ・一括請求機能「Consolidated Billing」
  ・組織アカウント(AWS Organizations)
2-2 AWSと監査証跡
 システムのログ・操作履歴
 AWSのログ・操作履歴
2-3 AWSのネットワーク設計の考え方
 VPCの位置づけと社内ネットワークとの接続方法
  ・社内ネットワークの形態
  ・VPCをどう接続するか
  ・拠点とVPCの接続
 複数のAWSアカウント間の接続方法
  ・用途別のAWSアカウントの分類と接続方法
  ・VPCピアリングを利用したAWSアカウント間の接続
2-4 AWSへのシステム移行
 クラウドジャーニー:移行のステップ
 AWS移行のパターン
  ・単純移行
  ・カスタマイズ
  ・最適化
 AWSへの移行計画
  ・フィット&ギャップ分析
  ・導入コンサルティング(AWSプロフェッショナルサービス)
  ・机上検証は最小限に
 AWSの移行サービス
  ・サーバの移行
  ・データの移行
  ・データベースの移行
2-5 AWS上のシステムの監視・運用
 AWS上のシステムの監視の考え方
  ・システムの監視対象
  ・CloudWatchを使った監視
  ・SNSを使った通知
 AWSの運用サービス
  ・インスタンスの状態管理・運用「Systems Manager」
  ・インスタンスのセキュリティ評価「Inspector」
  ・サポートサービス

Chapter3 アカウント管理と権限付与
3-1 AWSのアカウント管理
 効率的にアカウントを管理する
 AWS Organizations
  ・AWS Organizationsを用いたAWSアカウントのグルーピング
  ・AWS Organizationsの機能
  ・アカウントの作成
  ・請求の一元管理
  ・アカウントで利用するAWSサービスに制限をかける
  ・JSON形式の権限設定
  ・ポリシージェネレータ
 AWS Organizationsの導入とポリシーの設定
  ・マスターアカウントでOrganizationを作成
  ・Organizationに紐付けるアカウントの設定
  ・Organization Unitの作成と階層構造の定義
  ・サービスコントロールポリシーの作成とアタッチ
 AWS Organizationsのベストプラクティス
  ・マスターアカウントでCloudTrailを有効にする
  ・マスターアカウントはアカウント管理専用にする
  ・Organization Unitにサービスコントロールポリシーをアタッチして権限を制限する
・Organization内でホワイトリストとブラックリストを混在させない
 アカウント管理のロードマップ
  ・管理主体と管理する範囲を決定する
  ・Organizationを管理する担当を決定する
  ・権限付与のルールを作成する
  ・Organization Unitの構成設計を行う
3-2 AWSの環境分離
 環境をアカウントで分割するメリット
  ・運用面のメリット
  ・コスト管理におけるメリット
 環境をアカウントで分割するデメリット
  ・運用面のデメリット
  ・コスト面のデメリット
 特別なポリシーがない場合の分割のベストプラクティス
3-3 AWSの権限管理
 IAM(Identity and Access Management)
  ・IAMポリシー
  ・IAMポリシーの作成
  ・IAMユーザーとIAMグループ
  ・rootユーザーの扱い
 マネジメントコンソール以外からAWSサービスを操作する
  ・アクセスキーとシークレットキーを用いて、AWSリソースを操作する
  ・アクセスキーとシークレットキーの作成
  ・CLIのインストール
  ・CLIの設定(アクセスキー・シークレットキーの設定)
  ・AWSリソースへのアクセス
 キー漏洩の対策
  ・IAMロール
 Amazon Cognito
  ・Cognito Identity
  ・Cognito Identityを用いた認証と認可の流れ
  ・User Pools
  ・Federated Identities
  ・Cognito Sync
 AWSにおける権限管理のベストプラクティス
  ・役割ごとのIAMグループで権限を管理する
  ・利用者ごとにIAMユーザーを払い出す
  ・割り当てる権限は、必要最低限のものにする
  ・権限やIAMユーザーについては定期的に棚卸しし、最適な状態を保つこと
  ・その他、これまでに記載してきた下記のルール

Chapter4 ネットワーク接続の設計・構築・維持管理
4-1 AWSネットワークの全体構成
 AWSネットワークの構成要素
  ・VPC
  ・インターネットにおけるAWSサービスへの接続
 通信要件
  ・通信内容の整理
 物理構成
  ・VPCの位置づけ
  ・VPCをどこに接続するか
  ・インターネットをどこに接続するか
 論理構成
  ・アドレスアサイン
  ・VPCが幾つ必要か
 サービスの選定
  ・インターネットVPN
  ・Direct Connect
4-2 ネットワーク設計
 アドレス設計
  ・VPCに割り当てるCIDRブロック
  ・サブネット
 ルーティング設計
  ・AWSのルーティング要素
  ・ルートテーブル
  ・local
  ・インターネットゲートウェイ(Internet Gateway)
  ・VPNゲートウェイ(Virtual Private Gateway:VGW)
  ・ピアリング接続
  ・稼働中のEC2インスタンス
  ・VPCエンドポイント
 フィルタリング設計
  ・ルーティングによるフィルタリング
  ・VPCのフィルタリング機能を用いたフィルタリング
 名前解決とDHCPオプションセット
  ・グローバル(インターネット)への名前解決の必要性
 ロードバランサー設計
  ・ELBのメリット・デメリット
  ・仮想アプライアンスのメリット・デメリット
  ・ELB(ロードバランサーサービス)
  ・ELBの基本的な機能
  ・ELB利用時のポイント
 パケットキャプチャとVPCフローログ
 Route 53
  ・権威DNSサーバ機能
  ・ルーティング機能
  ・ヘルスチェック機能
  ・ドメインの登録(取得)

Chapter5 システム設計とサービスの導入
5-1 AWSサービスを利用したシステム設計
 オンプレシステムとの連携を伴わないECサイト
  ・アカウント
  ・VPC、サブネット
  ・Webサーバレイヤー
  ・データベースレイヤー
  ・バッチサーバ
 ハイブリッド環境で運用する基幹システム
  ・インターネット接続とセキュリティ
  ・紹介するアーキテクチャパターン
5-2 Web可用性向上パターン
 ELB
  ・ELB自体のスケーリング
  ・ヘルスチェック機能
  ・スティッキーセッション
  ・Connection Draining
 Auto Scaling
  ・Auto Scalingの設定項目
  ・Auto Scalingグループ
  ・起動設定
  ・Scalingポリシー/プラン
 Web可用性向上パターン
  ・パターン導入のポイント
 ELBとAuto Scalingの利用方法
  ・ELBの利用方法
  ・Auto Scalingの利用方法
  ・Auto Scaling設定の確認
5-3 コンテンツキャッシュパターン
 Amazon CloudFront
 CloudFrontとAWSサービスの連携
  ・各種セキュリティサービスとの連携
  ・Amazon API Gatewayとの連携
  ・Lambda@Edgeとの連携
 コンテンツキャッシュパターン
  ・キャッシュTTLを正しく設定する
  ・Popular Object Reportを参考に定期的に設定の見直しを行う
  ・オリジンサーバの障害を考慮した設計を行う
  ・CloudWatchを設定してアラームを受け取る
 CloudFrontの利用方法
  ・S3の静的ホスティングの設定
  ・CloudFrontの設定
  ・CloudFrontの設定の確認
5-4 DB可用性向上パターン
 RDS
  ・RDSを用いるメリット
  ・RDSを用いるデメリット
  ・「RDS」vs「. DB on EC2 with CLUSTERPRO」
 DB可用性向上パターン
  ・運用のポイント
  ・マスター・スレイブ構成にすることでメンテナンス時間を短くする
 RDSの利用方法
  ・マルチAZにマスターDBとスレイブDBを配置する
5-5 インメモリキャッシュパターン
 ElastiCache
  ・ElastiCache for Memcachedの特徴
  ・ElastiCache for Redisの特徴
 インメモリキャッシュパターン
  ・導入する際のポイント
 ElastiCacheの利用方法
  ・Memcachedの作成
  ・Memcachedの設定
5-6 ジョブサーバパターン
 ジョブサーバパターン
  ・構築のポイント
 NATゲートウェイの利用方法
  ・NATゲートウェイの作成
  ・ルートテーブルの編集
 VPCエンドポイントの利用方法
  ・VPCエンドポイントの作成
  ・VPCエンドポイントの設定
5-7 ハイブリッド利用パターン
 インターネット接続設計
  ・VPC内からインターネットへアクセス
  ・サブネット設計
 ハイブリッド利用パターン
  ・AWS環境への移行方法
  ・システムの一部をAWS環境に移行するパターン
  ・システム全体をAWS環境に移行するパターン
5-8 ファイルサーバ利用パターン
 ファイルサーバ利用パターン
  ・全体の構成
  ・ネットワーク設計
 Storage Gatewayの利用方法
  ・ファイルゲートウェイサーバの作成
  ・バックアップ先のS3の設定
  ・クライアントからファイルゲートウェイをNFSマウント
  ・注意事項
5-9 大規模データ分析パターン
 RedshiftとBIツールを利用した大規模分析
 大規模データ分析パターン
 Redshiftの利用方法
  ・サンプルデータのS3アップロード
  ・テーブルの作成とデータのインポート
  ・サンプルデータのロード
  ・BIツールからのRedshift接続
5-10 インフラ構築を自動化する
 AWSのインフラ構築自動化サービス
  ・AWS CloudFormation
  ・AWS OpsWorks
  ・AWS Elastic Beanstalk
  ・サービスの使い分け
 CloudFormationを用いたインフラ自動構築
  ・CloudFormationの機能概要
  ・CloudFormationの組み込み関数
  ・セクション 268 CloudFormationのベストプラクティス
  ・セキュリティ面のベストプラクティス
  ・テンプレート設計・作成面のベストプラクティス
  ・運用面のベストプラクティス
 AWS OpsWorks
  ・OpsWorksスタック
  ・OpsWorks for Chef Automate
 AWS Elastic Beanstalk
  ・All at Onceデプロイ
  ・Rollingデプロイ
  ・Rolling with additional batchデプロイ
  ・Immutableデプロイ
  ・URL Swapでの切り替え
  ・Route 53での切り替え

Chapter6 移行テクニック
6-1 移行する資産
6-2 データの移行
 データ移行にかかる時間の目安
 AWSのサービスを使わないデータ移行
  ・OSコマンドを使ったデータ移行
  ・CLIを使ったデータ移行
 AWSのサービスを使ったデータ移行
  ・Storage Gatewayを使う
  ・Snowballを使う
  ・Snowball Edge
  ・Snowmobile
6-3 仮想サーバを移行する
 AWS Server Migration Service
  ・SMSの構成概要
  ・VM Import/Exportとの違い
  ・SMSの特徴
  ・OSのライセンス
6-4 データベースを移行する
 AWSのサービスを使わずにデータベースを移行する
 AWS Database Migration Service
  ・DMSの構成概要
  ・DMSとオンプレミスサーバ間の接続経路
  ・同一データベースシステム間の移行
  ・異なるデータベースシステム間の移行
  ・データの移行と移行後のデータ同期

Chapter7 運用監視の設計・実施
7-1 システムを監視する
 CloudWatchを使う
  ・標準のメトリクスで監視する
  ・カスタムメトリクスを使って監視する
  ・オンプレミスサーバの監視との比較
  ・AWS特有の監視
 CloudWatch Logsを使う
  ・エージェントのインストール
  ・監視対象ログの設定
  ・エージェントの起動
  ・CloudWatch Logsへ転送されたログの確認
  ・特定文字列の検知
  ・CloudWatch Logsの他サービス連携
 CloudWatch Eventsを使う
  ・EC2インスタンスのスケジュールイベント通知
  ・イベントバス
7-2 システムを運用する
 AWSサポート
  ・インフラストラクチャイベント管理(IEM)
  ・サポートへの問い合わせ方法と応答時間
  ・リソース制限の増加申請
  ・サードパーティ製ソフトウェアサポート
 AWS Personal Health Dashboardを使う
 AWS Trusted Advisorを使う
  ・チェック結果の通知
  ・サービス利用制限のチェック
 Amazon Inspectorを使う
  ・Inspectorの実行
 Amazon EC2 Systems Managerを使う
  ・SSMが提供するサービス
7-3 システムの履歴を管理する
 AWS CloudTrailを使う
  ・CloudWatch Logとの連携
  ・CloudTrailを設定する
 AWS Config/Config Rulesを使う
  ・サービス連携
  ・ルールの作成
  ・Configを設定する
  ・履歴の確認

Amazon Web Services 業務システム設計・移行ガイドの目次の解説



1章 AWSサービスの概要

 1章は、AWSの基本的な考え方やサービスの説明です。オンプレに較べてのAWSや、リージョンやアベイラビリティゾーンなど基本的な概念から、AWSアカウント・ネットワーク・料金体系など一番基本的な部分を説明の上で、主要なサービスを説明しています。注目して欲しいのが、ピックアップしたサービスです。EC2やS3、RDSというお馴染みのもの以外にも、Snowball・DMS・AWS Organizations、Inspectorなど余り耳にする機会が少ないものもあります。これは、企業内で導入する際には是非抑えておいて欲しいサービスを選んだ結果です。この辺りのサービスを解説している書籍は、結構少ないのではと思っています。

2章 全体設計(管理方針と移行計画)

 2章は全体設計ということで、本書の基本的な考え方を紹介しています。AWSアカウント管理、監査証跡、ネットワーク設計、システム移行、監視・運用の5つの節で構成されています。ここで概要を説明した上で、後の章で個別・具体的に構築方法含めて紹介しています。

f:id:dkfj:20180108162954p:plain

3章 アカウント管理と権限付与

 3章からがメインのコンテンツです。3章は、AWSのアカウントの管理でAWS Organizationsからアカウント分割の方針、IAM・Cognitoと紹介しています。ここでは概念だけではなく、具体的な設計、ポリシー例を挙げたいます。AWS Organizationsについては、基本的な機能から具体的なサービス制限の仕方、ベストプラクティス等にも言及しています。何とAWSのアカウントだけで、50ページを割いているいます。

f:id:dkfj:20180108162448p:plain

4章 ネットワーク接続の設計・構築・維持管理

 4章はAWSにおけるネットワーク設計です。AWS内のVPC内に留まらず、オフィス・データセンターと全体がある中で、AWSのネットワークをどう位置づけるか、その視点での設計の紹介となっています。AWS本は数あれど、この視点で解説している本は少ないと思います。ここの部分を、2012年からAWS Direct Connect ソリューションプロバイダーとしてサービスを運用・提供してきた実担当者によって、詳しく解説されています。世の中、Direct Connectを使ったことがある人は数多くいると思いますが、Direct Connectのサービスを提供している人は殆どいません。そういった意味で、現場での知識・ノウハウが沢山散りばめられています。

f:id:dkfj:20180108162150p:plain

5章 システム設計とサービスの導入

 5章は具体的なシステム設計です。企業内で使われることが多い構成を念頭に、どのように設計するのがよいのかパターン別に紹介しています。AWS単体の設計のみならず、オンプレミスとのハイブリッド構成の場合どうするかといった事が随所に書かれています。一番ニーズの多い、WebサーバやDBサーバの可用性やスケーリングの方法、大規模運用であれば欠かせないコンテンツキャッシュなどWeb寄りの話から、ジョブサーバやファイルサーバ、或いはハイブリッド構成の場合にどのようにインターネットに接続させるかなど実用的なテーマもあります。それ以外にも、Redshiftによる大規模データ分析や、AWSのサービスを利用したインフラ構築の自動化など、様々なテーマがあります。この章が読んでて一番楽しい部分だと思います。

f:id:dkfj:20180108165722p:plain

6章 移行テクニック

 6章は一転して、移行の話です。多くの場合、企業内のシステムは新規で一から作るのではなく、既存のシステムからの移行、或いは連携が必要になってきます。もっと言うと、データをどう移行するのか。そういった時に直面するのが物理の壁です。例えクラウドサービスといえども、何十TBのデータを一瞬で移行することは出来ません。物理的なファシリティの制約を受けます。例えば、既存のデータセンターの回線が100MBとすると、その回線を専有したとしても10TBのデータを移行するのに1週間以上掛かる訳ですね。現実的には、専有は出来ないし、1週間システムを止めておける訳でもないのでドンドン差分データが増えていきます。
 では、どうしたら良いのかというのを、あの手この手で解説しています。主にデータの移行・仮想サーバの移行・データベースの移行の3つに別けられていますが、根底とする部分は同じです。サービス止めないで、システム移行してねとサラッと言われ続けてきた辛みに対するノウハウの結集です。

7章 運用監視の設計・実施

 最後の7章は、AWS上にシステムを構築/移行した後の運用を見据えた話です。オンプレの運用監視と何が同じで違うのか、その視点での説明です。CloudWatchなど比較的お馴染みの話から、AWSサポートの使い方やTrusted Advisorなど運用始まったら必ず使うサービスや、Inspector, EC2 System Managerなどこれから主流になっていくサービスにも言及しています。

感想


 改めて目次を見返すと、我ながらよくまとまっていると思います。この内容は、私一人では決して書けなかったです。AWSの各分野のプロフェッショナルが集結した結果、この本が出来上がったと思います。最後にはなりますが、AWSの設計をする上で、ただ1つの正解というのはありません。利用者を取り巻く環境・制約によって、最適な解は変わってきます。本書では、その前提に立ちつつも、できるだけ多くの人に役立つよう企業への導入時のあるあるを思い出しながら書いています。是非、みなさん読んでみて感想きかせてください。


See Also:
「Amazon Web Services 業務システム設計・移行ガイド」という本を書きました
「この一冊で全部わかるWeb技術の基本」の監修をしました
「データを集める技術」という本を執筆しました
アプリケーションエンジニア向けのAWS本を書きました
『Amazon Web Services パターン別構築・運用ガイド』を書きました
『Rubyによるクローラー開発技法』を書きました