stks56's tech blog

Keep it simple, stupid.

AWSでwebサービスを構築する上で最低限知っておきたいネットワークの基礎知識

AWSではネットワークの知識は欠かせません。

インターネットで世界基準で定められてる通信規約としてOSI参照モデルTCP/IPプロトコル・スイートという規約があり、これを網羅して学習すればPC間でどうやって通信しているのか、ネットワークの構造は理解できます。

今回はTCP/IPプロトコル・スイートの中でwebサービスを構築するにあたり、知っておかないと苦労するものを説明します。

OSI参照モデルTCP/IPプロトコル・スイートの詳しい解説はこの記事ではしませんが、その中で何を主軸に置いて勉強すればいいのかは分かるかと思います。

f:id:stks56:20190710233436p:plain

オレンジ色に塗られている部分がAWSで特に意識する部分です。

TCP/IPのアプリケーション層ではWebサーバーやWebプログラム担当範囲でAWSに任せる担当ではありません。(唯一どのプロトコルをWebサーバーに投げるかというのを意識する必要があるのでプロトコル名だけは知る必要があります)

ネットワークインターフェース層はハードウェアに責任を負わせる部分でAWS側でよしなになってくれるので知っておく必要はありません。

AWSのサービス毎に説明します。

VPC

AWSアカウント内に自分だけのネットワークを構築するサービスです。 主にインターネット層での知識が必要になります。 VPC本体やサブネットの領域の割り当て、ルートテーブル、インターネットゲートウェイ・NATゲートウェイのルーティングなど、一番ネットワークの知識が要求されるサービスです。 IPとサブネットマスクの知識、CIDR表記等を知らないと構築するのは難しいです。

Route53

DNSの登録や管理をするサービスです。 こちらも主にインターネット層の知識が必要になります。 DNSの登録、DNSレコードセット、DNSのマウントなどIPの知識と共に、DNSレコードの意味を理解してないと難しいかと思います。

ELB、ALB

ロードバランサー(負荷分散システム)を提供するサービスです。 Webサービスの場合ALB(Application Load Balancer)を使うことになると思います。 こちらはインターネット層とトランスポート層プロトコル名の理解が必要になります。 リスナーからターゲットのポートを指定したりなど特にトランスポート層の知識が必要になります。 (ECSなどのコンテナへ接続したい場合、動的ポートマッピングという少し特殊な設定をしたりします)

EC2、RDSなどの各インスタンス

ネットワーク内でいうPC本体を提供するサービスです。 RDSはサービスとして抽象化されていますが実体はPC内のソフトウェアなのでIPアドレス自体は持っています。 webサーバー等でALBからのリクエストを受け付けるのでトランスポート層プロトコル名の理解が必要になります。 SSHインスタンスに接続したりもします。

以上です。

AWSのサービスを使うにあたり、ネットワークの知識が足りてないと構築に手も足も出ない反面、知っているとすんなりサービスを理解できたりするのでやはり何かネットワークを体系的に学べる書籍等で勉強してから構築した方がいいかと思います。

0からネットワークを理解するなら以下のスラスラわかるネットワーク&TCP/IPのきほんがイラスト付きでわかりやすいと思うので是非読んでみてください。(自分はこれだけでは物足りなかった&もっと深掘りをしたいと思ったので次回はマスタリングTCP/IPを購入予定です)

スラスラわかるネットワーク&TCP/IPのきほん 第2版

スラスラわかるネットワーク&TCP/IPのきほん 第2版

マスタリングTCP/IP 入門編 第5版

マスタリングTCP/IP 入門編 第5版