Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Origin 負荷軽減の観点で見る CloudFront - オプション機能から Origin...

4hei4hei
February 09, 2024
61

Origin 負荷軽減の観点で見る CloudFront - オプション機能から Originless 設計まで -

NRI Netcom tech and design study #21

https://nrinetcom.connpass.com/event/307324/

4hei4hei

February 09, 2024
Tweet

Transcript

  1. Origin 負荷軽減の観点で⾒る CloudFront - オプション機能から Originless 設計まで - 〜NRI ネットコム

    TECH AND DESIGN STUDY #21〜 2024年01⽉30⽇ NRIネットコム株式会社 基盤デザイン事業部 ⻄ 洋平
  2. 1 Copyright(C) NRI Netcom, Ltd. All rights reserved. n ⻄

    洋平 (NISHI Yohei) l NRI ネットコム株式会社 基盤デザイン事業部 (@Osaka) n Web システム開発運⽤チームのインフラ担当 l IaC や SaaS による運⽤とシステム改善 l たまにサーバレスアプリケーション開発 ⾃⼰紹介 https://tech.nri-net.com/entry/learn_with_pictures_cloudfront_lntroduction https://tech.nri-net.com/entry/cloudfront_api_operation_pictures https://jawsug-asa.connpass.com/event/291918/
  3. 2 Copyright(C) NRI Netcom, Ltd. All rights reserved. n AWS

    マネージドなグローバル展開されている CDN サービス n 世界中に存在する Edge による⾼信頼 / 低遅延なコンテンツ配信を実現 Amazon CloudFront (CloudFront) 概要
  4. 3 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CDN

    に期待される役割として主なもの CloudFront (CDN) に期待される役割
  5. 4 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CDN

    に期待される役割として主なもの CloudFront (CDN) に期待される役割 キャッシュ技術でコンテンツ配信を⾼速化
  6. 5 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CDN

    に期待される役割として主なもの CloudFront (CDN) に期待される役割 キャッシュ技術でコンテンツ配信を⾼速化 Origin の保護レイヤとして活⽤
  7. 6 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CDN

    に期待される役割として主なもの CloudFront (CDN) に期待される役割 キャッシュ技術でコンテンツ配信を⾼速化 Origin の保護レイヤとして活⽤ Edge による Origin への負荷軽減
  8. 7 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CDN

    に期待される役割として主なもの CloudFront (CDN) に期待される役割 キャッシュ技術でコンテンツ配信を⾼速化 Origin の保護レイヤとして活⽤ Edge による Origin への負荷軽減 今⽇はこの話
  9. 8 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CloudFront

    は世界中のキャッシュ⽤拠点を利⽤して Viewer へコンテンツを⾼速で配信する n 拠点は多段構成で Viewer から近い順に Edge location と Regional edge cache が存在する Edge location / Regional edge cache
  10. 9 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CloudFront

    は世界中のキャッシュ⽤拠点を利⽤して Viewer へコンテンツを⾼速で配信する n 拠点は多段構成で Viewer から近い順に Edge location と Regional edge cache が存在する Edge location / Regional edge cache
  11. 10 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CloudFront

    は世界中のキャッシュ⽤拠点を利⽤して Viewer へコンテンツを⾼速で配信する n 拠点は多段構成で Viewer から近い順に Edge location と Regional edge cache が存在する Edge location / Regional edge cache 規模は Edge location < Regional edge cache
  12. 11 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CloudFront

    は世界中のキャッシュ⽤拠点を利⽤して Viewer へコンテンツを⾼速で配信する n 拠点は多段構成で Viewer から近い順に Edge location と Regional edge cache が存在する Edge location / Regional edge cache コンテンツは Viewer からの⼈気に応じた場所でキャッシュされる → より多くのコンテンツを Viewer に近い場所で配信可能 規模は Edge location < Regional edge cache
  13. 12 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CloudFront

    の機能の⼀つで Regional edge cache と Origin の間にキャッシュレイヤを追加できる n Origin Shield によるキャッシュヒット率向上や Origin 負荷軽減が可能 Origin Shield
  14. 13 Copyright(C) NRI Netcom, Ltd. All rights reserved. n Viewer

    / Edge からのリクエストやそれに対するレスポンスをトリガーに Edge 上で軽量なスクリプトを実⾏できる n CloudFront では Lambda@Edge と CloudFront Functions (CF2) が利⽤可能 Edge computing (Edge 関数)
  15. 14 Copyright(C) NRI Netcom, Ltd. All rights reserved. n Viewer

    / Edge からのリクエストやそれに対するレスポンスをトリガーに Edge 上で軽量なスクリプトを実⾏できる n CloudFront では Lambda@Edge と CloudFront Functions (CF2) が利⽤可能 Edge computing (Edge 関数) Origin Shield や Edge 関数を活⽤することで Origin への負荷をさらに軽減可能
  16. 15 Copyright(C) NRI Netcom, Ltd. All rights reserved. n Viewer

    / Edge からのリクエストやそれに対するレスポンスをトリガーに Edge 上で軽量なスクリプトを実⾏できる n CloudFront では Lambda@Edge と CloudFront Functions (CF2) が利⽤可能 Edge computing (Edge 関数) Origin Shield や Edge 関数を活⽤することで Origin への負荷をさらに軽減可能 これらを活⽤するケースについて詳しく⾒ていきます
  17. 16 Copyright(C) NRI Netcom, Ltd. All rights reserved. n Origin

    Shield を追加した場合 Origin への全リクエストが Origin Shield を経由するようになる n Origin Shield のキャッシュにないコンテンツへのリクエストは、同オブジェクトに対する他リクエストと 1 つにまとめられる Origin Shield による Origin 負荷軽減
  18. 17 Copyright(C) NRI Netcom, Ltd. All rights reserved. n Origin

    Shield を追加した場合 Origin への全リクエストが Origin Shield を経由するようになる n Origin Shield のキャッシュにないコンテンツへのリクエストは、同オブジェクトに対する他リクエストと 1 つにまとめられる Origin Shield による Origin 負荷軽減 e.g. 新規の同⼀コンテンツに対する⼤量のリクエストが殺到した場合 リクエストは Edge location → Regional edge cache へと到達していく
  19. 18 Copyright(C) NRI Netcom, Ltd. All rights reserved. n Origin

    Shield を追加した場合 Origin への全リクエストが Origin Shield を経由するようになる n Origin Shield のキャッシュにないコンテンツへのリクエストは、同オブジェクトに対する他リクエストと 1 つにまとめられる Origin Shield による Origin 負荷軽減 Origin Shield まで到達すると……
  20. 19 Copyright(C) NRI Netcom, Ltd. All rights reserved. n Origin

    Shield を追加した場合 Origin への全リクエストが Origin Shield を経由するようになる n Origin Shield のキャッシュにないコンテンツへのリクエストは、同オブジェクトに対する他リクエストと 1 つにまとめられる Origin Shield による Origin 負荷軽減 Origin Shield まで到達すると…… 同⼀コンテンツに関するリクエストは⼀つに集約されて Origin へ送られる
  21. 20 Copyright(C) NRI Netcom, Ltd. All rights reserved. n Origin

    Shield を追加した場合 Origin への全リクエストが Origin Shield を経由するようになる n Origin Shield のキャッシュにないコンテンツへのリクエストは、同オブジェクトに対する他リクエストと 1 つにまとめられる Origin Shield による Origin 負荷軽減 Origin Shield まで到達すると…… 同⼀コンテンツに関するリクエストは⼀つに集約されて Origin へ送られる → ⼤量のリクエスト時も Origin の負荷を⼤きく軽減可能!!!
  22. 21 Copyright(C) NRI Netcom, Ltd. All rights reserved. n 他にも

    Origin Shield で負荷軽減が期待できるケースは様々 Origin Shield による Origin 負荷軽減 複数 CDN を併⽤する構成の場合
  23. 22 Copyright(C) NRI Netcom, Ltd. All rights reserved. n 他にも

    Origin Shield で負荷軽減が期待できるケースは様々 Origin Shield による Origin 負荷軽減 複数 CDN を併⽤する構成の場合 他 CDN を CloudFront の前段に配置 & Origin Shield 有効化
  24. 23 Copyright(C) NRI Netcom, Ltd. All rights reserved. n 他にも

    Origin Shield で負荷軽減が期待できるケースは様々 Origin Shield による Origin 負荷軽減 複数 CDN を併⽤する構成の場合 他 CDN を CloudFront の前段に配置 & Origin Shield 有効化 → 全 CDN から Origin へのリクエストを統合 (= 軽減) 可能!!!
  25. 24 Copyright(C) NRI Netcom, Ltd. All rights reserved. n 他にも

    Origin Shield で負荷軽減が期待できるケースは様々 Origin Shield による Origin 負荷軽減 Origin への回線速度に制約がある場合
  26. 25 Copyright(C) NRI Netcom, Ltd. All rights reserved. n 他にも

    Origin Shield で負荷軽減が期待できるケースは様々 Origin Shield による Origin 負荷軽減 Origin への回線速度に制約がある場合 → Origin Shield によるリクエスト統合で帯域消費を抑えられる!!!
  27. 26 Copyright(C) NRI Netcom, Ltd. All rights reserved. n 他にも

    Origin Shield で負荷軽減が期待できるケースは様々 Origin Shield による Origin 負荷軽減 Origin への回線速度に制約がある場合 → Origin Shield によるリクエスト統合で帯域消費を抑えられる!!! キャッシュレイヤとして利⽤できるだけでなく リクエスト統合で Origin 負荷を下げられるのが Origin Shield のメリット
  28. 27 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CloudFront

    では リクエスト / レスポンスの種別に応じて Lambda@Edge / CF2 のそれぞれをトリガー可能 n 各関数の制約事項から、処理内容や実⾏時間などで使い分ける必要がある Edge 関数による Origin 負荷軽減 ~ Edge 関数概要 ~
  29. 28 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CloudFront

    では リクエスト / レスポンスの種別に応じて Lambda@Edge / CF2 のそれぞれをトリガー可能 n 各関数の制約事項から、処理内容や実⾏時間などで使い分ける必要がある Edge 関数による Origin 負荷軽減 ~ Edge 関数概要 ~ パッケージサイズ 1MB 以下 / メモリ 128MB 以下/ 5~30 秒のスクリプトが実⾏可能
  30. 29 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CloudFront

    では リクエスト / レスポンスの種別に応じて Lambda@Edge / CF2 のそれぞれをトリガー可能 n 各関数の制約事項から、処理内容や実⾏時間などで使い分ける必要がある Edge 関数による Origin 負荷軽減 ~ Edge 関数概要 ~ パッケージサイズ 10KB 以下 / メモリ 2MB 以下 / ミリ秒未満の軽量スクリプトが実⾏可能
  31. 30 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CloudFront

    では リクエスト / レスポンスの種別に応じて Lambda@Edge / CF2 のそれぞれをトリガー可能 n 各関数の制約事項から、処理内容や実⾏時間などで使い分ける必要がある Edge 関数による Origin 負荷軽減 ~ Edge 関数概要 ~ パッケージサイズ 10KB 以下 / メモリ 2MB 以下 / ミリ秒未満の軽量スクリプトが実⾏可能 ※ Lambda@Edge と⽐較して制約は厳しいが、低コスト & デプロイ等の取り回しは⾼速
  32. 31 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CloudFront

    では リクエスト / レスポンスの種別に応じて Lambda@Edge / CF2 のそれぞれをトリガー可能 n 各関数の制約事項から、処理内容や実⾏時間などで使い分ける必要がある Edge 関数による Origin 負荷軽減 ~ Edge 関数概要 ~ Viewer request / response (Viewer – Edge 間の通信) をトリガーとするケース
  33. 32 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CloudFront

    では リクエスト / レスポンスの種別に応じて Lambda@Edge / CF2 のそれぞれをトリガー可能 n 各関数の制約事項から、処理内容や実⾏時間などで使い分ける必要がある Edge 関数による Origin 負荷軽減 ~ Edge 関数概要 ~ Viewer request / response (Viewer – Edge 間の通信) をトリガーとするケース → Lambda@Edge と CF2 を実⾏可能
  34. 33 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CloudFront

    では リクエスト / レスポンスの種別に応じて Lambda@Edge / CF2 のそれぞれをトリガー可能 n 各関数の制約事項から、処理内容や実⾏時間などで使い分ける必要がある Edge 関数による Origin 負荷軽減 ~ Edge 関数概要 ~ Origin request / response (Edge – Origin 間の通信) をトリガーとするケース
  35. 34 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CloudFront

    では リクエスト / レスポンスの種別に応じて Lambda@Edge / CF2 のそれぞれをトリガー可能 n 各関数の制約事項から、処理内容や実⾏時間などで使い分ける必要がある Edge 関数による Origin 負荷軽減 ~ Edge 関数概要 ~ Origin request / response (Edge – Origin 間の通信) をトリガーとするケース → Lambda@Edge のみ実⾏可能
  36. 35 Copyright(C) NRI Netcom, Ltd. All rights reserved. n Edge

    関数のユースケースとしてよく挙がるもの n Viewer からのリクエストの宛先を書き換えて他ページ (e.g. Sorry サーバ) へリダイレクトさせる機能 Edge 関数による Origin 負荷軽減 ~ リダイレクト ~
  37. 36 Copyright(C) NRI Netcom, Ltd. All rights reserved. n Edge

    関数のユースケースとしてよく挙がるもの n Viewer からのリクエストの宛先を書き換えて他ページ (e.g. Sorry サーバ) へリダイレクトさせる機能 Edge 関数による Origin 負荷軽減 ~ リダイレクト ~ Edge 関数で S3 等へ⽤意した Sorry サーバへリダイレクト → Origin サーバの機能としてページを持っておく必要がなく、キャッシュも可能
  38. 37 Copyright(C) NRI Netcom, Ltd. All rights reserved. n 新しいサービス

    / 商品発表等のイベントでは Viewer からの新規コンテンツに対するリクエストが急増するケースがある n リクエスト待ちのための待機室を⽤意してリクエストをリダイレクトすることで Origin への流量制御が可能 → Visitor Prioritization Edge 関数による Origin 負荷軽減 ~ リダイレクト +@ ~ Sorry ページのケースと同様の構成で、待機室⽤サーバを⽤意することで実現可能
  39. 38 Copyright(C) NRI Netcom, Ltd. All rights reserved. n Edge

    関数で Web フレームワーク⽤ライブラリを利⽤して Edge に Web サーバ / ホスティング機能を持たせる構成 n Edge での処理でレスポンスが返されるため Origin へ流れる前にリクエスト処理が完了する → Originless Edge 関数による Origin 負荷軽減 ~ Originless ~ https://qiita.com/watany/items/b86c2304832126de76e0
  40. 39 Copyright(C) NRI Netcom, Ltd. All rights reserved. n Edge

    関数で Web フレームワーク⽤ライブラリを利⽤して Edge に Web サーバ / ホスティング機能を持たせる構成 n Edge での処理でレスポンスが返されるため Origin へ流れる前にリクエスト処理が完了する → Originless Edge 関数による Origin 負荷軽減 ~ Originless ~ Originless → Japan AWS Top Engineer の⽅の記事にて紹介されていた概念 https://qiita.com/watany/items/b86c2304832126de76e0
  41. 40 Copyright(C) NRI Netcom, Ltd. All rights reserved. n Edge

    関数で Web フレームワーク⽤ライブラリを利⽤して Edge に Web サーバ / ホスティング機能を持たせる構成 n Edge での処理でレスポンスが返されるため Origin へ流れる前にリクエスト処理が完了する → Originless Edge 関数による Origin 負荷軽減 ~ Originless ~ Edge で実⾏できる = より⾼速なレスポンスが実現可能、というメリットが存在 Edge 関数での実⾏となるため、その制約は考慮すべき https://qiita.com/watany/items/b86c2304832126de76e0
  42. 41 Copyright(C) NRI Netcom, Ltd. All rights reserved. n Edge

    関数で Web フレームワーク⽤ライブラリを利⽤して Edge に Web サーバ / ホスティング機能を持たせる構成 n Edge での処理でレスポンスが返されるため Origin へ流れる前にリクエスト処理が完了する → Originless Edge 関数による Origin 負荷軽減 ~ Originless ~ 例えば Lambda@Edge のスロットリング対策に CF2 を組み合わせることも (おまけ程度の⼀例です)
  43. 42 Copyright(C) NRI Netcom, Ltd. All rights reserved. n CloudFront

    の Edge では Origin Shield や Edge 関数等のオプション機能が利⽤可能 n Origin Shield を有効化することでキャッシュレイヤ追加だけでなくリクエスト統合も可能 → Origin 負荷を軽減!!! n Edge 関数 (Lambda@Edge / CloudFront Functions) による Edge 上での軽量処理が実⾏可能 n Edge 関数でのリダイレクト / Visitor Prioritization や Web ホスティングによって Originless な設計も可能!!! おわりに