テクノロジー
AWSの基礎の基礎をまとめてみた!
はじめに
皆さん、こんにちは!ITエンジニアリング部(現デジタルテクノロジー戦略本部)のF.Kです。
本記事は、21卒の私が約1年間、AWSについて調べたり触ったりしていく中で知った、AWSの基礎の基礎をまとめたものです。
はじめてAWSに触れるとき、いろいろ記事を見て周ったのですが、「リージョンってなに?」「アベイラビリティゾーンってなに?」みたいな状態になり、「リージョンとは」「アベイラビリティゾーンとは」を説明しているサイトをいくつか経由して理解しました。いくつかサイトを見た理由は、「こんな感じだろう」みたいなイメージがほぼ出来なかったからです。
この記事は「こういうサイトがあったらイメージが湧いたのにな」という私の想いがあって作成しました。
これからAWSについて触れる方や、ITエンジニアを目指す方が読んで、AWSについての漠然としたイメージが出来る記事になっていると思います。
前提として必要な知識
基本的なIT知識があると理解しやすいと思います。
※基本情報技術者試験に合格できるレベル、またはWEBアプリを開発したことのあるレベルであれば、問題ありません
AWSとは
AWSとは、Amazon Web Serviceの略で、Amazonが提供しているクラウドサービスの総称です。
Amazonでは、購買がクリスマス前に増大します。それに対応するためにサーバーを増やしましたが、その時期以外は全く使っていないため、これを有効活用しようと始めたのがAWSと言われています。(詳しく知りたい方はこちら。AWS誕生に携わった方のtweetが翻訳されて記事になっています。)
現在のAmazonの売上高の約12%はAWSによるものです[1]。
クラウド(サービス)とは
クラウド(サービス)とは、インターネットを利用して様々なサービス(AWSにおいては、サーバ・ストレージ・データベース等)を提供するサービスのことです。クラウドに対して、サーバ等を自社に設置して運用することをオンプレミスといいます。
手元に一台のPCとインターネットに接続できる環境さえあれば、インターネットを介して、高性能なサーバや大容量のストレージ、高速なデータベースなどが利用できます。
クラウドサービスにも種類があり、一般ユーザや企業にサービスを提供するサービスをパブリッククラウドといい、企業や組織が自社内でクラウドサービスを構築し、特定のユーザだけが利用できるサービスのことをプライベートクラウドといいます(AWSは前者です)。
AWSと似たクラウドサービスに Google Cloud (GCP)と Microsoft Azure (Azure)があります。
全体のシェアとして、AWSが32%、Azureが19%、GCPが7%、その他が42%となっており[2]、AWSが高シェアとなっている理由は、はじめてクラウドサービスを提供したため、サービスの種類が豊富でセキュリティ面も安全であり、利用ユーザが多いので、知見が得られやすいことが挙げられます。
AWSを使う理由
AWSには大きく4つのメリットがあります。
1. 固定費が変動費に
従来のオンプレミスのシステムでは、事前にデータセンターやサーバに多額の投資を行う必要がありましたが、クラウドを利用することで、リソースを利用した時に利用した分だけ支払う方法に変えることが出来ます。
2. キャパシティ予測が不要
オンプレミスでは、キャパシティの予測にかなりの時間をかけます。なぜなら、いつ、どれくらいのアクセスが来るかをある程度予想したうえで、ITリソースを調達する必要があるからです。
しかし、先にキャパシティを決めてしまうと、高額の無駄なリソースが発生したり、リソース不足のため十分なサービスを提供できなかったりする可能性があります。
AWSでは必要に応じてリソースの増減を行うことが出来るので、最大のインフラ容量を予測する必要がなくなります。必要に応じてアクセスするだけでスケールアップやスケールダウンが可能になるからです。
3. インフラの運用・保守への投資が不要に
AWSを利用することで、オンプレミスで必要だった費用、例えばサーバ代、データセンター利用料、ラック利用料、電気代、ネットワーク利用料、ハードウェアベンダーへの保守費用、各種人件費が不要になります。さらに、定期的な機種変更にかかわる費用も検討する必要がありません。
もともとインフラに充てられていた費用を他の投資に回すことができ、インフラ部分には特別な注意を向ける必要がなくなります。
4. わずか数分でどこにでもデプロイ可能
例えば「これから海外のデータセンターにWebサーバを一台構築せよ」と業務命令が出されたとしましょう。
この業務を完遂するためには、航空券、パスポート、ビザ、物理サーバ、その他機器、回線事業者へのネットワーク工事依頼、データセンターへの機器の搬入、空港からデータセンターへの交通機関、データセンターへの入館申請、キッティング、ラッキング、ネットワークケーブリング、OSのセットアップ等、やらなければいけないことがたくさん挙がります。
これがAWSなら、数クリックで海外にWebサーバを構築できます。
わずか数クリックするだけで、世界中にアプリケーションを展開できます。
AWSを使ううえで知っておくべき用語
リージョン
AWSのサービスを提供するのに必要なサーバやストレージなどが保管されているデータセンターがあり、それらが存在するエリアのことをリージョンと呼びます。
世界の各地域にAWSのリージョンが存在し、日本にあるリージョンは以下の二つです。
- ap-northeast-1(アジアパシフィック(東京))
- ap-northeast-3(アジアパシフィック(大阪))
ゾーン・アベイラビリティゾーン (AZ)
ゾーン・アベイラビリティゾーン(AZ)とは、各リージョンの中にある運用区間です。
リージョンとAZは以下の画像のようなイメージです[3]。
VPC (Amazon Virtual Private Cloud)
Amazon Virtual Private Cloud(以下VPC)とは、AWSのサービスの一種で、AWS内に作れる自分だけのネットワーク空間になります。
自らVPCを作成するので、自由にIPアドレス範囲を割り当てることが出来ます。
サブネット
サブネットとは、VPCのさらに内側に作るネットワーク空間で、AWSのサービスを起動するための領域です。
VPCで指定したIPアドレス範囲を、分割することでサブネットが作成できます。
だれでもアクセスできるパブリックサブネットや、特定の場所からしかアクセスできないプライベートサブネットを作成できます。
Gateway
Gatewayとは、ざっくりいうと、データ通信が出入りする際にどこを経由するかの、「どこ」に該当する部分がGatewayになります。
インターネットとVPCを接続するために利用するのは、Internet Gateway(IGW)と呼ばれます。実際にAWSで設定する際は、後述するルートテーブルにIGWを紐づける形で利用します。
また、インターネットには繋げたいけど、インターネットから通信が入るのは困るという場合は、NAT Gatewayを利用します。
他にもAWSにはGatewayと名の付くサービスがたくさんあるので、気になる方はこちらを見てみてください。
ルートテーブル
ルートテーブルとは、サブネット内にあるAWSサービスが、どこに通信することが出来るかのルールが記載されたものです。
通信のあて先を見て、どこに通信を流すかが書かれている表であり、この表をみて通信先を決定します。
AWSでは、サブネット毎にルートテーブルを作成することが出来ます。
セキュリティグループ
セキュリティグループとは、仮想ファイアウォールとして機能します。
アクセスを許可したり、制御したりすることが出来ます。
インバウンドルールとアウトバンドルールを設定する必要があり、外からアクセスしてくるものに対する制御をインバウンドルールに、逆にアクセスする先に制御をアウトバウンドルールに設定します。
AWSの主要なサービス
EC2 (Elastic Compute Cloud)
EC2とは、AWS上に仮想サーバを置いて様々やWebアプリケーションを動かすことが出来るサービスになります。
必要に応じてサーバ性能を変更することができます。
また、EC2上で稼働するサーバのことをEC2インスタンスと呼びます。
S3 (Simple Strage Service)
S3とは、ストレージ機能を提供しているサービスで、ファイルのバックアップや、ファイル処理の加工前後のファイル保存、画像やCSSなどWebで使う静的なファイルを置くことを目的として利用されます。
S3は事前に保存容量を決める必要はなく、利用した分だけの課金となるため、ストレージの空きを気にする必要がありません。
RDS (Relational Database Service)
RDSとは、列と行がいくつかのテーブルで定義されており、データ間の関係性が定義されたデータを取り扱う一般的なDBシステムです。
DBシステムのため、一般的には外部からアクセスできないようにするために、プライベートサブネットに配置します。
障害や誤作動が起きたときに、5分前の状態に戻すことが出来たり、マルチAZ配置(2つのAZを使ってAWSシステムを構築すること。一方のAZに障害が起きてももう一方のAZを利用することで、サービスが止まるのを防ぐ。)を選べば複数のAZにDBシステムが配置されるなど、RDSを用いて可用性の高いシステムを実現できます。
ELB (Elastic Load Balancing)
ELBでは、集中するトラフィックを分散して、サービスの稼働を安定させることが出来ます。メンテナンスや障害発生時にこれの設定を行うことで、該当のサーバーへのリクエストのみを止めることが出来るサービスです。
ALB(Application Load Balancer)、NLB(Network Load Balancer)、CLB(Classic Load Balancer)の三つを総称してELBと言います。
Cloud Watch
Cloud Watchとは、AWSの各種リソースを監視してくれるサービスです。セットアップが不要で、異常な状態を検知し自動復旧を行い、サービスの種類に応じてアラート通知やアクションを設定することが出来ます。
CloudWatch、CloudWatch Logs、CloudWatch Eventsの3つからなるサービスで、以下のような役割に分かれています。
- CloudWatch
- リソースを管理する。CPUやメモリなど複数項目をグラフ化してダッシュボードを作れる
- CloudWatch Logs
- ログを集めて監視する。アプリケーションやOSでエラーログをはいたら管理者にメール通知することができる
- CloudWatch Events
- APIのイベントをトリガーに何らかのアクションを実行させることが出来るサービス。AWSではEC2インスタンスの起動停止もAPIで実行されているため、こういったイベントを監視することで、特定の処理に対してアクションを実行することができる
Cloud9
Cloud9とは、ブラウザのみでコードを記述、実行、デバッグできる統合開発環境です。コードエディタ、デバッガー、ターミナルを利用することが出来ます。ブラウザ上で動くため、端末の環境に左右されることなく、開発環境を簡単に用意することが出来ます。
また、一般的なプログラミング言語を利用するのに必要なツールがあらかじめ用意されているため、すぐに開発を進めることが出来ます。
Lambda
Lambdaは、サーバレスコンピューティングサービスです。
サーバレスとは、「サーバが無い状態でプログラムを実行する」という意味ではなく、「AWS側が処理に必要なサーバを用意するので、こちらは実行するプログラムだけを用意する」というような意味になります。
AWSクラウド上にプログラムを用意しておき、インターネットを通じて好きなタイミングでそのプログラムを実行することが出来ます。
IAM (Identitiy and Access Management)
IAMとは、IDとアクセス権を管理するサービスです。IAMを利用することで、誰がどのサービスを使ってもよくて、どのサービスを使ってはいけないかの設定をすることが出来ます。AWSでは、必要な人に必要な最低限の権限のみを付与することが推奨されています。
またIAMにはIAMユーザ、IAMポリシー、IAMロールがあります。
- IAMユーザ
- 人に与えることが出来るIDを作成できる。ユーザ名とパスワードが付与され、AWSアカウントにログインすることが出来る。1つのAWSアカウントの中に複数のIAMユーザを作成することが出来る。
- IAMポリシー
- どのサービスをどのくらいの権限で利用することが出来るかを設定するサービス。アクセスできる範囲を設定したポリシーを、IAMユーザにくっつけて利用する。
- IAMロール
- 複数のIAMポリシーを束ねることでアクセス範囲を設定することが出来るサービス。
AWS構成図
AWS構成図とは、AWSのアイコンや線を結んで表される、AWSインフラを表した図になります。簡単なものですが、下記の画像などがAWS構成図にあたります。
上記の画像は
- AWSのリージョンの中にVPCを作成
- 利用するAZを選択
- その中にパブリックサブネットとプライベートサブネットを作成
- 利用するAWSサービス(EC2・RDS)を任意の場所に置く
- パブリックサブネットはインターネットとやり取りするため、IGWをパブリックサブネットに紐づけて、インターネットを繋ぐ
ということを表しています。
言葉で表すとすごく長くなってしまうような構成も一目で分かるように、上記のような構成図を作成します。
AWSでは、よく利用されるクラウド構成を構成図としてまとめています。興味がある方はこちらから確認できます。
参考にしたページ
各説明で分かりづらい、もっと詳しく知りたいときは、下記のURLを参考にしてみてください。
まとめ
AWSの基礎知識についてまとめましたが、一番理解出来るのはやはり触ってみることです。
私自身がそうだったように、AWSは会社に入って初めて触る方が多いと思います。
IT分野を全く触ってこなかった方はもちろん、インフラの部分を独学でやるには少しハードルが高いためです。
この記事で、そのハードルを少しでも下げてAWSを触れるようになれば幸いです。
他にも解説したほうがよいサービスや知識があれば追記していきたいと思います。
最後まで読んでいただきありがとうございました。
※本記事は2022年03月時点の内容です。