あきのの勉強ノート

書くところに困ったネタの集まり

AWS ソリューションアーキテクト勉強メモ 第3章

引き続き前回の続きから初めていきます。

今回はCloudFrontやRoute53の話になります。

第3章 ネットワーキングとコンテンツ配信

CloudFront

CloudFrontはHTMLやCSS、画像などの静的コンテンツをキャッシュしオリジンサーバーの代わりに配信するCDN(Contents Delivery Network)サービスです。

利点

  • AWSには世界中に120を超えるエッジロケーションが存在し、CloudFrontを使用することで利用者から最も近いエッジロケーションからコンテンツを高速に配信することができる。
  • CloudFrontを使用することにより画像や動画などのファイルサイズが大きなコンテンツへアクセスする場合でも、オリジンサーバが処理する場合よりサーバの負荷下げながら安定したサービス提供をすることができる。
1. CloudFrontのバックエンド
  • CloudFrontはCDNのため、元となるコンテンツを保持するためのバックエンドサーバ(オリジンサーバ)が必要になる。
  • オリジンサーバにはELB、EC2、S3の静的ホスティングを利用することができる。
  • またオンプレミスのサーバを指定することも可能なため、現在のシステム構成を変更することなく一時的なアクセス増加に対応することも可能。
  • URLのパスに応じて異なるオリジンサーバを指定することで、一つのドメインで複数のサービスを提供できるため、ドメイン名の統一など企業のWebガバナンス戦略にも役立つ。

f:id:ddd-endow:20200104225727p:plain

2. ディストリビューション

ダウンロードディストリビューション

  • HTTPやHTTPSを使用してHTMLやCSS、画像などのデータを配信する際に使用する。

ストリーミングディストリビューション

  • RTMP(Real Time Messaging Protocol)を使用して動画のストリーミング配信をする際に使用する。
3. キャッシュルール
  • 拡張子やURL毎にキャッシュ期間を指定することができる。
  • 動画サイトのURLパスはキャッシュを無効化することでCloudFrontをネットワーク経路としてだけ利用することも可能。

Route 53

Route 53はドメイン管理機能と権威DNS機能を持つサービスです。

ネットワークトラフィックのルーティングや接続先のシステム状況に応じた接続先の変更などのオプション機能も存在し、うまく使用することで可用性やレスポンスを高めることができます。

1. ドメイン管理
  • 新規ドメインの取得や更新などの手続き、ゾーン情報の設定ができる。
  • ドメインの年間利用料は通常のAWS利用料に含まれるため、別途支払いの手続きは不要。
  • 自動更新機能があるため、ドメインの更新漏れと言ったリスクも回避できる。
2. 権威DNS

DNS

権威DNS

キャッシュDNS

  • 変換情報を保持していないDNS

・ホストゾーンとレコード情報

ホストゾーン

  • レコード情報の管理単位を表す。(通常はドメイン
  • example.com」のレコード情報を管理する場合のホストゾーンは「example.com

レコード情報

  • ドメイン名とIPアドレスを変換するための情報。
  • 「www.example.comIPアドレスは192.168.0.100」といったようなもの。
  • Aレコード、MXレコード、CNAMEレコードといった種類がある。
  • Route 53で特徴的なものはAliasレコード

Aliasレコード

  • レコード情報に登録する値としてCloudFrontやELB、S3などのAWSリソースFQDNを指定できる。
  • CNAMEでも同じようなことができるが、Zone Apexにも登録できる違いがある。

Zone Apex

  • 最上位ドメイン(Route 53の場合はホストゾーン名)のこと。
  • example.com」をS3のWebサイトホスティングサービスにアクセスする独自ドメインとして利用したい場合、Route 53であればAliasレコードを使用することで登録できる。
3. トラフィックルーティング

Route 53にゾーン情報を登録する際に、名前解決の問い合わせに対してどのように応答するかを決める7種類のルーティングポリシーが存在する。

 

シンプルルーティングポリシー

  • 標準的な1対1のルーティング

フェイルオーバールーティングポリシー

  • アクティブ/スタンバイ方式でアクティブ側のシステムへのヘルスチェックが失敗したときに、スタンバイ側のシステムへルーティングするポリシー。
  • 本番システム障害時にSorryサーバのIPアドレスセカンダリレコードとして登録することで、自動的にSorryコンテンツを表示させることができる。

位置情報ルーティングポリシー

  • ユーザの位置情報に基づいてトラフィックをルーティングする際に使用する。
  • 日本からのアクセスは日本語のコンテンツが配置されたWebサーバに接続する、などの制御が行える。

地理的近接性ルーティングポリシー

  • リソースの場所に基づいてトラフィックをルーティングする。
  • 必要に応じてトラフィックをある場所から別の場所のリソースに移動する際に使用する。

レイテンシールーティングポリシー

  • 複数箇所にサーバが分散されて配置されている場合に、遅延が最も少ないサーバにリクエストをルーティングする。

複数値回答ルーティングポリシー

  • 一つのレコードに異なるIPアドレスを複数登録して、ランダムに返却されたIPアドレスに接続する。
  • ヘルスチェックがNGになったIPアドレスは返却されたないため、正常にどうしているサーバに対してのみアクセスを分散させることができる。

加重ルーティングポリシー

  • 指定した比率で複数のリソースにトラフィックをルーティングする際に使用する。
  • 拠点をまたがってリソースの異なるサーバが配置されている場合にリクエスト比率を調整する、といったことができる。
  • ABテストのために新サービスをリリースしたサーバに一定割合のユーザを誘導したい、などもできる。
4. トラフィックフロー

ルーティングポリシーを組み合わせて様々なルーティング環境を構築s流ことができるが、各レコード間の設定が複雑になることがある。

トラフィックフローはそれらの組み合わせをビジュアル的にわかりやすく組み合わせるためのツールを使って定義できる。

5. DNSフェイルオーバー

フォールトトレラントアーキテクチャ

  • システムに異常が発生した場合でも被害を最小限に抑えるための仕組みのこと。
  • 例:
    稼働中のシステムに障害が発生してWebサイトの閲覧ができなくなったとき、一時的に接続先をSorryサーバに切り替えることができる。

最後に

正直CloudFrontなどは今まで「いい感じに接続先を調整するやつ」としか理解してなかったので、とても勉強になりました。

Route 53に関してはドメイン管理やDNSとしての機能しか知らなかったので、トラフィックルーティングがあることすら知りませんでした…

ボリュームとしては少なめでしたが、今まで環境で疑問だったことが次々と解消されてとても楽しい章でした。