前置き
インフラ関連が分からず、業務時間を二日ほどいただき、CloudFrontについて勉強させていただきました!
キャッシュとはなんぞや? リクエストとは?みたいな部分からべんきょうしたので、ミス等があるかもしれません。
もし、気づきましたらご連絡ください!
CloudFrontとは
動的ページや静的ページの配信を高速化させることができる。
各ドメインごとにディストリビューションを作成し、ビヘイビアでパスパターンを管理することができる。
静的ページを表示したいとリクエストされたときは、S3に保存させたオブジェクトを表示させたり、
動的ページを表示したいとリクエストされたときは、EC2サーバーへアクセスさせたりと 行き先を決めることができる。
何がすごいのか?
上記に挙げた内容は単純にすごい仕組みだなと思って、余計なアクセスを減らすことができるのかなという認識でした。
本質は、高速化させる仕組みです!!!
Webアプリケーションを動かす中で、サーバーにアクセスが集中することで負荷がかかってしまい、速度低下や遅延等が発生してしまいます。
速度低下等の不具合で済めば良いですが、最悪のケースはサーバーが落ちることが考えられます。
これを回避するべく、CloudFrontでキャッシュを保持しておこうという仕組みです。
キャッシュとは、一度見たWebページを一時的に保持することができます。
ブラウザキャッシュやオリジンキャッシュといった、どこで保持するかによって名称は変わっていますが、基本的な働きは同じです。
CloudFrontでは、エッジキャッシュという名称でWebページの内容を保持することができます。
さらに、ヘッダーやcookie、クエリストリングによってコンテンツが変わる場合も別々のコンテンツとして保持することができるのです。
この仕組みによって、ヘッダーではPCかモバイルによって変わるコンテンツ内容別に保持、cookieでは個人情報に基づいたコンテンツ表示、クエリストリングではURLにパラメータが付与されているときのコンテンツ表示されている内容を別々に保持できます。
上記の様なキャッシュをCloudFrontの仕組みでエッジロケーション(近くのサーバー)が保持してくれることで、快適な速度でWebページを見ることができます。
まとめ
インフラ部分が全くわからない自分にとって、とてもためになる分野でした。むしろ、バックエンドやフロントエンドの部分よりも、面白く勉強できました。
ユーザーが使う上で、如何に早くページを配信させるかは重要な部分の一つだと思います。
今後も勉強したことを発信していきます。