Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWSが公表している 「BestPractices For Wordpress on AWS」...
Search
kinjo
June 29, 2023
Programming
0
1.7k
AWSが公表している 「BestPractices For Wordpress on AWS」AWS CDK で作ってみた
近い内に、CDKのコードもGithubのパブリックリポジトリにアップします。
kinjo
June 29, 2023
Tweet
Share
More Decks by kinjo
See All by kinjo
初めてAWSサミット行ってきた
kinjo_yuya
0
59
Other Decks in Programming
See All in Programming
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
100
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
790
AIコーディングエージェント(NotebookLM)
kondai24
0
180
テストやOSS開発に役立つSetup PHP Action
matsuo_atsushi
0
150
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
450
認証・認可の基本を学ぼう後編
kouyuume
0
190
愛される翻訳の秘訣
kishikawakatsumi
1
320
20251127_ぼっちのための懇親会対策会議
kokamoto01_metaps
2
430
30分でDoctrineの仕組みと使い方を完全にマスターする / phpconkagawa 2025 Doctrine
ttskch
3
830
Why Kotlin? 電子カルテを Kotlin で開発する理由 / Why Kotlin? at Henry
agatan
2
7k
DSPy Meetup Tokyo #1 - はじめてのDSPy
masahiro_nishimi
1
160
俺流レスポンシブコーディング 2025
tak_dcxi
14
8.6k
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
55
12k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Side Projects
sachag
455
43k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Site-Speed That Sticks
csswizardry
13
1k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
BBQ
matthewcrist
89
9.9k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Unsuck your backbone
ammeep
671
58k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Transcript
AWSが公表している 「BestPractices For Wordpress on AWS」 AWS CDK で作ってみた
自己紹介 会社名: 株式会社シーエー・アドバンス 名前:金城 裕也(きんじょう ゆうや)
[email protected]
github.com/yuyakinjo 最近、CDKやってます
今日話したい事 ・ベストプラクティスで公開されているアーキテクチャを参考にCDKで作ってみた ・当初やろうとしていた構成 VS ベストプラクティスでパフォーマンス比較 ・ベストプラクティス + α ・やってみて感想
AWS CDKとは
AWS CDK とは ・AWS Cloud Development Kit(CDK)は、クラウドインフラをコード で定義するためのオープンソースのソフトウェア開発フレームワーク です ・Python,
Java, TypeScript等の言語を使えます ・CloudFomation −(JSON・YAMLつらみ) = CDK
「BestPractice For Wordpress on AWS」を取り入れるまでの背景
弊社でグループ会社の社内・社外広報 サイトを担当 ・非エンジニアさんでもサイト編集できるよう広く普及した wordpress採用
現状の構成(グレーアウトは非採用)
課題点 ・サイトちょっと重いね(特に初期表示・画像・動画) ・アクセス殺到すると落ちるね(DBコネクション原因ぽいね) ・データ料金(EFS)高いね
改善アクション ・サイトちょっと重いね(特に初期表示・画像・動画) → CloudFrontでキャシュ ・アクセス殺到すると落ちるね(DBコネクションプール枯渇が原因ぽい) → AuroraServelessV2に切り替え ・データ料金(EFS)高いね → S3に画像・動画移動
でも実は、AWSの担当者様から アドバイスはもらっていた・・・ 弊社では、年1ぐらいで(コロナ時期除く)、AWSの担当者様から 新しいサービスの紹介や、現在弊社で運用しているシステムの アーキテクチャを直々にレビューしてもらう機会がありました。 その時に、上述した課題点をお伝えし、ベストプラクティスなるものを共 有してもらっていた。
「Best Practices for WordPress on AWS」 の概要
・AWS ホワイトペーパーとガイド AWS と AWS コミュニティによって作成された、テクニカ ルホワイトペーパー、技術ガイド、参考資料、リファレンス アーキテクチャ図などの技術文書(抜粋)。 Best Practices
for WordPress on AWS
ベストプラクティス構成
現状の構成(グレーアウトは非採用)
改善アクション → CloudFrontでキャシュ → AuroraServelessV2に切り替え → S3に画像・動画移動 → 上記で、課題は解決するはずだから、 memcachedはオプションで!!
memcachedなしでいくぞう
CDKにて作成後、パフォーマンス比較
負荷テストで、1200req / 10sec 結果:2xx → 20%弱 リクエスト過多 → ALB 503
もしかして、memcached必 要なのか 伸びない・・・
memcached追加!!
アクセス改善1000倍以上 248req/10sec → 20000req/10sec ※リンクを共有して10秒以内に全社員がアクセスしたのを想定
負荷テストで、20000req / 10sec 結果:2xx → 99%以上 リクエスト過多 → ALB 503
ならない memcached必要やん! 伸びすぎた草
ELB が503返さない memcached 必要やん!
レスポンスタイム改 善 memcached 必要やん!
DBコネクション枯 渇しない memcached 必要やん!
ECSのメトリクスが穏やかになっている スパイクしても、スケールする余裕ある。。。
memcached 頑張ってるね
・memcached ・memcachedを活かすplugin(w3-total-cache) ・pluginの使用方法もリポジトリで解説してました まとめ:強さのポイント
ベストプラクティス + α
EC2のスケール管理辛い + そういえば、 認証必要だった
・スケール管理を楽にしよう EC2 → ECS ・認証 社内向けのためコンテンツ・コンテンツに掲載されている画像・動画類 → 社内のSSO通った人のみ ベストプラクティス +
α
構成図でみる認証経路
・①⇔④ CloudFront - ALB 間はOIDC使う(やったことある) ・①⇔② CloudFront - S3間どうしよう(やったことない) 認証は、社内独自SSO(CASSO)
え、Lambda@EdgeとCognito 準備するの・・・ Lambda + Cognito大げさ・・・ 公式見ると実装例ある!が・・・・
世にあるのもそ れに追随する が多い・・
ALB ⇔ S3 に認証を寄せるか 副作用:CloudFrontのキャッシュ使わないことになるかもだけど。安全第一 参考例あるかな・・・・ 近いのあった!!!! リリースが昨年末 1. VPC
Endpointを準備 2. ALBのターゲットグループに設定 これこれ感
認証込み構成図
・EC2 → ECS Fargate ・認証 ALB ⇔ VPC Endpoint ⇔S3
1. すべての認証経路をALBのOIDCに寄せ、サーバーサイドに リクエストが届かない(便利!) 2. アプリ側で認証を実装しない(差分少なくて楽!) +α の まとめ
今回やってみた感想
ベストプラクティス は 裏切らない
・認証はさんだ時のキャッシュ(CloudFront)の扱い方 headerとかcookieとかの条件が難しいのでパス!安全第一 苦労したところ①
・CDKでVPC EndpointのENIからPrivate IPアドレスの取得 まだ普及していないやり方なので、CDKではまだ実装 例ないので、自力で取得! 参考 :https://aws.amazon.com/jp/blogs/networking-and-content-delivery/hosting-internal-https-static-websites-with -alb-s3-and-privatelink/ 苦労したところ②
流れ VPC Endpoint作成 ↓ ENIからIPアドレス抽出 ↓ ALBのターゲットグループ に追加
次の改善点
次の改善点 ・CloudFront入れたけど、まだキャッシュさせてるものない(副作用) → ホワイトペーパーにヒントがありそう ・ALB ⇔VPC Endpoint ⇔ S3間のキャッシュ →
AWS File CacheかAWS StorageGateway使えそう? ・誰でも使えるようにしたい → ConstructHub、Github、Qiita等で共有
現場からは以上です。