AWS設計スキルアップガイド──サービスの選定から、システム構成、運用・移行の設計まで

書籍情報

発売日 : 2023年07月26日

著者/編集 : 株式会社BFT/佐野 夕弥/相馬 昌泰/富岡 秀明/中野 祐輔/山口 杏奈

出版社 : 技術評論社

発行形態 : 単行本

書籍説明

内容紹介

本書はAWSの「設計」に関することを網羅的に扱っています。AWSでは200以上のサービスを提供していますが、設計という観点から絞り込み、本当に必要なものだけをくわしく紹介しています。さらには、設計を自分の力で進めていくために必要となる知識も記載しています。「誰か」が決めたレールの上で設計・構築・試験・運用をするのではなく、「どうあるべきか」をあなた自身で考え、決めていくための一冊となるはずです。

目次

■第1部 クラウドの基礎知識編
第1章 オンプレミスからクラウドへ
1.1 クラウドとは
クラウドの概念
クラウドのサービス形態
クラウドの利用形態
AWSを選ぶメリット
AWS特有のメリット
クラウド一般のメリット
1.2 インフラ構成の変遷
オンプレミスからクラウドへ
クラウド黎明期(2006年~2010年)
クラウド成長期(2010年~現在)
オンプレミスとクラウド、費用のかかり方の違い
オンプレミスとクラウド、冗長化の違い
オンプレミスのメリットを受けやすいシステムとは
クラウドネイティブなシステムとは
第2章 クラウドのインフラ設計
2.1 インフラストラクチャの設計
非機能要求グレードの活用
非機能要求グレードの例
本書で記載する非機能要求グレードの範囲
「クラウドで非機能設計」の勘どころ
2.2 クラウドで考えるセキュリティ
クラウドセキュリティの責任分界点
責任分界点とは
AWSの責任共有モデル
■第2部 AWSのシステム構成編
第3章 システムの構成
3.1 AWS全体の設計
AWSアカウントを発行する前に
ルートユーザーの使用ケース
AWSアカウントを発行したら行うこと
多要素認証の使用法
AWSアカウントの運用例
単一のAWSアカウントで運用する
複数のAWSアカウントで運用する
ランディングゾーン
AWS Control Tower
AWS Organizations
AWS IAM
IAMポリシーの設計の進め方
IAMグループやIAMロールの設計例
3.2 システム構成図の描き方
図を描く前の注意点
相手に伝わる図を描くためには
必要な情報だけ記載する
アイコンや文字の大きさ・位置をそろえる
左から右、上から下に情報が流れるようにする
余白をしっかりとる
システム構成図例
構成図例(1):アップロードした画像のサムネイル化とサーバレスなWebアプリケーション
構成図例(2):災害対策サイトを大阪リージョンに構築する
構成図例(3):システムを監視し、SNSやチャットへ通知する
3.3 クラウドにかかるコストを見積もる
オンプレミスにかかる多大な費用
AWSの見積り
AWS Pricing Calculatorとは
AWS Pricing Calculatorの使い方
見積りの注意点
見積り例
Windowsの社内システムをクラウドに移行する
第4章 ネットワーク設計
4.1 AWSのネットワーク設計
オンプレミスとは異なる設計の注意点
AWSのネットワーク構成要素
リージョンとアベイラビリティゾーン
VPCとサブネット
セキュリティグループとネットワークACL、AWS Network Firewall
ルートテーブル
VPCエンドポイント
Route 53
Route 53でできること
Route 53のヘルスチェック
VPCフローログ
4.2 外部システムとの接続方法
AWSへVPNで接続する
AWS Client VPNを使用してVPN接続する
AWSサイト間VPNを使用してVPN接続する
AWSへDirect Connectで接続する
Direct Connectの契約
Direct Connectの冗長化──障害発生箇所と対応法
Direct Connectの冗長構成例(1)──非クリティカルなワークロードでの構成
Direct Connectの冗長構成例(2)──クリティカルなワークロードで回復性のある構成
Direct Connectの冗長構成例(3)──バックアップとしてサイト間VPNを使用する構成
第5章 コンピューティング
5.1 コンピューティングサービスの種類と選択
AWSのコンピューティングサービス
Lambda
Lambdaの特徴
Lambdaのセキュリティ
Lambdaの監視
5.2 Amazon EC2
インスタンスタイプの種類と選ぶ基準
インスタンスタイプの種類
インスタンスタイプを選ぶときの注意点
マシンイメージの選択
AMIの種類
オートスケールを活用し、可用性を高める
EC2でオートリカバリ・オートヒーリングを活用し、保守性を高める
インスタンスの費用削減
費用削減対策(1):リザーブドインスタンスの利用
費用削減対策(2):Savings Plansの適用
費用削減対策(3):スポットインスタンスの利用
T系インスタンスの注意点
バーストパフォーマンスインスタンスとは
5.3 AWSのコンテナサービス
コンテナとは
仮想化技術(ホスト型・ハイパーバイザ型)とコンテナの違い
コンテナとEC2の違い
コンテナで構成するサービスの特徴
コンテナでサービスを作るときに気を付けること
AWSでコンテナサービスを構成してみよう
5.4 Amazon ECS
タスク定義
サービス
クラスター
タスク定義の更新
データボリュームを使用する
負荷に応じてスケーリングする
第6章 データベース
6.1 データベースサービスの種類と選択
AWSのデータベースサービス
データベースを選択する流れ
STEP1:WHAT、WHY、HOWを明確にする
STEP2:ワークロードの機能要件を見極める
STEP3:最も重要なワークロードのデータ型やデータアクセスパターンを洗い出す
STEP4:データベースの非機能要件を定義する
選択肢として候補に挙がりやすいRDS、Aurora、DynamoDB
6.2 Amazon RDS
RDSの特徴
RDSの構成
RDS Proxy
RDS Proxyの特徴
RDS Proxyを利用する際の注意点
6.3 Amazon Aurora
Auroraの特徴
Auroraの構成
Auroraのバージョン
Auroraのレプリケーションとフェイルオーバー
スケーリング
Aurora Serverless
Aurora Serverless v2の特徴
Aurora Serverless v2とv1の比較
6.4 Amazon DynamoDB
DynamoDBの特徴
整合性モデル
キャパシティモードとテーブルクラス
DynamoDB Accelerator(DAX)
DynamoDBの設計
テーブルのKeyやIndex
変更データのキャプチャ
第7章 ストレージ
7.1 ストレージの種類と選択
AWSのストレージサービス
Amazon EBS
7.2 Amazon S3
S3の特徴
S3のストレージクラスとライフサイクル
S3のセキュリティ
S3のデータ保護
S3のアクセスポリシーの全体像
バケットポリシー
ユーザーポリシー
パブリックアクセスのブロック
そのほかのセキュリティ設定
S3イベント通知
7.3 Amazon EFS
EFSの特徴
EFSの使い方
EFSのアクセス制御
EFSの可用性とライフサイクル
第8章 アプリケーション統合
8.1 アプリケーション統合サービスの種類と選択
アプリケーション統合サービス
8.2 Amazon API Gateway
API Gatewayの特徴
REST APIエンドポイントの種類
REST APIのデプロイとステージ
REST APIのメソッド設定
API Gatewayの注意点
認証・認可
スロットリング
ベストプラクティス
8.3 Amazon EventBridge
EventBridgeの特徴
イベントバスの種類
アクセス制御
EventBridgeのルールと入力トランスフォーマー
Amazon SNSやSQSとの使い分け
第9章 可用性
9.1 AWSでの可用性の考え方
可用性とは
システムの可用性を高める背景
障害に対する共通の対策
冗長化とは
疎結合化とは
9.2 AWSのSLA(サービスレベルアグリーメント)
AWS上で起き得る障害の種類
AWS側の要因によって起こるもの
利用者側の要因によって起こるもの
いずれの要因でもないもの
AWSがSLA(SLO)を満たせなかった場合
リスクマネジメント
リスクマネジメントのプロセス
第10章 セキュリティ
10.1 Well-Architectedフレームワークの利用
Well-Architectedの6つの柱
セキュリティの7つの設計原則
クラウドセキュリティ6つの領域のベストプラクティス
10.2 セキュリティガイドラインの活用
クラウドの選定に役立つガイドライン「ISMAP」
要件定義や設計で役立つガイドライン
情報システムに係る政府調達におけるセキュリティ要件策定マニュアル
CIS Controls
非機能要求グレード
クラウドサービス提供における情報セキュリティ対策ガイドライン
セキュリティ対応に役立つガイドライン
サイバーセキュリティフレームワーク
STRIDEモデル
10.3 AWSサービスでセキュリティ対策を行う
リスク検出を支援するAWSのサービス
Amazon Inspector
AWS Config
サイバー攻撃からの防御を支援するAWSのサービス
Amazon GuardDuty
AWS Shield
AWS WAF
未知の脅威への対応自動化
■第3部 AWSの運用設計編
第11章 ジョブ管理
11.1 ジョブ実行に関連するサービスの種類と選択
AWSのジョブ実行に関連するサービス
AWS Lambdaでジョブ管理を実装する
11.2 AWS Batch
Batchの特徴
Batchのコンポーネント
配列ジョブとジョブの依存関係
EC2 SpotやFargate Spotを活用しコストを最適化する
11.3 AWS Step Functions
Step Functionsの特徴
ワークフローのタイプ
Step Functionsの状態
Step Functionsの入出力
ステートマシンを作成する
Step FunctionsでWebサイトの正常性確認を行う
S3へのファイル格納をトリガにLambdaを複数実行する
実行の確認・デバッグ
第12章 バックアップ
12.1 クラウドでのバックアップの概要
バックアップ対象の整理
AWSのバックアップ
12.2 AWS Backup
AWS Backupの機能
AWS Backupの概要
AWS Backupのサポート対象
AWS Backupの注意点
第13章 監視
13.1 監視の種類
リソース監視
Amazon CloudWatchで収集されたメトリクスを見る
CloudWatchエージェントを導入してカスタムメトリクスを取得する
ログ監視
AWS費用の監視
通知と復旧
Amazon SNSを利用してアラートを通知する
13.2 ログの管理
EC2インスタンスのログ収集
ログ収集に必要なポリシー
CloudWatchエージェントのインストール
CloudWatchエージェントの設定と起動
CloudWatchエージェント関連でのハマりポイント
マネージドサービスのログ収集
Lambda
API Gateway
RDS
VPC
CloudTrail
ログの保管
ログ保管期間の目安
13.3 既存の監視システムとCloudWatchの連携
Zabbixによる統合監視
SaaSの監視サービスによる統合監視
第14章 構築・運用の自動化
14.1 自動化のメリットとデメリット
自動化導入のメリット
自動化導入のデメリット
14.2 AWSで構築の自動化を推進するサービス
CloudFormationとは
CloudFormationのライフサイクル
CloudFormationのテンプレートを準備する
CloudFormationでスタックを作成する
既存のスタックを変更する
スタックを削除する
CloudFormationテンプレートの便利な書き方
Parameters
Outputs
組込み関数
14.3 AWSで考えるCI/CD
CI/CDとは
CodePipelineでできること
コンテナアプリケーションのCI/CD構成例
Codeシリーズを活用したECSへのCI/CD実装
Lambda関数URL機能を利用したLambda関数のCI/CD実装
■第4部 AWSへの移行設計編
第15章 オンプレミスからの移行
15.1 クラウドリフト・クラウドシフトという考え方
なぜクラウドに移行するのか
クラウドリフト&シフト
クラウドリフトの流れ
(1)クラウド化の目的の定義・現状の課題整理
(2)非機能要求の定義
(3)リフト対象サーバの整理
(4)移行検討
(5)移行ツールの検証
(6)クラウド上でアプリケーションの動作検証
(7)通信要件の整理
(8)クラウドのネットワーク設計
(9)システム構成図の作成
(10)運用関連の変更箇所洗い出し
(11)リフト環境の構築・試験
(12)移行リハーサル
(13)本番移行・移行後の対応
クラウドシフトで必要となるタスク
シフト対象サービスの選別
マイクロサービスに合ったアプリケーションの改修
サーバレスなインフラ基盤の検討
15.2 仮想マシンの移行
オンプレミスのサーバをAWSに移行する
AWS MGNのしくみ
AWS MGNの注意点
AWS MGN以外のAWS移行サービス
15.3 データベースの移行
データベース移行のステップ
RDSへのデータ移行方法
オンプレミスのOracleからRDSのPostgreSQLへデータベースを移行する
オンプレミスのOracleからRDSのOracleへデータベースを移行する
15.4 大量データの移行
「オンライン」のデータ移行
「オフライン」のデータ移行

著者情報

佐野, 夕弥
株式会社BFT
佐野 夕弥
相馬, 昌泰
富岡, 秀明
相馬 昌泰
中野, 祐輔
富岡 秀明
中野 祐輔
山口, 杏奈
BFT
山口 杏奈