Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門

いちからわかるクラウド入門

AWSを用いたクラウドでのシステム開発手法がわかるAWSの入門書です。機能が多くあるAWSはネットにかなりの情報が溢れているので、本書を使うことで効率よく基礎を固めることができ時間短縮にもなります。開発経験のない初心者にもおすすめの1冊です。

WINGSプロジェクト阿佐志保 (著), 山田祥寛 (監修)
出版社: 翔泳社; 1版 (2016/6/16)、出典:出版社HP

本書内容に関するお問い合わせについて

このたびは翔泳社の書籍をお買い上げいただき、誠にありがとうございます。弊社では、読 者の皆様からのお問い合わせに適切に対応させていただくため、以下のガイドラインへのご協力をお願い致しております。下記項目をお読みいただき、手順に従ってお問い合わせください。

●ご質問される前に
弊社Webサイトの「正誤表」をご参照ください。これまでに判明した正誤や追加情報を掲載しています。

正誤表 https://www.shoeisha.co.jp/book/errata/

●ご質問方法
弊社Webサイトの「刊行物Q&A」をご利用ください。

刊行物Q&A https://www.shoeisha.co.jp/book/qa/
インターネットをご利用でない場合は、FAXまたは郵便にて、下記“翔泳社愛読者サービス センターまでお問い合わせください。
電話でのご質問は、お受けしておりません。

●回答について
回答は、ご質問いただいた手段によってご返事申し上げます。ご質問の内容によっては、回答に数日ないしはそれ以上の期間を要する場合があります。

●ご質問に際してのご注意
本書の対象を越えるもの、記述個所を特定されないもの、また読者固有の環境に起因するご質問等にはお答えできませんので、予めご了承ください。

●郵便物送付先およびFAX番号
送付先住所 〒160-0006 東京都新宿区舟町5
FAX番号  03-5362-3818
宛先 (株)翔泳社 愛読者サービスセンター

※本書に記載されたURL 等は予告なく変更される場合があります。
※本書の出版にあたっては正確な記述につとめましたが、著者や出版社などのいずれも、本書の内容に対してなんらかの保証をするものではなく、内容やサンプルに基づくいかなる運用結果に関してもいっさいの責任を負いません。
※本書に掲載されているサンプルプログラムやスクリプト、および実行結果を記した画面イメージなどは、特定の設定に基づいた環境にて再現される一例です。
※本書に記載されている会社名、製品名はそれぞれ各社の商標および登録商標です。

はじめに

従来の業務システムでは、自社でデータセンターを構え、オンプレミス環境でウォーターフ ォール手法を使って開発を進めるのが一般的でした。しかしながら、クラウドサービスの普及により「クラウドファースト」と呼ばれる、クラウドありきのシステム開発スタイルが増えています。クラウドを利用することで、単なるコスト削減だけでなく、開発生産性の飛躍的な向上や先進的な技術を使った新ビジネスへの取り組みなど、数えきれないほどのメリットを享受 できるので、今後、この流れが加速することは間違いありません。

本書は、Amazon Web Services (AWS)を初めて使う人に向けて、業務システムで広く使われているJavaによるWebシステムを構築する手順を、GUIを使って説明した入門書です。

インフラ構築経験が少ない若手エンジニアを対象に、サーバー構築/ネットワーク技術/セ キュリティ/運用などのインフラの基礎概念を図解しています。

本書の特徴は、オンプレミスで慣れ親しんだアーキテクチャーでのシステムを、AWSの基 本サービスを使って構築する手順を説明しているところです。

AWSの基本的な考え方や操作方法に十分に慣れたところで、本格的にクラウドに最適化したシステムを構築して、無理のないクラウド化が進めばよいと考えています。

業務システムの多くがクラウドに移行すると、それにかかわるエンジニアの働き方も大きく変わるはずです。10年先の未来の世界を創り出す読者のみなさんとともにその一翼を担えると、とてもハッピーです。

最後になりましたが、タイトなスケジュールの中、多大なるサポートをいただきました WINGSプロジェクトの山田夫妻、常に筆者の傍らで執筆の邪魔にご尽力いただきました息子 のけいたくん、そして執筆中筆者を支え続けてくれた骨盤矯正椅子に、心から感謝いたします。

2016年4月吉日
阿佐志保

WINGSプロジェクト阿佐志保 (著), 山田祥寛 (監修)
出版社: 翔泳社; 1版 (2016/6/16)、出典:出版社HP

本書を読む前に

対象読者
本書は、次のような方を対象としています。

・コンピューターの基礎知識がある方
・JavaによるWebアプリ開発の基礎知識がある方
・オンプレミスサーバー(物理環境)でのインフラ構築の経験がない方

動作檢証環境
本書は、以下の環境で動作を確認しています。

・Windows 8.1 Pro(64ビットオペレーティングシステム x64ペースプロセッサー )
・Intel Core i5-3317U CPU 1.7GHz
・RAM 4.0GiB
・ブラウザー Google Chrome

サンプルプログラムについて
サンプルソースファイルは、著者サポートサイト「サーバサイド技術の学び舎・WINGS」 (http://www.wings.msn.to/) – [ 総合 FAQ/訂正&ダウンロード」からダウンロードできます。ダウンロードファイルを解凍後、各章の手順にしたがい、AWS上にデプロイしてください。

目次

はじめに
本書を読む前に

1章 クラウドの役割
1.1 システム基盤と従来インフラの問題点
1.1.1 システム基盤とは
NOTE 業務システムで利用される主なサーバー
1.1.2 データセンター保有の問題点
1.2 クラウドシステムとは
1.2.1 クラウドのサービス体系 1.2.2 クラウドは万能か?
NOTE クラウドファースト
1.3 主要なクラウドサービス
1.3.1 Amazon Web Services

1.3.2 Microsoft Azure
1.3.3 IBM SoftLayer / Bluemix
1.3.4 Google Cloud Platform
1.3.5 さくらのクラウド
1.3.6 ニフティクラウド
1.4 クラウドサービスの活用例
1.4.1 ビッグデータ
1.4.2 業務システムでのクラウド活用
1.4.3 モバイルアプリのパックエンド機能
1.4.4 ディザスタリカバリシステム

2章 AWSの基本とアカウント登録
2.1 Amazon Web Servicesのサービス
2.1.1 コンピューティング関連のサービス
2.1.2 ストレージ&コンテンツ配信関連のサービス
2.1.3 データベース関連のサービス
2.1.4 ネットワーク関連のサービス
2.1.5 その他のサービス
2.2 AWSクラウドデザインパターン
2.2.1 Multi-Serverパターン(サーバーの冗長化)
2.2.2 Scale Upパターン(サーバーの拡張/縮小)
2.2.3 DB Replicationパターン(データベースの複製)
2.2.4 Functional Firewallパターン(階層別アクセス)
2.3 AWSのデータセンター
2.3.1 リージョン
2.3.2 アベイラビリティゾーン(AZ)
2.4 AWSアカウント登録と利用開始
2.4.1 AWSアカウントの登録
2.4.2 AWSの課金と無料利用枠
2.5 AWSの開発ツール
2.5.1 AWSマネージメントコンソール
NOTE Webマネージメントコンソールのショートカット作成
2.5.2 AWSコマンドラインインターフェイス(CLI)
2.5.3 ソフトウェア開発キット(SDK)
2.5.4 統合開発環境(IDE)のプラグイン

3章 Webサーバーの構築
3.1 WebのしくみとHTTP通信の基本
3.1.1 Webアプリとは
3.1.2 Webサーバーへのリクエストとレスポンス
3.1.3 WebサーバーへのアクセスとURLの書式
3.1.4 IPアドレスとドメイン名
3.1.5 HTTP通信のしくみ
NOTE ウェルノウンポート
3.2 S3を使ったWebサイトの構築
3.2.1 Amazon Simple Storage Service (Amazon S3) とは
3.2.2 S3の基本用語 3.2.3 S3を使ったWebサイト構築
NOTE 機密情報の取り扱い
3.3 EC2を使ったWebサーバー構築
3.3.1 Amazon Elastic Compute Cloud (Amazon EC2) とは
NOTE サイジングの難しさ
3.3.2 EC2の基本用語
3.3.3 EC2インスタンスの起動
3.3.4 EC2インスタンスの状態確認
3.3.5 Webサーバーのインストール
NOTE キーファイルの管理
NOTE パッケージ管理システム
3.3.6 Webコンテンツのアップロードと動作確認
NOTE SCP
3.3.7 EC2インスタンスの開始/停止/再起動/削除
3.4 ELBを使った負荷分散
3.4.1 カスタムAMIによるEC2インスタンスの生成
3.4.2 ELBによる負荷分散システム構築
3.4.3 ELBの動作確認
3.5 Elastic IPを使った独自ドメインでのサイト運用
3.5.1 固定IPアドレス(Elastic IP)の割り当て
NOTE Elastic IPアドレスの制限
3.5.2 Route 53によるDNSサーバー設定
3.6 CloudFrontを使ったデータ配信
3.6.1 CloudFrontとは
3.6.2 CloudFrontを使ったWebコンテンツ配信

4章 Webアプリケーションサーバーの構築
4.1 Webアプリのアーキテクチャーの基本
4.1.1 Webシステムアーキテクチャー
4.1.2 AWSでのWebシステムアーキテクチャー
NOTE サーバーレスアーキテクチャー
4.2 アプリ開発環境の構築
4.2.1 統合開発環境
4.2.2 EclipseとAWS Toolkitのインストール 4.2.3 AWS Toolkitの設定
NOTE 認証情報の管理
4.3 MySQLによるデータベースサーバー構築
4.3.1 Amazon Relational Database Service(RDS)とは
NOTE リレーショナルデータベース
NOTE ADO.NET
NOTE IOPS
4.3.2 セキュリティグループの作成
4.3.3 パラメータグループの作成
NOTE オプショングループとサブネットグループ
4.3.4 RDSのインスタンス生成
NOTE RDSの無料利用枠
4.3.5 データの登録(AWS Toolkitでの実行)
NOTE ERT
4.3.6 データの登録(MySQLコマンドラインでのSQL実行)
4.4 TomcatによるWebアプリケーションサーバー構築
4.4.1 Apache Tomcatとは?
4.4.2 セキュリティグループの作成
4.4.3 EC2のインスタンス起動
NOTE AWSマネージメントコンソールからEC2インスタンスを生成する場合
4.4.4 Apache Tomcatのインストール
4.4.5 JDBCドライバーのインストール
NOTE JDBCとは
4.4.6  Webアプリのデプロイ
4.4.7 Tomcat 8の起動
4.4.8 Webアプリの動作確認
4.4.9 Webアプリケーションサーバー用AMIの作成

5章 ネットワークの構築
5.1 ネットワークの基礎技術
5.1.1 ネットワークアドレス
NOTE IPアドレスの枯渇
NOTE ネットワークアドレス部とホストアドレス部の考え方
5.1.2 ネットワークプロトコル
5.1.3 ファイアーウォールとルーター
5.2 セキュリティグループによるパケットフィルタリング
5.2.1 セキュリティグループとは
5.2.2 セキュリティポリシーの検討
NOTE ファイアーウォールの設定
5.2.3 EC2セキュリティグループの修正手順
5.2.4 RDSセキュリティグループの修正手順
5.2.5 セキュリティ設定の動作確認
5.3 VPCによる仮想ネットワーク構築
5.3.1 Amazon VPCとは
5.3.2 ネットワーク構成の検討
5.3.3 仮想ネットワーク(VPC)の作成
5.3.4 仮想ルーター(インターネットゲートウェイ)の作成
5.3.5 ファイアーウォール(セキュリティグループ)の作成
5.3.6 サーバー(インスタンス)の作成
5.3.7 ロードバランサーの作成
5.3.8 メンテナンスのためのネットワーク構成
5.3.9 メンテナンス環境の動作確認

6章 AWSのセキュリティ
6.1 セキュリティの基礎
6.1.1 セキュリティとは
NOTE Webアプリに対する代表的な攻撃
6.1.2 物理的なセキュリティ対策
6.1.3 アカウント管理
6.1.4 データの暗号化
6.1.5 ユーザー教育
6.1.6 セキュリティ監査
NOTE 第三者認証について
6.1.7 AWSの共有責任モデル
6.2 IAMによるユーザーアカウント管理
6.2.1 IAMとは
6.2.2 AWSのユーザーアカウント
6.2.3 多要素認証(MFA)の設定
NOTE ワンタイムパスワード
6.2.4 IAMアカウントの作成
6.2.5 IAMグループの作成
6.2.6 パスワードポリシーの設定
6.3 データの暗号化
6.3.1 EC2インスタンスへのSSH接続
NOTE キーペアのインポート
6.3.2 S3のデータ暗号化
6.3.3 RDSのデータ暗号化

7章 システム運用
7.1 システム運用の基礎
NOTE SLA
7.1.1 キャパシティ管理
7.1.2 可用性管理
7.1.3 構成管理/変更管理
7.1.4 サービス運用
NOTE 統合運用管理ツール
7.2 CloudWatchによる監視
7.2.1 CloudWatchとは
7.2.2 EC2インスタンスのリアルタイム監視
7.3 CloudFormationによる構成管理
7.3.1 CloudFormationとは
NOTE AWSによる構成管理
7.3.2 WordPress環境の自動構成
7.4 データのバックアップとリストア
7.4.1 EC2のデータバックアップとリストア
7.4.2 RDSのデータバックアップとリストア
7. 5 課金管理
7.5.1 利用料金の確認

8章 Dockerコンテナー実行環境の構築
8.1 Dockerとは
8.1.1 Dockerとは
NOTE ソフトウェアの移植性(ポータビリティ)
8.1.2 仮想化技術とは
NOTE ソフトウェアの相互接続性(インターオペラビリティ)
8.1.3 Dockerの機能
8.2 Dockerのインストール
8.2.1 Dockerの提供するコンポーネント
NOTE Docker for Windows / Mac 8.2.2 Windowsクライアントへのインストール
8.2.3 Dockerで”Hello world”
8.3 Dockerイメージの作成
8.3.1 Dockerfileとは
8.3.2 Dockerfileの作成
NOTE 参照実装とは
8.3.3 DockerfileからのDockerイメージの作成
8.4 Dockerイメージの公開
8.4.1 Docker Hubのアカウント登録
8.4.2 Docker Hubへの公開
NOTE DockerでJavaを実行する時の注意
8.5 AWSでのDockerコンテナー実行
8.5.1 EC2を使う方法
8.5.2 ECSを使う方法
8.5.3 Elastic Beanstalk
8.6 EC2でのDocker実行環境の構築
8.6.1 EC2へのDockerインストール
NOTE コマンドでDockerの実行環境を構築するには
8.6.2 Dockerコンテナーの実行
8.6.3 Dockerコンテナーの基本操作
8.7 EC2 Container ServiceによるDocker実行環境の構築
8.7.1 EC2 Container Serviceとは
8.7.2 Dockerクラスタの構築
8.7.3 Dockerクラスタの運用

索引
著者紹介

WINGSプロジェクト阿佐志保 (著), 山田祥寛 (監修)
出版社: 翔泳社; 1版 (2016/6/16)、出典:出版社HP