目次
AWSの基本サービスを知る
VPSとは
VPS(仮想プライベートサーバー) は、アプリケーションやウェブサイトを実行するために必要なすべてのソフトウェアとデータをホストする仮想専用サーバーです。
仮想サーバーを構築し、「自分専用のネットワーク空間」を作ることができます。
サブネットとは
サブネット(サブネットワークの略)は、VPCの中で作る小さなネットワークの区画(分割されたネットワーク)です。
VPCという仮想的なネットワークを作成した後に、VPCを分割するために「サブネット」を設定します。
これによりネットワークを管理しやすくするだけでなく、サブネットごとに役割を割り振ることでセキュリティを強化することもできます。
・パプリックサブネットとは
インターネットに直接接続できるサブネットです。 主にWebサーバーやロードバランサー(ALB, ELB)を配置する。
・プライベートサブネットとは
インターネットに直接接続できないサブネットです。 主にデータベース(RDS, Aurora)やアプリケーションサーバー(EC2)を配置。
Internet Gatewayとは
AWS Internet Gatewayとは、VPC(プライべート仮想ネットワークです)とインターネットとの間の通信を可能にするためのものです。
VPCはプライベートな空間なのでインターネットに接続するときにはInternet Gatewayが必要になるのです。これを使用して、外のインターネットへ接続します。
NAT Gatewayとは
プライベートサブネットにあるサーバー(EC2, RDSなど)は、直接インターネットに接続できません。(セキュリティのため)
NAT Gatewayは、プライベートサブネット内のインスタンスから外部への通信が可能になります。
インターネットトラフィックがプライベートサブネットからNAT gatewayに向かうように、ルーティングを設定すれば、プライベートサブネットから外部ネットワークへアクセスできるようになります。
ただし、外部(インターネット)からプライベートサブネット内のサーバーにアクセスすることはできません。
アベイラビリティーゾーン(AZ)とは
1つの AWSリージョン内(地域内)でそれぞれ切り離され、冗長的な電力源、ネットワーク、そして接続機能を備えている 1 つ以上のデータセンターのことです。
AWSでは、サーバーを動かすデータセンターが世界中にたくさんあります。
1つのデータセンターだけに頼ると、災害や障害でサービスが止まるリスクがあるので、データセンターを「アベイラビリティーゾーン(AZ)」という単位で分けています。
アベイラビリティーゾーン(AZ)は自然災害・電力供給・ネットワーク等の面で独立した単位となっており、あるAZがダウンしても他のAZは稼働できるよう設計されています。
東京リージョン(ap-northeast-1)の場合
ap-northeast-1a
ap-northeast-1c
ap-northeast-1d
という感じで、東京リージョン内に3つのAZがあります。
インスタンスとは
インスタンスとは、AWS上で稼働する仮想サーバのことを指し、仮想サーバを数える際の単位としても使われます。
AWSでは仮想サーバのCPUやメモリなどの組み合わせがインスタンスタイプとして定義されています。
必要なスペックに応じたインスタンスタイプを選択し、OS、ストレージ容量などを決定してインスタンスを作成します。
EC2とは
多くの場合AWSを利用する際には、「EC2」と呼ばれるサービスを使うことになると思われます。
EC2はAWS上に仮想サーバを構築して自由に利用できるのが特徴で、クラウド環境においてさまざまな役割を担ってくれます。
これまでデータセンターで物理的なサーバの構築を行っていたのが、Web上から数クリックで仮想サーバを構築することができるので、業務の効率化に寄与することが期待できます。
ユーザーの必要に応じてスペックを変更できるのがEC2の魅力です。
EC2では仮想サーバの事を「インスタンス」という単位で扱います。
インスタンスにはさまざまな種類や性能のものがあるため、ユーザーの求める形で利用が可能です。
複数使って仮想サーバを分割することで、可用性や信頼性を考慮した運用ができるでしょう。
サーバの増強が必要になった場合や、さらなる効率化を求めて改善が行われる際にも、対応がしやすくなります。
仮想サーバのテンプレート化や複製が容易であるため、事前に複数台数を用意することで安定したサーバ運用を実現できます。
冗長化(冗長化)によって負荷の分散を行ったり、システム上に障害が発生しても全体の環境を維持することが可能であるため、万が一に備えながらのサーバ運用が可能です。
「冗長化(じょうちょうか)」とは、コンピュータや機器、システムに何らかの障害が発生した際に備えて、予備の設備やサブシステムなどを平常時から運用しておくことをいいます。
例えばサーバを2台用意して、一方のサーバ(サーバAとする)でシステムを稼働させ、もう一方のサーバ(サーバBとする)は待機状態にしておく。そうすることで、サーバAが機器の故障などで停止しても、すぐにサーバBでシステムを稼働するよう切り替えることができるわけです。
EC2とインスタンスの違い
EC2(Amazon Elastic Compute Cloud)とインスタンスの違いを簡単に説明すると、
EC2は、AWSが提供する仮想サーバー(インスタンス)を作成・管理するためのサービス全体の名称。
インスタンスは、EC2上で動作する実際の仮想マシンのことです。
RDSとは
Amazon RDSはAWS上で提供しているリレーショナルデータベース※1です。
一般的に広く利用されているMySQL、Amazon Aurora、MariaDB、Oracle Database、SQL Server、PostgreSQLの6種類のRDBMS(リレーショナルデータベース管理システム)を選択することができます。
オンプレミス※2でデータベースサーバを構築する際に必要となるサーバの購入・設定、OSのインストールなどの煩雑な作業をすることなく、利用契約後すぐにデータベース構築が可能です。
また、MySQL、Oracle Database、Microsoft SQL Serverなど、一般的によく使用されているデータベース管理システム(以下、RDBMS)をそのまま使うことができます。
※1リレーショナルデータベースとは、テーブル(表)形式の複数データを関連づけて使えるようにしたデータベースのことです。各テーブルの共通項目をキーとして関連づけることで、複数のテーブルから必要なデータを組み合わせて引き出すことができます。
※2オンプレミスとは、システムの稼働やインフラの構築に必要となるサーバーやネットワーク機器、あるいはソフトウェアなどを自社で保有し運用するシステムの利用形態です。
データベースの構築・変更も専用の管理画面から容易にできるため、これにかかるコストの削減に繋がり、ユーザーはインフラ管理から開放され、本来の業務に注力できるようになります。また、Amazon RDSはストレージの容量追加も容易で、高い拡張性を有しています。さらにバックアップも自動取得されます。
ロードバランサー/Elastic Load Balancer(ELB)とは
ロードバランサーとは、ウェブサイトへのアクセスなど、外部からの通信によるサーバにかかる負荷を、均等に振り分けるための装置のことです。
一つのサーバでウェブサイトを運営した場合、そのサーバの処理能力を超える量のアクセスが発生するとレスポンスの低下やサーバダウンが発生する恐れがあります。そのため通常はサーバを増やすことで処理能力を増強しますが、このときにアクセスが一つのサーバに偏ってしまうと、せっかくサーバを増やしても意味がありません。そこで、各サーバへのアクセスを均等に振り分ける役割としてロードバランサーが登場します。
AWSでは、Elastic Load Balancer(ELB)という名称でロードバランサーをサービスとして提供しています。
その中でもALB(Application Load Balancer)は、HTTPやHTTPSトラフィックの負荷分散に向いているロードバランサーです。
URLベース、ホストベース、HTTPヘッダー などの条件でルーティング可能です。
これは、「どのサーバー(EC2など)にリクエストを送るか?」を決めるルールを設定できる機能です。
URLのパスに応じて振り分けたり、アクセスしたドメイン(ホスト名)によって振り分けたり、HTTPリクエストのヘッダー情報を見て振り分けたりできます。
URLによっての振り分けは1つのドメインで複数のサービス(ECサイト、ブログ、APIなど)を運用するときに便利です。
ドメインによっての振り分けは複数のサブドメインを使い分けている場合に便利です。
HTTPリクエストによっての振り分けは、デバイスごと(iPhone /Android)に違うコンテンツを配信したい場合に便利です。
API Gatewayとは
Amazon API Gatewayとは、AWSが提供するAPIの作成および諸々の管理(APIの作成、配布、保守、監視、保護)を行えるサービスのことです。
API Gatewayはクライアント(フロント)からのリクエストをバックエンドに渡してくれる仲介役です。
リクエストの内容を変換したり、目的のバックエンドにリクエストを渡してくれます。
通常のマイクロサービス・アーキテクチャの場合クライアントとそれぞれのAPIは個別に通信を行うことになります。
例えば、1つのWebサービスに「決済サービス」「ショッピングカート」「メール機能」「レコメンド機能」といった複数のAPIが使われている場合、クライアント(Webアプリやモバイルアプリ)は、それぞれのサービスと直接通信することになります。
つまり、データを取得するために 4回のリクエスト を送信する必要があります。
APIゲートウェイを導入すると、クライアントはAPIゲートウェイとだけ通信すればよくなります。
APIゲートウェイがクライアントのリクエストを受け取り、適切なマイクロサービスに振り分けるためクライアントはマイクロサービスを知る必要がありません。
APIゲートウェイを使うことで、クライアントはAPIゲートウェイとだけ通信すればよくなり、負担が軽減されるというのがポイントです。
・小規模なサイト(例:単純にGoogleレビューを表示するだけ)なら、APIゲートウェイを使わずに直接Google APIを呼ぶほうが簡単。
・大規模サイト(例:APIリクエストを最適化したい、複数のAPIを統合したい)なら、APIゲートウェイを使うのがオススメ。
「APIキーをクライアント側に置かないほうがいい」場合は、APIゲートウェイを使うと安全!
S3とは
Amazon S3(以下、S3)はAWSが提供するオンラインストレージサービスです。
まずオンラインストレージサービスとはなにかですが、様々なデータをインターネット経由で保存することができるサービスのことです。
S3は、オブジェクトストレージと呼ばれ、データをファイル単位ではなくオブジェクト単位(バケット)で保存します。
これは、普通のパソコンの「フォルダ&ファイル」方式とは少し違います。
通常のパソコン → フォルダの中にファイルを入れて整理します。
S3 → すべてのファイルが「オブジェクト」としてバケットに保存され、ファイル名(キー)で管理されます。
ファイル名(キー)とは画像ファイルの場合、images/logo.pngのような感じです。
「/(スラッシュ)」を使うとフォルダ(階層構造(ディレクトリ))のように見えますが、フォルダは実際には存在せず、ファイル名(キー)の構造で管理され、フラット構造で固有のオブジェクトIDを持ちます。
画像、動画、テキスト、ログなどのデータを保存でき、その中のファイルを「ファイル名(キー)」で管理する仕組みになっています。
Route 53(ルートフィフティスリー)とは
Route 53は、クラウドのドメインネームシステム (DNS) サービスです。
Route 53を利用してドメイン名を購入・管理やAレコード、CNAME、MXレコードなどを設定し、ドメインをサーバーに紐づけることができます。
「example.com」のネームサーバをRoute 53に設定すると、そのドメインのDNS管理はRoute 53で行われます(ネームサーバ設定)。
例/お名前.comで、NSレコードを設定することでドメインのDNS管理がAWS Route 53に移ります。
また、メールサーバ(MX)の設定を行い、メールを送受信するサーバーを指定も行うことができます。
お名前.com側のDNS設定はクライアントに作業を依頼しましょう。
CloudWatchとは
AWSのアプリケーションの監視・ログ管理・アラート通知など、運用状況に関するインサイトを提供するサービスです。
活用例としては、サーバー監視、アプリケーションのエラーログ管理、セキュリティ監視などがあります。
AWS環境の監視・最適化に欠かせないサービスです。
WAF(Web アプリケーションファイアウォール)とは
WAFは、Webアプリケーションへの攻撃を防ぐセキュリティ対策です。
WAFの代表的な用途には、SQL インジェクション、クロスサイトスクリプティングなど、アプリケーションの脆弱性を悪用した攻撃の遮断やアプリケーション層のDDoS 対策、不正なボットによるアクセスの遮断などがあります。
AWS WAFは、Amazon CloudFront や ALB(Application Load Balancer) 上で動作するクラウド型のWAFです。以下の機能で不正な通信をブロックできます。
・攻撃検知ルール(SQLインジェクションなどの一般的な攻撃を防止)
・IP制限(特定のIPアドレスからのアクセスを許可/ブロック)
・レートコントロール(短時間に大量のアクセスを制限しDDoS対策)
AWS WAFを活用することで、Webサイトやアプリのセキュリティ、可用性、パフォーマンス を強化できます。
まとめ
いかがでしたでしょうか?AWSの基本サービスを知るとAWSのアーキテクチャ図を見た時にどんな構成になっているか理解できるようになったのではないでしょうか? 少しでもAWSの知識が深まれば幸いです。