Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
イオン店舗一覧ページのパフォーマンスチューニング事例 / Performance tuning...
Search
AEON
August 26, 2025
Technology
1
150
イオン店舗一覧ページのパフォーマンスチューニング事例 / 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
会社もクラウドも違うけど 通じたコスト削減テクニック/Cost optimization strategies effective regardless of company or cloud provider
aeonpeople
2
560
SREがコストセンターではないことを大きな声と実例で伝えたい/SRE Is Not a Cost Center: Real-World Stories That Prove True Value
aeonpeople
1
820
SREチームの越境と対話〜どのようにしてイオンスマートテクノロジーは横軸運用チームの廃止に至ったか〜/the-Cross-border-and-dialogue-of-SRE
aeonpeople
13
7.1k
PagerDuty×ポストモーテムで築く障害対応文化/Building a culture of incident response with PagerDuty and postmortems
aeonpeople
3
810
【内製開発Summit 2025】イオンスマートテクノロジーの内製化組織の作り方/In-house-development-summit-AST
aeonpeople
2
2.7k
【ITmedia DX Summit 23/基調講演】イオンが構築する超大規模データ基盤と、その活用戦略
aeonpeople
2
950
イオングループ プロダクト人材向け会社紹介資料 / AEON Product Talent Recruitment Deck
aeonpeople
0
1.5k
DevOpsに向けたテスト方針/Testing Policy for DevOps
aeonpeople
1
200
HCP TerraformとAzure:イオンスマートテクノロジーのインフラ革新 / HCP Terraform and Azure AEON Smart Technology's Infrastructure Innovation
aeonpeople
3
1.8k
Other Decks in Technology
See All in Technology
OCI Bastionサービス
oracle4engineer
PRO
1
120
[OCI Skill Mapping] AWSユーザーのためのOCI(2025年8月20日開催)
oracle4engineer
PRO
2
110
20250818_KGX・One Hokkaidoコラボイベント
tohgeyukihiro
0
130
広島発!スタートアップ開発の裏側
tsankyo
0
190
サービスロボット最前線:ugoが挑むPhysical AI活用
kmatsuiugo
0
180
LLM時代の検索とコンテキストエンジニアリング
shibuiwilliam
2
1.1k
AIエージェントの開発に必須な「コンテキスト・エンジニアリング」とは何か──プロンプト・エンジニアリングとの違いを手がかりに考える
masayamoriofficial
0
270
歴代のWeb Speed Hackathonの出題から考えるデグレしないパフォーマンス改善
shuta13
6
580
Oracle Base Database Service:サービス概要のご紹介
oracle4engineer
PRO
2
20k
[OCI Technical Deep Dive] OCIで生成AIを活用するためのソリューション解説(2025年8月5日開催)
oracle4engineer
PRO
0
140
なごミュ@SPAJAM2025 第二回予選
1901drama
0
120
会社にデータエンジニアがいることでできるようになること
10xinc
9
1.5k
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
A Tale of Four Properties
chriscoyier
160
23k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Faster Mobile Websites
deanohume
309
31k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
The Pragmatic Product Professional
lauravandoore
36
6.8k
For a Future-Friendly Web
brad_frost
179
9.9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
61k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
The Art of Programming - Codeland 2020
erikaheidi
55
13k
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などコストをかけながらパフォーマンス改善を行うという やり方もあるためケースバイケースで検討が必要 まとめ さいごに 皆さんも是非機会があれば、パフォーマンスチューニングに チャレンジしてみてください!
ご清聴ありがとうございました