まず初めに
AWSを学習し始めて日が浅く、
構成図を見るとサービスの役割がいまいちピンと来ない方へ向けた記事となります。
以下に当てはまる方は参考になるかと思いますので、
是非読んでいただければと思います!
・メジャーなサービスの機能は理解しているような、していないような
・AWSの構成図を見るのに何となく抵抗がある
・AWS SAAの試験を勉強中
概要で挙げた中にもありますが、構成図が何となく難しいなと感じる方は、
サービス単体の機能は何となくわかるけど、
構成に盛り込まれていると、
役割がいまいち把握できてないところにあるのかなと思います。
優しいAWSはそんなこともあろうかと、
簡単~応用レベルの構成を30パターン公開しています。
ここでは抜粋した比較的簡単な構成について、
サービス解説を含め解説していきます。
以下、本記事で参考にするページです。
参考ページ
https://aws.amazon.com/jp/cdp/
動的WEBサイト
サービスの解説
【使用されているサービス】
・Amazon CloudFront
・AWS Certificate Manager (ACM)
・Elastic Load Balancing
・Amazon Elastic Compute Cloud (Amazon EC2)
・Amazon Elastic Block Store (Amazon EBS)
・Amazon Machine Image (AMI)
・Amazon Simple Storage Service (Amazon S3)
・Amazon Relational Database Service (Amazon RDS)
・Amazon ElastiCache
・NAT Gateway
【解説】
まず動的WEBサイトというのは例で挙げると以下のようなサイトを言います。
・ショッピングサイト
・掲示板
・ブログ
ざっくりまとめるとすると会員制のサイトなどです。
(ユーザによって表示する内容が違うサイト)
この動的WEBサイトの構成で理解を深めるに鍵となるサービス3つ例に挙げ、
以下に解説していきます。
①CloudFront
CloudFrontはCDNサービスといわれる部類に属します。
簡単にまとめるとコンテンツ(画像やファイル)を配信するサービスになります。
主な役割は以下の通りです。
・エッジロケーションを利用したコンテンツ配信の高速化
・オリジンサーバの負荷軽減
例を挙げて解説すると、
コンテンツ配信元が日本で、ダウンロードを行う場所がアメリカである場合、
地理的距離から遅延が発生します。
CloudFrontを使用することで、エッジロケーションを介して、
地理的な遅延を極力抑えた通信にすることが実現できます。
上記画像で解説すると、
CloudFrontがない場合は、UserからS3へ直で通信することになり、
地理的距離から遅延が発生します。
CloudFrontがある場合、DNSを利用したルーティングで最寄りのエッジロケーションに、
通信が向けられ、遅延を少なくすることができます。
ここで1つ注意するのが、CloudFrontはキャッシュを利用しているため、
エッジロケーションにコンテンツを取りに行った際、該当のコンテンツがない場合は、
一度オリジンへ取りに行く仕組みになっており、初回のみ遅延が発生します。
負荷の観点から見ると、初回のみはオリジンサーバに通信が向かいますが、
以降はエッジロケーションに保持されているキャッシュを利用するため、
オリジンサーバの負荷が軽減されます。
(キャッシュの保持期間は、デフォルトでは24時間ですが、
リクエストのパスパターンや、個々のファイルに対して保持期間を設定することが可能です。)
②S3
S3はご存じの通りストレージサービスですが、
動的WEBサイトでは、静的WEBホスティング機能を使用して、
ソーリーページ(ユーザ用のエラー画面)を実装するために利用されることが多いです。
CloudFront+S3は鉄板の構成なのでSAAの試験では多く見られます。
CloudFrontを利用してオリジンサーバー障害時にS3上のコンテンツを表示する
https://dev.classmethod.jp/articles/cloudfront-sorry-s3/
③ElastiCache
筆者はいまだに"エラスティキャッシュ"なのか"エラスティックキャッシュ"なのか、
一生もやもやしています。
(今のところエラスティキャッシュが自分の中では優勢です。)
話はそれましたが、解説していきます。
Elasticacheはキャッシュ機能として採用されます。
特徴としてインメモリキャッシュという機能があります。
通常のDBとは違って、
ディスクにデータを保持するのではなく、メモリ内に保持するため、
ディスクにアクセスする時間が無くなり、データの取り出し処理が非常に高速です。
クエリの結果もキャッシュに保持できるため、
クエリにかかるコストも初回のみとなり、費用対効果も高いものになります。
サポートしているエンジンはMemcachedとRedisの2つです。
簡単に紹介すると以下の通りです。
Memcached
単一ノードの性能は高いが、データの格納はString型しか対応していない
Redis
単一ノードの性能はMemcachedに比べると劣るが、可用性とデータの格納は豊富な型に対応している
まとめると動的WEBサイト上では、
EC2上のアプリケーションとやり取り(データ取り出し等)を行う際、
キャッシュを利用した低レイテンシーな通信を実現できるために使用されています。
まとめ
今回はAWSが公開しているサンプル構成図の中から、動的WEBサイトの解説をしました。
鉄板の構成なので、覚えておいても損は無いと思います!
サービスごとの勉強では点と点の学習になってしまうので、
一連のつながりを理解したい場合は、構成図を眺めてみるのはおススメです。
最後までご高覧いただきありがとうございました。