>100 Views
October 11, 25
スライド概要
JAWS Festa 2025での登壇資料です
JAWS Festa 2025 in ⾦沢 AWSで作るIaaS 2000 overのCloudFrontを 管理するための試⾏錯誤 DigitalCube 岡本秀⾼ 2025. 10. 11 © DigitalCube Co. Ltd.
はじめに 今⽇知ってほしいこと ● SaaS 開発における技術選択の難しさ ● IaC化を後回しにすると、何が起きるか ● 中⻑期的改善に向けたコミュニティの活かし⽅ © DigitalCube Co. Ltd. 22
⾃⼰紹介 ● 地元企業を2社ほど転々 ● DigitalCube - アプリケーション開発者 ● Stripe - Developer Advocate ● DigitalCube - 事業戦略室 ( BizDev ) AWS Samurai 2017 / Alexa Champions / AWS Community Builders / JP_Stripes Connect 2019 / WordCamp Kansai 元実⾏委員⻑ Okamoto Hidetaka 岡本 秀⾼ © DigitalCube Co. Ltd. 3
Shifter: WordPressを「静的サイト」に変える SaaS https://ja.getshifter.io © DigitalCube Co. Ltd.
Shifterにおけるコンテンツの配信⽅法 WordPressサイトを、静的サイトとして配信する © DigitalCube Co. Ltd. 55
マルチテナントIaaSを AWSでどう構成するか? © DigitalCube Co. Ltd.
技術的な背景 2017年には存在しなかったもの ● SaaS Builder Toolkit: 2024年 ● Amazon EventBridge: 2019年 ● AWS CDK: 2018年 ● AWS Amplify: 2017年下半期にgen1 © DigitalCube Co. Ltd. 77
結論: 頑張って作る CloudFrontは 利用開始までに 20分程度かかる → 事前に在庫を作って解決 © DigitalCube Co. Ltd. 8
そして2025年 © DigitalCube Co. Ltd.
© DigitalCube Co. Ltd.
ユーザー数‧サイト数増加に伴う運⽤トラブル この数のCloudFront、 どうやって運⽤するんの? ● 構成をコードで管理(IaC)していない ● 作成スクリプトを変更しても、 既存のリソースは変わらない ● 3000件のCloudFrontを 更新するバッチを書いたことは? © DigitalCube Co. Ltd. 1111
気合いの アップデート スクリプト ・Configを取得し、 差分を更新して Update ・Tagベースで更新対象を特定 ・AWS APIのスロットリング回避で 逐次実行 → つまり実行にすごく時間がかかる © DigitalCube Co. Ltd. 12
負荷軽減策: CloudFront Functions ・2021年ごろ登場 ・Lambda@edgeはUpdateDistribution ・こっちはfunctions更新で一括反映 ・全サイト適用系と 軽量なカスタマイズを CFFに集約 © DigitalCube Co. Ltd. 13
IaaSでのCDNカスタマイズ要件の例 エッジ関数でやっていること(⼀例) ● S3へのリクエストパス調整 ● Basic認証( functions のつけ外しで対応) ● サイトに対する表⽰制限 ○ 料⾦の未払い / プラン利⽤枠の超過 © DigitalCube Co. Ltd. 1414
今、同じような IaaSを作るならどうするか © DigitalCube Co. Ltd.
IaaSでのCDNカスタマイズ要件の例 静的サイトホスティングを今作るなら ● CloudFrontをマルチテナントで構築 ○ キャッシュポリシーやエッジ関数を集約管理 ○ CDNはテナントとして管理する ● 個別カスタマイズはCloudFront KV Storeを利⽤ © DigitalCube Co. Ltd. 1616
IaaSでのCDNカスタマイズ要件の例 CloudFront マルチテナントDistribution https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/distribution-config-options.html © DigitalCube Co. Ltd. 1717
IaaSでのCDNカスタマイズ要件の例 マルチテナント化による設定のTiering ● プランなどによる設定の差別化 ○ WAF / キャッシュ設定 / エッジでの最適化 ● Tierごとにディストリビューションを作成 ○ プラン変更時、テナントを移動させる © DigitalCube Co. Ltd. 1818
Tieringの 詳細はZennへ https://zenn.dev/digitalcube/articles/c505ebea9471d7 © DigitalCube Co. Ltd. 19
IaaSでのCDNカスタマイズ要件の例 CloudFront KeyValue Store https://github.com/aws-samples/amazon-cloudfront-functions/blob/main/kvs-key-value-pairs/kvs-key-value-pairs.js © DigitalCube Co. Ltd. 2020
IaaSでのCDNカスタマイズ要件の例 CloudFront Functions X KVSによるカスタマイズ ● Basic認証や閲覧制限などの設定をKVSへ保存 ● CF FunctionsはKVSの情報を元にリクエストを処理 ● コントロール層はユーザー操作やイベントに応じて KVS APIを利⽤して設定を更新する © DigitalCube Co. Ltd. 2121
IaaSでのCDNカスタマイズ要件の例 SBTを利⽤して、アプリと制御層を分離する? https://aws.amazon.com/jp/builders-flash/202410/multi-tenant-saas-pattern/ © DigitalCube Co. Ltd. 2222
IaaSでのCDNカスタマイズ要件の例 まとめ ● 最近のアップデートにより、 AWSで IaaS / SaaS はかなり作りやすくなった キーワード: CloudFront マルチテナント / KVS / SBT ● 情報洪⽔に溺れないために、JAWS-UGを活⽤しよう © DigitalCube Co. Ltd. 2323