Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
イオン店舗一覧ページのパフォーマンスチューニング事例 / Performance tuning...
Search
AEON
August 26, 2025
Technology
2
620
イオン店舗一覧ページのパフォーマンスチューニング事例 / Performance tuning example for AEON store list page
2025年8月26日開催「イオン×ZOZO×『Web配信の技術』著者が語るパフォーマンスチューニング:60分で掴む劇的改善術 | AEON TECH HUB #18」の登壇資料です
AEON
August 26, 2025
Tweet
Share
More Decks by AEON
See All by AEON
Terraformのdrift(差分)を全部AIに任せた!...かった
aeonpeople
0
55
Azureコストと向き合った、4年半のリアル / Four and a half years of dealing with Azure costs
aeonpeople
1
390
Snowflakeで実現したスピード感あるデータ基盤開発 / rapid data infrastructure development achieved with Snowflake
aeonpeople
1
120
プラットフォーム転換期におけるGitHub Copilot活用〜Coding agentがそれを加速するか〜 / Leveraging GitHub Copilot During Platform Transition Periods
aeonpeople
2
580
JTCにおける内製×スクラム開発への挑戦〜内製化率95%達成の舞台裏/JTC's challenge of in-house development with Scrum
aeonpeople
0
590
2025年にHCP Vaultを学び直して見えた景色 / Lessons and New Perspectives from Relearning HCP Vault in 2025
aeonpeople
0
410
会社もクラウドも違うけど 通じたコスト削減テクニック/Cost optimization strategies effective regardless of company or cloud provider
aeonpeople
2
710
SREがコストセンターではないことを大きな声と実例で伝えたい/SRE Is Not a Cost Center: Real-World Stories That Prove True Value
aeonpeople
1
1.1k
SREチームの越境と対話〜どのようにしてイオンスマートテクノロジーは横軸運用チームの廃止に至ったか〜/the-Cross-border-and-dialogue-of-SRE
aeonpeople
13
9.3k
Other Decks in Technology
See All in Technology
手動から自動へ、そしてその先へ
moritamasami
0
200
Multimodal AI Driving Solutions to Societal Challenges
keio_smilab
PRO
1
120
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.9k
MCP・A2A概要 〜Google Cloudで構築するなら〜
shukob
0
160
Modern Data Stack大好きマンが語るSnowflakeの魅力
sagara
0
280
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
0
650
AI/MLのマルチテナント基盤を支えるコンテナ技術
pfn
PRO
5
740
「え?!それ今ではHTMLだけでできるの!?」驚きの進化を遂げたモダンHTML
riyaamemiya
10
4.5k
タグ付きユニオン型を便利に使うテクニックとその注意点
uhyo
2
660
Eight Engineering Unit 紹介資料
sansan33
PRO
0
5.7k
AI (LLM) を活用する上で必須級のMCPをAmazon Q Developerで学ぼう / 20251127 Ikuma Yamashita
shift_evolve
PRO
2
100
セキュリティAIエージェントの現在と未来 / PSS #2 Takumi Session
flatt_security
3
1.4k
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
6.7k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Statistics for Hackers
jakevdp
799
230k
Six Lessons from altMBA
skipperchong
29
4.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
How to Ace a Technical Interview
jacobian
280
24k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
GraphQLとの向き合い方2022年版
quramy
50
14k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
GitHub's CSS Performance
jonrohan
1032
470k
Transcript
イオン店舗一覧ページの パフォーマンスチューニング事例 イオンスマートテクノロジー株式会社 CTO室 TechLeadチーム 石川晴貴 2025年8月26日
自己紹介 各種紹介 石川 晴貴(X:@h0r4k) イオンスマートテクノロジー株式会社 CTO室テックリードチーム(2024.06ジョイン) 趣味:プログラミング、ギター 最近やっていること ・Claude Codeと仲良くなること
・社内MCPサーバを作りNewRelicのNRQLを叩かせ Claude Codeからメトリクスの分析をやってもらったり、 社内のAPI群をMCP化させてホクホクしたりしています
各種紹介
None
本題にはいります
• アプリケーション寄りのパフォーマンスチューニングの話(PHP寄りかも) • かなり基礎的かつ古典的な話がメインになるので耳タコではあると思いますが、この機会に改めて。 ※のでカリカリチューニング的な話は出てきません • 既にAEON TECH HUBでも記事にしていますが、チームを代表して改めて本LTでご紹介させていただきます! 今回お話すること
はじめに https://engineer-recruiting.aeon.info/aeon-tech-hub/interview_store-page
• 店舗一覧サイト • 所在地検索、業態・ブランド検索、 キーワード検索 • 店舗情報の閲覧・検索のみでDB更新系の 操作なし • 店舗一覧用CMS
• CMSから店舗一覧上の店舗情報を更新可 能 • DB更新系の操作有り そもそもイオンの店舗一覧とは? 背景
• まずちゃんと遅い • レスポンスの平均が1,200msと激遅 • 急なアクセス増に耐えられない • 台風などの災害時に店舗はやっているのか?の確認でアクセスが増える • DBのCPUが100%に張り付いてしまいページが閲覧できなくなる
• 暫定的な対応として、 • DBのスペックを常時2段階あげた(コストは4倍に) • 具体的にはvCPU→4倍、メモリ→4倍 • リードレプリカの追加 どんな課題があったのか? 課題
• しかし、 • この状態は健全ではなくコストもかかる • なので • 調査と改修を行って高速化しつつDBのスケールダウンを目指す • すでにNewRelicは導入済みだったため、
NewRelicのAPMの情報からパフォーマンス劣化の原因を探り対応を行うことに 課題に対する取り組み 課題
では実際にNewRelicをみていく
• 問題 • 本番環境のcomposer installでオプションの最適化がなされていなかった • 対応 • composer installに--optimize-autoloaderのオプションを追加
改善① フレームワークの本番プラクティスに準拠する 改善
• 補足して • しっかり公式Documentを読む、書いてある 改善① フレームワークの本番プラクティスに準拠する 改善
• 問題 • 1トランザクションの平均DB Callが4万件弱となるようなリクエストがあった (ここに限らず複数の箇所でN+1問題が発生) • 対応 • ループ内で呼び出されてしまっているN+1クエリをEloquentのEagerLoadingを利用し
て不要クエリを削減 改善② N+1問題 改善
• 問題 • CMS上での記事検索が遅く、CMS内で検索を行うたびにスロークエリが発生 • 対応 • スロークエリの実行計画を確認し最適化 • Indexの貼られていないカラムにはIndexを貼る
など 改善③ スロークエリ対策 改善
• 問題 • ORMにてSELECT * でカラムを絞り込まずにデータ取得を行った場合に時間を要する • 対応 • 必要なカラムのみに絞り込んでデータを取得
改善④ ORMでのSELECT * 対応 改善
• 問題 • CMSでDB負荷の高い操作を行うと店舗一覧サイトへ影響が出てしまう状態になって いた • CMS側には高負荷な参照クエリが多く、すべてのクエリの高速化対応をすぐに行う ことは当時難しかった • 対応
• CMS上で発行されるクエリについてはマスターDBへ、店舗一覧サイトなどの参照系 の操作についてはリードレプリカDBに実行するよう分離 • CMS/店舗一覧サイトいずれもLaravelでmiddlewareを作成しそれぞれの middlewareGroupsに設定を追記 改善⑤ マスター/リードレプリカ 改善
• コスト • DB費用が1/4に減少 • vCPU→1/4、メモリ→1/4に削減 • レスポンス • 1,200
ms-> 300ms 以下へ改善 改善の結果 改善の結果 アラートもかなり減りました…
• パフォーマンスチューニングの効果について • 古典的かつ基礎的なパフォーマンスチューニング(と本番最適化)は結局重要 • インフラに対するコスト意識に関して • インフラコストの削減はアプリケーション側の意識も重要 • パフォーマンスチューニングの取り掛かり方について
• 今回はまずNewRelicから問題を炙り出しを行った • 定量的に問題を分析して効果の高い順(かつ実装の容易な順)から潰していった • コスト削減とパフォーマンス改善のバランスについて • 今回はコストを削減しつつパフォーマンス改善も行えた • が、場合によってはCDNなどコストをかけながらパフォーマンス改善を行うという やり方もあるためケースバイケースで検討が必要 まとめ さいごに
• パフォーマンスチューニングの効果について • 古典的かつ基礎的なパフォーマンスチューニング(と本番最適化)は結局重要 • インフラに対するコスト意識に関して • インフラコストの削減はアプリケーション側の意識も重要 • パフォーマンスチューニングの取り掛かり方について
• 今回はまずNewRelicから問題を炙り出しを行った • 定量的に問題を分析して効果の高い順(かつ実装の容易な順)から潰していった • コスト削減とパフォーマンス改善のバランスについて • 今回はコストを削減しつつパフォーマンス改善も行えた • が、場合によってはCDNなどコストをかけながらパフォーマンス改善を行うという やり方もあるためケースバイケースで検討が必要 まとめ さいごに 皆さんも是非機会があれば、パフォーマンスチューニングに チャレンジしてみてください!
ご清聴ありがとうございました