AWSの仕組みがキーワードベースで理解できるようまとめてみた1

AWSの仕組みがキーワードベースで理解できるようまとめてみました。

1. AWS

AWSとは、クラウドコンピューティングを使ったサービスです。

AWSとはAmazon Web Servicesの略で、 Amazonが提供している100以上のクラウドコンピューティングサービスの総称です。


クラウドコンピューティングとは、簡単に言えば、サーバーやネットワークなどをインターネット経由で貸してくれるサービスで、 手元に1台のPCとインターネットに接続できる環境さえあれば、いつでもどこでもはじめることができます。

2. リージョン


大まかに言うと「地域」のことです。

AWS は世界中にサーバーを持っており、リージョンという大きな単位でまとまっています。

東京リージョン、ソウルリージョン、北カリフォルニアリージョン、など多数存在します。


それぞれのリージョンは完全に分離されています。

アメリカのリージョンで障害が発生しても、東京リージョンには影響がありません。

複数のリージョンにシステムを分散配置することで、障害耐性を高めることができます。

基本的には、利用場所に近いリージョンを使う方が良いと言えます。

日本では東京リージョンを使うことで、海外リージョンよりも早いレスポンスが期待できます。

3. AZ(アベイラビリティゾーン)

「アベイラビリティゾーン(AZ)」は、リージョンよりも小さな区分けです。

原則として、1リージョンの中に複数のアベイラビリティゾーンが存在しています。


概ねデータセンター単位で分離されており、電源・ネットワークなども別管理となっています。

1つの AZ で障害が発生した場合でも、他の AZ には響かない設計となっています。


複数のAZを活用して障害対策リージョンと同様に、複数のアベイラビリティゾーンを併用することで、 仮に1つのデータセンターが使えなくなった場合でも、システムを継続することができます。

東京リージョンでは4つの AZ が存在しています。

最多はバージニア北部リージョンの 6AZ、最少は大阪ローカルリージョンの 1AZ です。

4. EC2

Amazon Elastic Compute Cloud(以下EC2)は、LinuxやWindowsなどの仮想サーバを作成できるサービスです。

利用者は数分でサーバを作成でき、作成後のマシンスペック変更や削除も簡単に実行できます。

たとえば、サーバ上で稼働しているアプリケーションが高負荷となりCPUやメモリが不足した場合は、インスタンスタイプを変更することでスペックの増強が可能です。

またデータ量が多くなってディスク容量が不足になった場合もすぐに拡張が可能です。


従量課金であり、EC2はサーバが起動している時間に対して利用料が発生します。

使用しない場合は停止しておくことで利用料を削減できます。

時間あたりの単価はインスタンスタイプ(マシンスペック)により異なります。

高スペックなインスタンスタイプほど高料金となります。

あまりリソースを使用していないサーバがあれば、スペックの低いインスタンスタイプに変更することで利用料を削減できます。


サーバーを停止していた場合も、データを保存しているEBS(Amazon Elastic Block Store :EC2におけるストレージの役割)に対しては料金が発生するため注意しましょう。


EC2ーEC2インスタンス(サーバ)

EC2上で稼働するサーバはEC2インスタンスと呼ばれます。

EC2インスタンスはAWSマネジメントコンソール(GUI)またはAPIを使用してコマンドやプログラム経由で作成が可能です。

はじめて実行する場合はマネジメントコンソールが一番わかりやすいかと思います。

マネジメントコンソールから作成する場合は、画面から以下の項目を指定することでサーバが作成され起動します。

・インスタンスタイプ(マシンスペック)

・Amazonマシンイメージ(AMI)

・ネットワーク(配置するVPCとサブネット)

・ストレージタイプ、容量

・セキュリティグループ(AWSが提供する仮想ファイアウォール)


EC2ーインスタンスタイプ(マシンスペック)

インスタンスタイプとはマシンの用途です。

CPU、メモリ、ストレージ、ネットワークキャパシティーなどが用途によって組み合わされています。

普段使うPCでも「値段が高いけど処理が速い」「処理はそこそこだが、値段が安い」など、スペックを選ぶように、サーバー用のマシンも性能を選ぶわけです。


EC2ーAmazonマシンイメージ(AMI)

AMIとはソフトウェア構成を記録したテンプレートです。

インスタンス(仮想サーバー)を作るための金型のようなもので、一度金型を用意すれば、いくつも同じサーバーを作ることができます。

同じ設定のサーバーが作成できるということは、同じサーバーを複数用意したい時に便利ですし、作ったり壊したりもしやすいということです。

とくにソフトウェアの設定までを必要とする場合に有効です。


サーバー1つづつに「サーバーOSを入れて、Apacheを入れて、ソフトウェアを入れて、それぞれすべてに設定して」と、繰り返していくのは大変な手間ですが、 AMIがあれば、数分で同じサーバーを作成できます。


EC2ーAuto Scaling

オートスケーリングとは、サーバーへのアクセス状態によって、サーバーの台数を増やしたり、減らしたりする機能です。

EC2以外のサービスに対応したオートスケーリングもあります。

AWSでは、EC2 Auto Scalingを単体で使用するばかりではなく、 CloudWatchからサーバーの負荷情報(CPU負荷、ネットワーク通信量など)データを参照してスケーリングに役立てることもできます。

5. ELB

AWS Elastic Load Balancing(ELB)はAWSが提供するロードバランサーです。

ロードバランサーとは、サーバーに集中するアクセス(トラフィック)を複数のサーバーやネットワークに振り分ける仕組みです。

1つのサーバーにかかる負荷を分散させるので、負荷分散装置ともいいます。


ELBの種類

ELBには、ALB、NLB、CLBの3種類があります。


Application Load Balancer(ALB)

AWS ELBのうち、最新で最も高機能なロードバランサーです。

基本的には、Application Load Balancerを使用することが推奨されています。

HTTPおよびHTTPSに最適なロードバランサーです。

OSI参照モデルにおけるアプリケーション層(具体的な通信を提供する層)で動きます。

要求コマンドなど命令内容を見て判断するので、宛先のURLのディレクトリ単位で振り分けるようなこともできます。

インスタンスと、ロードバランサーとの通信を暗号化できるのも特徴の1つです。

ただし、振り分け先として静的IPアドレスを設定し、そのIPを持つホスト(機器)へ転送するようなことはできません。


Network Load Balancer(NLB)

毎秒数百万のリクエスト処理が可能で、高度なパフォーマンスが必要な場合に使用します。

突発的なトラフィックや急激に変化するトラフィックにも対応可能です。

静的IPがアプリケーションで必要な場合にも、Network Load Balancerを使用しましょう。

接続レベル(レイヤー4)で動作しており、TCP/UDP/TLSのトラフィックの負荷分散にも向いています。


Classic Load Balancer(CLB)

複数のAmazon EC2インスタンスにおける基本的な負荷分散を行う、基本的なロードバランサーです。

EC2 Classicネットワーク内で構築された既存のアプリケーションがある場合は、Classic Load Balancerを使用しなくてはなりません。

リクエストレベル(レイヤー7)と接続レベル(レイヤー4)の両方で動作しています。

Amazon VPCを使用する場合は、Application Load BalancerもしくはNetwork Load Balancer を使用しましょう。

6. CloudWatch

サーバーやシステムには監視がつきものです。

サーバーは正常に動き続ける必要があり、動いていると思ったら、実は止まっていた、なんてことでは困ります。

普通のサーバーと同じように、AWSがお守りをしてくれるにしても、載せるシステムやソフトウェアの監視は、自分たちで行う必要があります。

そこで使用するのが、CloudWatchです。


CloudWatchは、各AWSサービスでのリソースのモニタリングと監視を行うサービスです。

AWSの各種サービスからメトリクス(いろいろな観点から動作を評価する数値)、ログなどを収集・記録します。

収集したログが、しきい値を超えたら、特定のアクションが起こるように設定できるため、監視状況に対応した管理も可能です。

7. VPC

VPC(Virtual Private Cloud)とは一言でいうと「クラウド上に作成することが出来る、作成者が自由にアクセスをコントロールすることが可能な空間」です。

具体例を出すと、「セキュリティ上の問題でデータペースサーバーをインターネットに接続したくない・・・」といった要件があったとします。

その場合はデータベースをVPCの『プライベートサブネット』に設置することによってこの要件をクリアできます。

このようにアプリやリソースとのネットワーク設定を設定出来るのがAWS VPCなのです。


VPCーサブネット

サブネット(Subnet)とは、VPCで設定したIPアドレスを分割して作成するネットワーク空間です。

例えば、ある会社に「IT部」という部署があったとします。

このIT部の中にはさらに細かく「開発部門」「インフラ部門」「セキュリティ部門」といった感じで部門が分かれてます。

この時、開発部門・インフラ部門といったIT部の中でさらに分けれたのがサブネットにあたります。


VPC=IT部といった大きなくくり

サブネット=IT部(VPC)をさらに区切った小さなくくり


という感じです。


また、サブネットはインターネットに接続が出来る・出来ないかで呼び名が変わります。

パブリックサブネット=インターネットに接続できるサブネット

プライベートサブネット=インターネットに接続できないサブネット


この二つの呼び方はVPCを学ぶ上で良く出てくるので、覚えておくと便利です。


VPCーネットワーク ACL

ネットワークACL(ネットワークアクセスコントロールリスト)は一言でいうとファイアウォールです。

サブネット単位で設定し、サブネットへのアクセスとサブネットから外部へのアクセスをコントロールすることができます。

※サブネットに対して動作する仮想ファイアウォール


VPCーセキュリティグループ

セキュリティグループもファイアウォールの一種です。

ネットワークACLはサブネット単位で設定するのに対し、セキュリティグループはEC2やRDSなどインスタンス単位で設定します。

また、新規のセキュリティグループにはインバウンドルールが設定されていませんので、通信を許可するには新しくインバウンドルールを設定してあげる必要があります。

なお、アウトバウンドルールにはすべてのアウトバウンドを許可するルールがデフォルトで設定されているため、セキュリティグループの中から外への通信は問題なくできます。

※インスタンスに対して動作する仮想ファイアウォール


VPCーインターネットゲートウェイ

インターネットゲートウェイを使用することでVPCからインターネットへアクセスすることができます。

EC2上のインスタンスにWebサイトを置いた場合、Webサイトの閲覧者は、該当のWebページが欲しいというリクエストを送ってきます。

このリクエストは、DNSで変換され、パブリックIPアドレスとして送られてきます。

しかし、EC2インスタンスにはプライベートIPアドレスしか設定できません。

インターネットゲートウェイがリクエストとEC2インスタンスの結び付きの情報を持っており、 宛先をプライベートIPアドレスに変換して、該当のEC2インスタンスにリクエストを送ります。


VPCーNAT ゲートウェイ

インターネットから接続されたくないが、VPC内からインターネットに接続したい時に使用します。

例えば、RDS(データベース)で顧客データなど高いセキュリティが要求されるようなデータを保存している時、 インターネットと接続出来ないようにプライベートサブネ