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

【PHPカンファレンス小田原2025】New RelicのAPMを活用したECサービスにおける...

Futoshi Endo
April 12, 2025
440

【PHPカンファレンス小田原2025】New RelicのAPMを活用したECサービスにおけるメール遅延解消の舞台裏

担当しているECサービスにおいて、TVで取り上げられるタイミングや、クーポン配布時に購入が集中すると負荷が高まり一部のメールで配信遅延が発生していました。
ECサービスにおいてメールの遅延はクリティカルなビジネスインパクトを与える為、解決は急務です。
本セッションでは「推測するな、計測せよ」の精神で、実際にNew RelicのAPMを活用し遅延の根本原因を特定し、効果的に解消した実例をお話しします。
このセッションでは以下のような話を紹介します。

New Relicを使った問題可視化と原因特定
New Relic APMの活用によるアプリケーションパフォーマンスの測定
SLI/SLOの設定を通じて指標を明確化し、改善目標を策定
改善ステップと実装詳細
効果測定とその後のまとめについて

ref: https://docs.google.com/presentation/d/13ZRd2N2_twGx5dc44J9yvdjBiMgN8XLhNI4WCOOhIww/edit?slide=id.g34a5610afec_0_678&pli=1#slide=id.g34a5610afec_0_678

Futoshi Endo

April 12, 2025
Tweet

More Decks by Futoshi Endo

Transcript

  1. © 2012-2025 BASE, Inc. 2 氏名:Futoshi Endo 所属:BASE株式会社 業務:バックエンド エンジニア

    趣味:料理、音楽鑑賞、散歩 奥さんと、豆柴(どんちゃん)の三人で楽しく暮 らしています。 • Endo Tech Blog • https://scrapbox.io/fendo181/ Fendo181 自己紹介
  2. © 2012-2025 BASE, Inc. アジェンダ 4 • 発表のゴール • メールの配信遅延問題による影響

    • 遅延を解消するまでのステップの紹介 • CUJ/SLI/SLOについて • New Relic APMなどを活用した計測方法の解説 • 改善後の結果について • まとめ
  3. © 2012-2025 BASE, Inc. 今日の発表ゴール 6 1 2 New RelicのAPMの活用方法について学べる

    「推測ではなく、計測する事」の大事さについて学ぶ
  4. © 2012-2025 BASE, Inc. 15 • ショップさんの商品がTVやネットで取り 上げられと注文が殺到し、購入が短期間 で増加。結果、メールがさばけずメール の送信が遅延する事象。

    • キャンペーンなどのクーポン配布時でも 同様に遅延が発生していた(当時) メールの配信遅延問題による影響について
  5. © 2012-2025 BASE, Inc. 17 購入者 EC DB AWS SES

    ①購入者が商品 を購入する メールの配信遅延による影響について メール送信のざっくり構成図(当時)
  6. © 2012-2025 BASE, Inc. 18 購入者 EC DB AWS SES

    ②メールを送信す る為のデータを DB に保存する メールの配信遅延による影響について メール送信のざっくり構成図(当時)
  7. © 2012-2025 BASE, Inc. 19 購入者 EC DB AWS SES

    抽選商品 通常商品 予約商品 メールの配信遅延による影響について メール送信のざっくり構成図(当時)
  8. © 2012-2025 BASE, Inc. 20 購入者 EC DB AWS SES

    抽選商品 通常商品 予約商品 ③ メール送信用の batch を使ってcronで1分間 に送信する件数と メールタイプを指定し てDBからデータを取 得し、送信処理を行う メールの配信遅延による影響について メール送信のざっくり構成図(当時)
  9. © 2012-2025 BASE, Inc. 21 購入者 EC DB AWS SES

    抽選商品 通常商品 予約商品 抽選完了用の通知のメール 購入完了用のメール 予約完了用の通知用のメール メールの配信遅延による影響について メール送信のざっくり構成図(当時)
  10. © 2012-2025 BASE, Inc. 22 購入者 EC DB AWS SES

    抽選商品 通常商品 予約商品 購入完了用のメール メールの配信遅延による影響について メール送信のざっくり構成図(当時) 予約完了用の通知用のメール 抽選完了用の通知のメール ④ メール送信用の batchを 通じてAWS SES経由で メールを送信を行う
  11. © 2012-2025 BASE, Inc. 23 購入者 EC DB AWS SES

    抽選商品 通常商品 予約商品 購入完了用のメール ⑤購入者に メールが届く メールの配信遅延による影響について メール送信のざっくり構成図(当時) 抽選完了用の通知のメール 予約完了用の通知用のメール
  12. © 2012-2025 BASE, Inc. 24 購入者 EC DB AWS SES

    抽選商品 通常商品 予約商品 購入完了用のメール ⑤購入者に メールが届く メールの配信遅延による影響について メール送信のざっくり構成図(当時) 今回のケースでは 購入完了メールが遅延していた 購入完了用のメール 抽選完了用の通知のメール 予約完了用の通知用のメール
  13. © 2012-2025 BASE, Inc. 25 メールの配信遅延による影響について • ショップさんの商品がTVやネットで取り 上げられと注文が殺到し、購入が短期間 で増加すし、メールがさばけずメールの

    送信が遅延する事象。 • キャンペーンなどのクーポン配布時でも 同様に遅延が発生していた(当時) • 購入者からすると「購入できてないです か?」と不安になり、お問い合わせにも繋 がる
  14. © 2012-2025 BASE, Inc. 31 • DBに1000件以上レコードが作らていたが1分 間に200件程度しか送信ができてない • アプリケーション側でN+1問題がおきてない

    かを調べたか問題なかった • AWS SES でレートリミットの制限も特にか かってない • DBで取得する件数を上げても変わらない • 詳細な監視体制も整ってなく、原因がわから ない... 遅延を解消するまでのステップについて
  15. © 2012-2025 BASE, Inc. 34 Rule 1. プログラムが何処で処理時間を費やすのかは分からない。 ボトルネックは驚くべき場所で起こる。だからその箇所がボトルネックであるという証明 をするまで、当てずっぽうで高速化のためのハックを入れようとしてはならない。

    Rule 2. 計測せよ。計測するまで最適化をするな 。そしてたとえ計測したとしても、ある 部分のコードが圧倒的に残りの部分より重い場合でなければ、最適化をしてはならな い。 遅延を解消するまでのステップについて 引用元: https://www.catb.org/esr/writings/taoup/html/ch01s06.html
  16. © 2012-2025 BASE, Inc. 35 • ボトルネック調査を十分におこなわず、先に手を動かしてしまった ◦ 先にやるべき事は計測を行う為の基盤づくりを行い、次に具体的なアクショ ンを設定すべきだった

    • PJメンバーとも相談をして、まずは以下の3つの指標を設定したうえで、計測 できる環境を用意し、遅延を解消することにしました。 ◦ ユーザーにとって重要な体験(Critical User Journey) ◦ サービスレベル指標(SLI:Service Level Indicators) ◦ サービスレベル目標(SLO:Service Level Objectives) ※直近でSLI/SLO勉強会をやっていた事もきっかけに今回のプロジェクトでも導 入する事にした経緯があります 遅延を解消するまでのステップについて
  17. © 2012-2025 BASE, Inc. 37 • CUJ(Critical user journey)とは ◦

    多くの目標を達成するために共通するタスクや、非常に重要な目標を達成するた めに行う一連の流れを指します。 • 全体のユーザー体験(フードデリバリーアプリのCUJ) ◦ アプリを起動する ◦ レストランを検索/選択する ◦ メニューから商品を選ぶ ◦ 注文を確定する ◦ 支払いを行う ◦ 配達状況を確認する ◦ 料理を受け取る • 特に重要なユーザー体験 ◦ ユーザーが注文をして料理を受け取る CUJ/SLI/SLOについて
  18. © 2012-2025 BASE, Inc. 38 • SLI(サービスレベル指標)とは ◦ SLI(Service Level

    Indicator)は、サービスの品質を測定するための具体的 な指標。SLIは、サービスのパフォーマンスを定量的に測定するために使用さ れます。モニタリングできるものが基。 ◦ 例えば、Webサービスの応答時間やシステムの稼働率などがSLIの例 ▪ リクエスト成功率(99.9%) ▪ システム稼働時間(99.95%) CUJ/SLI/SLOについて
  19. © 2012-2025 BASE, Inc. 39 • SLO(サービスレベル目標)とは ◦ SLO(Service Level

    Objective)は、SLIに基づいて設定された具体的な目標 値です。 SLOは、サービスのパフォーマンスを評価するための基準となりま す。 ▪ 「APIのレスポンスタイムは、95%のリクエストで500ms以内」 ▪ 月間のエラーレートは0.1%未満」 CUJ/SLI/SLOについて
  20. © 2012-2025 BASE, Inc. 41 全体のユーザー体験(購入完了メールにおけるCUJ) ◦ 商品を購入する。 ◦ ユーザーが購入完了メールをもらう

    ◦ ユーザーが購入完了メールの中身をみたり、リンクをクリックしたり。 特に重要なユーザー体験 ◦ ユーザーが商品を購入後に、購入完了メールが届く。 CUJ/SLI/SLOについて
  21. © 2012-2025 BASE, Inc. 42 • 購入完了メールにおけるSLI/SLOを設定する SLI ◦ 購入完了メールの受信レイテンシ

    ▪ (ユーザーが商品を購入後に購入完了メール受信されるまでの時間) SLO ◦ 28日間でユーザが商品を購入してから購入完了メールがとどくまでの時間が120秒 以内の割合が97% CUJ/SLI/SLOについて
  22. © 2012-2025 BASE, Inc. 43 購入者 EC DB AWS SES

    抽選商品 通常商品 予約商品 購入完了用のメール メール送信のざっくり構成図(当時) CUJ/SLI/SLOについて
  23. © 2012-2025 BASE, Inc. 44 購入者 EC DB AWS SES

    抽選商品 通常商品 予約商品 購入完了用のメール メール送信のざっくり構成図(当時) このスコープでボトルネックを調査す ると遅延解消の原因が特定しやすいと 判断ができる CUJ/SLI/SLOについて
  24. © 2012-2025 BASE, Inc. 47 New RelicのAPMを活用した計測方法の紹介 • NewRelicで提供されているAPM (Application

    Performance Monitoring)。 • アプリケーションが想定通りのパフォーマンスを 発揮しているかどうかを監視し、その改善に向け た原因の特定や、改修の迅速化を実現するための プロセス、あるいはそのためのツールを指しま す。 • APMを導入することで、アプリケーションの パフォーマンス低下やエラーを検知し、その原因 を素早く特定して対処することができる
  25. © 2012-2025 BASE, Inc. 49 New RelicのAPMを活用した計測方法の紹介 • New Relic

    APMの「トランザクショントレース(Transaction trace)」画面でメール の送信処理を見たところ、1回のメール送信処理の処理全体の所要時間で最大8分21秒 程かかっていた • SMTP(CakeSocket, SmtpTransport)が逐次的に行われていて、トータルで時間か かってる ◦ なぜSMTPが使われているか? ▪ 歴史的経緯で当時、AWS API経由だとsjisで送れない。ガラケーユーザーの購入者 さんが困る為、SMTPを使っていた。
  26. © 2012-2025 BASE, Inc. 50 New RelicのAPMを活用した計測方法の紹介 SMTP(1通あたり) • 接続:

    500〜800ms(遅いと1〜2秒) • 送信処理: 300〜700ms → 合計:1通あたり1〜2秒以上になることも SES API(1通あたり) • API POST:200〜400ms(場合によってはもっと速い) • 非同期で並列送信可能 → 並列処理で1秒あたり数十通以上も可能 SMTP と SES APIを使った送信方法の違いについて
  27. © 2012-2025 BASE, Inc. 53 • DBに1000件以上レコードが作らていたが 1分間に200件程度しか送信できてない • NewRelicを確認したところ、LA/CPUの負荷

    に余裕がある。 • 例えると1000人の行列ができるラーメン屋が あるが、作っている人間が2人しかいない... New RelicのAPMを活用した計測方法の紹介
  28. © 2012-2025 BASE, Inc. 54 New RelicのAPMを活用した計測方法の紹介 1分間の送信件数をあげ るためにbatchの並列数 や、EC2のインスタンスタ

    イプを上げたら遅延が解 消しそう (戦略2) SMTPからSES APIに 切り替えたら トランザクションでの 遅延が解消しそう (戦略1)
  29. © 2012-2025 BASE, Inc. まとめ 58 • メール改善に限らず、パフォーマンスチューニングする際は 「推測するな。計測せよ」の心構えが大事。 •

    計測するにあたって、事前にCUJ/SLI/SLOを定義する事で効 果的にボトルネックの調査と、改善方法が定まるのでおすす めです。 ◦ SLI/SLOと聞くとSRE文脈に聞こえるかもしれないです が、領域関係なく活用できる概念なので知っておいて良い 思いました! • 効果測定にあたっては、New Relic APMを活用する事で詳細 に調査ができるので使っていきましょう!
  30. © 2012-2025 BASE, Inc. 60 Thanks for listening ! Enjoy

    PHPカンファレンス小田原 2025🏯