質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Amazon CloudFront

Amazon CloudFrontは、AWSの高速且つ高パフォーマンスなコンテンツ配信(CDN) サービス。容量の大きいコンテンツをキャッシュさせてWebサーバの負荷を軽減し、サーバダウンの防止など安定した配信が可能になります。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

2354閲覧

AWSでS3+Cloudfrontを利用するメリットについて

nkm13

総合スコア2

Amazon CloudFront

Amazon CloudFrontは、AWSの高速且つ高パフォーマンスなコンテンツ配信(CDN) サービス。容量の大きいコンテンツをキャッシュさせてWebサーバの負荷を軽減し、サーバダウンの防止など安定した配信が可能になります。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2021/11/29 08:34

編集2021/11/29 08:44

AWS初学者です。
表題の件について質問がございます。

https://eh-career.com/engineerhub/entry/2018/07/17/110000
例えばこのページで紹介されているような、CMSを利用するサービスを構築するためのAWSの構成にて以下のような構成のサンプルを目にします。

イメージ説明

クライアント ─ Cloudfront ─ ELB ─ EC2
└S3

このような構成にしてもCloudfrontにキャッシュされる結果は変わらないと思うのでS3を設置するメリットが感じられないのですが、これはどういった狙いがあるのでしょうか?
静的コンテンツがCSSやJSのみで、ページを構成するコンテンツは全てCMSに依存した動的なものとなる場合などもメリットはあるのでしょうか?

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/11/29 08:59

> このような構成にしてもCloudfrontにキャッシュされる結果は変わらないと思うのでS3を設置するメリットが感じられないのですが 「このような構成」にもS3が入っていますが、疑問点は「S3を設置するメリット」で間違いないのですか?
guest

回答2

0

ベストアンサー

CMSなら、管理画面や編集画面などから使用者が画像アップロードすることは多々あるでしょう。
冗長化している場合すべてのサーバから同じ画像が参照できなければなりませんが、冗長化している場合必ず同じインスタンスにユーザがアクセスするとは限りません。
通常の使い方ならユーザ側からアップロードする場合、EC2に画像配置するようにしているとそのときにアクセスしたインスタンスのみに画像がアップロードされます。
それを複数あるEC2インスタンスに同期するのは面倒です。
CMS側でS3を参照したり、画像のアップロード先をS3に設定していると、どのインスタンスアクセスしていてもS3のほうを参照するだけでよく、いちいち同期する手間がかかりません。

同じような用途だとEFSをマウントしてそこに画像を置くことも考えられますが、S3に比べるとディスク容量が高価な上パフォーマンス的にも微妙なのでわざわざそうするメリットはあまりありません。

以下はその他一般的なメリットです。

静的コンテンツをS3に配置することで、アプリケーションに影響しない静的コンテンツに変更が発生した際に、いちいち複数のEC2インスタンスにデプロイをしなくてよくなります。
静的コンテンツのファイル数や容量が多いとデプロイに無駄に時間がかかり、スケールイン・スケールアウトにも時間がかかります。

また、この構成ではEC2には動的に処理をする必要のある部分だけを配置すればよく、キャッシュヒットしなかった場合の静的コンテンツに対するリクエストはS3に任せることができます。
S3はAWSがスケールさせてくれるのでアクセスが増えても安心です。
S3に分けて配置することで、EC2インスタンスが落ちても静的コンテンツだけは返すことができるメリットもあります。

もし静的コンテンツの容量が重い場合、前述のデプロイに対するメリットの他にディスク容量的なメリットもあります。
EBSの容量よりもS3の容量のほうが遥かに安いです。

EC2は普通にサーバなので何でもできてしまいますが、EC2の役割が増える(状態を多く持つ)ようになるとスケールしづらくなるのでそれを避けるようにするのは定石です。
その中でもS3の使用は安価で単純にそれを実現できる上にノウハウも多数あるお手軽なパターンです。

投稿2021/11/29 17:43

yu_1985

総合スコア7588

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nkm13

2021/11/30 00:41

詳細に回答いただきありがとうございます。 実際に運用した際のイメージがかなり具体的に持て非常に助かりました。 導入も簡単ですし、使わない理由の方が少なそうですね。
guest

0

アクセス量にもよると思いますが、cssやjsを返すための処理もEC2に負荷をかけます。
単純にはファイル(ディスク)アクセスとデータ伝送です。その分他のリクエストを捌く時間が削られます。
ログを出力していればその分も必要になるでしょう。
S3に静的コンテンツを逃がしてあげることで、EC2にかかる負荷を下げる効果が見込めます。
もちろんそれらが誤差にしかならない程度のアクセス量では意味がないかもしれませんが。

また、S3を使わないのであれば、静的コンテンツのキャッシュコントロールをEC2側でうまいことしてあげる必要があるかもしれません。
静的コンテンツ用のレスポンスヘッダをCMS自体かHTTPサーバ(httpdとかnginxとか)で処理することになるでしょう。
CFr+s3ならマネコンでポチポチするだけで設定が終わります。

静的コンテンツの容量が大きくなった際に、S3を使っていなかった場合は全データをEC2が持っている必要があります。
予期せぬインスタンスの停止などで復旧しなければならない場合に面倒かもしれません。
S3を使っていれば、静的コンテンツの多くはS3にあるはずなので、EC2インスタンスの復旧は楽かもしれません。

メンテナンスの際にはCFrのビヘイビアをいじって、全アクセスをS3に逃がしてメンテナンスページを出力することもできます。
それまでS3を使っていなかったら同様の対応するのは手間がかかるかもしれません(テストされてないわけで)

挙げようと思えば他にもある気がしますが、S3を使うメリットです。

投稿2021/11/29 13:14

_raki

総合スコア82

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nkm13

2021/11/30 00:44

詳細に回答いただきありがとうございます。 単純に静的コンテンツを逃がす以外にも運用を楽にする効果が強いですね。 アクセス数はそこまで多くはないのですが、使わない理由を見つけるほうが難しそうですので導入し、実際の運用にてその恩恵を確かめてみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問