🐣

なんとなくわかるインフラ構築 〜AWS編

2022/08/23に公開

はじめに

社内向けに今まで構築してきたインフラ構成を伝えようと思ったが、そもそもインフラについて知らない人が構成図見てもなんのこっちゃという気持ちになるだろうと思ったので、インフラ構築ってこういうことしてるんだよ〜となんとなく知ってもらうために、物理的なインフラ構築を例に説明していく、というのが前回のお話。

https://zenn.dev/kekezun/articles/78049ffd706339

今回はAWSを用いたインフラ構築について説明していく。

※構築した後に放置すると従量課金が発生するので、不要な場合は全て消してね

AWSとは

Amazonが提供するクラウドプラットフォーム。AWSのマネジメントコンソール画面をぽちぽちするだけで、インターネット経由でインフラ構築を行うことができる。

2022年08月現在AWSが提供しているサービスは227個あり、毎年増えていく傾向にある。ユーザは目的に応じてAWSが提供するサービスの中から単一のサービスを使用したり、複数のサービスを組み合わせて使用することができる。AWSの全てのサービスを理解しないとインフラを構築することができないというわけではないので、構築する際に必要なサービスを一つずつ理解していけばいいと思う。

AWSでのインフラ構築

なんとなくわかるインフラ構築 〜物理インフラ編 で使用した下記の図をAWS版に置き換えていく。

AWSマネジメントコンソールにログインする

AWSアカウントでマネジメントコンソールにログインする。AWSアカウント持ってない人はサインアップからどうぞ。

AWSアカウント作成後はデフォルトでVPCとサブネットグループが作成された状態になっているが、今回はそれらは使わないので、下図のように便宜上何もない状態ということにする。

VPCを作成する

まず初めに、Regionをap-northeast-1を選択し、VPC(Virtual Private Cloud)を作成する。なおVPCを作成するとサブネットも一緒に作成された状態になる。

Region

AWSは世界各地にデータセンターを保有しているため、世界のどのデータセンターを使用するのか、というのがRegionになる。日本だと現在はap-northeast-1(東京)とap-northeast-2(大阪)が存在しており、どちらかを選んでおけば問題ないが、同一Regionでないと組み合わせられないサービスなどもあるため、特別な理由がない限りはインフラ構築時は一貫したRegionを使用する方がよい。

VPC

VPCは仮想ネットワークのことで、今後はこのVPCの中にAWSのサービスを作成していく。特に設定していなければVPC間で通信を行うことはできないため、ステージング環境や本番環境など環境ごとにVPCを作成することが多い。VPCをものすごい大雑把にいうと、環境ごとのネットワークの大枠、といった感じ。

アベイラビリティゾーン

アベイラビリティゾーン(図中のAvailability Zoneのこと)はRegionの中にあるデータセンターのまとまりのこと。Abailability ZoneはRegion名の末尾に識別子となるアルファベットが付与される命名になっており、ap-northeast-1(東京)Regionにはap-northeast-1aやap-northeast-1cといったAbailability Zoneがある。例えば障害発生によりap-northeast-1aがダウンしたとしても、ap-northeast-1cにap-northeast-1aと同様のサーバをスタンバイさせておけば、そちらを使用してサービスを継続させることができる。可用性を高めたいならAvailability Zoneを意識してインフラを設計する必要がある。

サブネット

サブネット(図中のPublic Subnetのこと)はVPCの中に作成するネットワークの範囲のこと。外部からアクセス可能な外部用サブネット、内部からのみアクセス可能な内部用サブネット、というようにサブネットを使用し、用途毎にAWSのサービスをいずれかのサブネットに作成する。例えばWebサーバは外部からアクセスしてもらいたいので外部用サブネットに作成し、データベースは内部からのみアクセスしてほしいので内部用サブネットを使用する、といったように使い分ける。

インターネットゲートウェイを設置する

次にインターネットゲートウェイを設置し、先ほど作成したVPCにアタッチする。

インターネットゲートウェイ(図中のInternet gatewayのこと)を介することで、VPCとインターネットが通信可能な状態になる。

セキュリティグループを作成する

次にセキュリティグループを作成する。

セキュリティグループ(図中のSecurity groupのこと)を設定することで、どこからどこに対するアクセスを許可する、といったトラフィックの制御を行うことができる。
今回はインターネットからくるアクセス全てを許容する設定にしている。

EC2を作成する

最後にEC2を作成し、ミドルウェアをインストールする。

EC2を作成する際に先ほど設定したセキュリティグループを指定することで、EC2がアクセス制御された状態(今回はインターネットからくるアクセス全てを許容する状態)になる。

ここまでの手順で、ユーザがインターネットを介してEC2のコンテンツにアクセスすることができるようになる。

AWSでのインフラ構成について

上記で説明したインフラ構成は何も考慮していない最低限の構成になっている。
物理インフラ編で話したインフラ構成のように冗長化したり、DBサーバへのアクセスを制限する場合、以下のような構成になる。

EC2が二つのアベイラビリティゾーンに設置され、ALB経由でアクセスされている。ここでのALBは前記事の物理インフラでいうルーターと同様に、ユーザからのリクエストをそれぞれのEC2に分散させている。

データベース(図中のRDSのこと)はインターネットから直接アクセスされないよう、内部用サブネット(図中のPrivate subnet(db))に設置されている。またセキュリティグループ(図中のSecurity group(db))により、データベースへのアクセスをEC2からのみに制限している。

おわりに

物理インフラのときとは構築順序が異なっているが、AWSで構築する際も基本的にネットワーク、サーバ、ミドルウェアを触ることに変わりはない。

AWSでインフラ構築する場合は物理インフラに比べてネットワーク、サーバなどのリソースの作成・削除が容易に行えるため、勉強や検証をする際に便利。ただ従量課金なので使用後は消し忘れに注意すること。

次回はTerraformを用いたインフラの管理について説明する予定。

参考

Discussion