本の紹介
AWSのインフラを入門からしっかり学習したいと思い Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版 を読みました、
CHAPTER 1 システム構築をインフラから始めるには
CHAPTER 2 ネットワークを構築する
CHAPTER 3 サーバーを構築する
CHAPTER 4 Webサーバーソフトをインストールする
CHAPTER 5 HTTPの動きを確認する
CHAPTER 6 プライベートサブネットを構築する
CHAPTER 7 NATを構築する
CHAPTER 8 DBを用いたブログシステムの構築
CHAPTER 9 TCP/IPによる通信の仕組みを理解する
Appendix A パケットキャプチャで通信をのぞいてみる
Appendix B ネットワークの管理・運用とトラブルシューティング
(Amazon商品紹介ページから引用)
AWSに特化した内容というよりも 「ネットワークの基礎を AWSを用いて学習する」 という内容でした。
ネットでよく入門者向けにオススメされていますが、それに違わず、基礎からしっかりと分かりやすく記述されていました。
内容も軽めで、AWSに触れたことが有る人なら半日程度で読めると思います。
それだけに、インフラ知識が中級くらいになると物足りないかな?って感じかもしれません
特に勉強になったところ
ネットワークの基礎知識
僕はこれを読むまで、ネットワークに関する知識はほとんど0でした。
そんな僕には、例えば下記のような、ネットワークの基礎知識を図を交えて説明してくれる本書は勉強になりました。
-
CIDER ブロック
- IPアドレスには「ネットワーク部」と「ホスト部」があり、ネットワーク部が属しているネットワークを示し、ホスト部はそのネットワークにある機器を示す。
- ネットワーク部とホスト部の境界が、先頭から何ビットかを示すのが「CIDER」。
-
DNSの仕組み
- URLはそれに対応するIPアドレスが存在し、その対照表がDNSサーバーに置かれる。
- ブラウザからURLにアクセスした際には、トップレベルのDNSサーバーから実際に対照表が置かれているDNSサーバーまで順番に問い合わせが行われ、IPアドレスが解決される。
-
ルーターによるネットワーク間の通信
- ルーターにはテーブルと呼ばれる「どのIPアドレスをどのネットワークにつなぐか」のテーブルがある
また素晴らしいのは、ネットワークの一般論(?)がAWSで実際にはどう適用されるのかを示している点です。
例えば「VPC内におけるパブリックルートテーブルには、同一VPC宛ならlocal、 それ以外はInternetGateway」など。
「AWSでどう作ればいいか」が分かるので、モチベが高く学習することが出来ました
AWSのサブネットの配置を考慮した俯瞰的なインフラ設計
ネットにおけるAWSの解説などでは、EC2やNATに詳細に書かれる記事が多いような気がします。
もしくは、ある程度の基礎的なネットワーク構成を前提とした記事など。
意外と「初心者がWebサービスを作るさいのお手本となるAWSの構成」というのは紹介されてない( ような気が )します。
本書では
- Internet Gateway
- Public Subnet: EC2, NAT
- Private Subnet: DB
というシンプルかつ、実用的(たぶん!)な構成を目標として解説してくれます。
またその説明の過程で
-
Bastionサーバー
- セキュリティの観点から、DBは外部からアクセスできないことが望ましいため private subnet に配置する。
- private subnet は外部からアクセスできないため、public subnet に配置した踏み台(Bastion)サーバーにSSHで入り、そこからさらにSSHでDBに入る。
-
NAT
- private subnet は外部からアクセスできないが、外部に対してアクセスが必要な場合が有る。(例;ライブラリアップデート/API)
- その時のために、外部へのアクセスを NAT を経由して行う。
など、おそらくネットワーク構築の常識となっている点についても解説してくれるのがありがたいです。
ネットワーク疎通確認のためのコマンド
nslookup, dig, ping, curl, traceroute, telnet 等々、様々なコマンドを紹介してくれます。
これまで、なんとなくでしか使ってなかった(「うーん、ネットが繋がってない気がするからpingかなー 」)コマンドについて、 結果から同判断すればよいか(「pingで帰ってるならICMPは繋がるらしい。TCPの80番はどうだろうか」)を少し賢く判断できるようになりました。
特に末尾の Appendixとして記述されている、特定のURLに対するネットワークの疎通確認の順番として
- 他のURLに繋がるかで、クライアントに問題無いか確認する
- dig で ホスト名が解決するか確認する
- ping で 疎通できるか確認する
- telnet で 80番で疎通できるか確認する
という例が挙げられていましたが、これは実務でもすぐに実践したいと思いました。
まとめ
- 半日くらいでサクッと読める
- AWS入門者におすすめ
- ネットワークの基礎を学びたい人におすすめ
- 実務でも使えるネットワークのコマンドの使い方を学べる