追記
Qiita Advent Calendar 2023にてNew Relic賞をいただくことができました!
ご選出いただいたNew Relic様、また記事を読んでくださった皆様、誠にありがとうございました🙇♂️
https://blog.qiita.com/adventcalendar-2023-presents-winners/
はじめに
この記事はNew Relic 使ってみた情報をシェアしよう! by New Relic Advent Calendar 2023 24日目の記事になります
今回はDatadogからNew Relicに移行後はじめて、かつ組織にSREポジションができてはじめてのパフォーマンス改善についてご紹介します。
この記事で紹介しないこと
- 高度なパフォーマンス改善のノウハウ
- Datadogからの移行ノウハウ
あらまし
国内最大級のファッションレンタルサービスを展開するエアークローゼットでは、サービスサイトやアプリの他に、倉庫システムなど様々なシステムを自社内製化しています。
なかでも特徴的なのが、スタイリストがオンライン上でお客様に合ったお洋服をお選びするスタイリング提供システムです。
ただ、このシステムにはパフォーマンス面の課題があり、度々スタイリストさんから「ローディングが長い」「サクサク動くようにしてほしい」といった要望を受けていました。が、優先度が上がらず着手されていませんでした。
そんな中、エアークローゼットでは2023年3月にSREポジションが誕生し、プロダクトの品質や障害対応速度の向上などに立ち向かっていました。パフォーマンスまわりの課題をCTOと棚卸する中で、このスタイリング提供システムのパフォーマンスが話題にあがったのです。
そして、Datadogから移行したばかりのNew Relicを使い、システムのパフォーマンスを改善していくことが決まりました。
やったこと
1. New Relicでパフォーマンス問題の原因を探る
まずは、パフォーマンス問題のざっくりとした原因を探ります。
New RelicのTransactionsでは、エンドポイント単位のパフォーマンスを見ることができます。ここで、問題の原因がDBにあるのか、アプリケーションの処理にあるのか、外部との通信にあるのかを確認することができます。
スタイリング提供システムにおいては、ほとんどがDBの問題であることがわかりました。そこで、流れているクエリを見てみようとしたのですが...
クエリがない...だと...?!
2. New Relicの設定でクエリ転送設定を有効化する
どうやら、導入時にクエリの転送設定をしていなかったようです。
ドキュメントを参考に、スロークエリの転送設定とTransactionにおけるクエリの転送を設定してみることにしました。
New Relicの設定ファイルでslow_sql
とtransaction_tracer
を設定することで、簡単に有効化ができました。
リリース後すぐに、以下のようにクエリを確認できるようになります。
3. 問題の原因を調査・対策
先ほど確認できたクエリを実際に流してみたり、EXPLAIN
してみたりして調査を進めました。調査の中で、複雑なクエリや冗長なクエリによってパフォーマンスが低下しているケースはほとんどありませんでした。
お恥ずかしいことに、原因のほとんどは取得・更新のキーに使用しているカラムにIndexが貼られていなかったことでした...。
4. 対策を打つ
貼るべきIndexが貼られていなかったこともあり、改善のためのアクションはほとんどが「適切なインデックスを貼ること」でした。
1~2ヶ月を通して7カラムにIndexを貼り、都度その効果を確認していきました。
視覚的にわかりやすく、改善が目に見えてわかるのも非常にありがたいです。
どのくらいの効果があったの?
結果的に、多くのエンドポイントにおいてパフォーマンスを改善することができました!
API | 改善前 | 改善後 | 改善幅 | ||
---|---|---|---|---|---|
A | 4.34s | → | 0.38s | = | 3.96s (91%改善) |
B | 3.96s | → | 0.37s | = | 3.59s (90%改善) |
C | 10.6s | → | 7.41s | = | 3.19s (30%改善) |
D | 4.23s | → | 0.57s | = | 3.66s (86%改善) |
E | 4.49s | → | 0.74s | = | 3.75s (83%改善) |
トータルすると、選定1回あたり18.15秒のパフォーマンス改善になりました。
エアークローゼットでは年間約500,000回以上の選定が行われているため、年間にすると実に約2,520時間分の選定時間を削減することができました🎉🎉🎉
まとめ
最後までご覧いただきありがとうございました🙏
エアークローゼット Advent Calendar 2023もご覧いただけると大変嬉しく思います!
エアークローゼットはエンジニア採用活動も行っておりますので、興味のある方はぜひご覧ください!