NewRelicによるAPM監視でプロアクティブな性能改善に繋げる
クロスマート株式会社 / Hiroshi Take
利用プラン | 利用機能 | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|---|
New Relic - 標準プラン | パフォーマンス監視機能(APM) | 10名以下 | 2023年1月 | B to B |
利用プラン | New Relic - 標準プラン |
---|---|
利用機能 | パフォーマンス監視機能(APM) |
ツールの利用規模 | 10名以下 |
ツールの利用開始時期 | 2023年1月 |
事業形態 | B to B |
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
おかげさまで弊社クロスマートは、2022年急成長をとげました。
しかし、それと同時に成長痛とも言える継続的なデータ数の増加、アプリケーション・データベース負荷の増大に直面していました。
2023年末にデータベースの増強を行い、ひとまず落ち着いてはいますが、今後の卸、飲食店の増加はうれしいことに避けられません。
いままでは、画面が遅い、画面のくるくる(ローディング中)が終わらないという状況に、ユーザ様からの問い合わせで発覚することも少なくありませんでした。
もちろん、ステージング環境(本番環境に近しいテスト環境)にて十分にテストは実施しているものの、やはり実際の多人数によるアクセス、過密時間帯による急激な負荷上昇までは予期できない部分があり、システムの性能をリアルタイムで把握し、迅速な対応を求められるようになってきたという課題感がありました。
また、パフォーマンスが悪いロジックやSQLを特定するのに、今までは手動でログを仕込んで人力で分析したり、ローカル環境に本番データをリストアして再現させる、などの性能調査を行うのにも人力でとても時間がかかっていました。
どのような状態を目指していたか
ユーザからの問い合わせ起点ではなく、やはりシステムの稼働状況をリアルタイムで測定し、パフォーマンスが悪い部分をいち早く特定し対応できるプロアクティブな状態を目指していました。 もちろん、原因となる部分の特定も人力を介さず、簡単に把握できるようになることも重要でした。
比較検討したサービス
- DataDog
- Sentry
比較した軸
- 導入が簡単であること。計測のためにプログラムに手を入れるなどの対応が極力少ないこと。
- APIのパフォーマンスがわかること。
- データベース(SQL)に関するパフォーマンスなどもわかると尚良い。
- 時間範囲で検索ができること。
- 弊社サービスの主要言語Pythonプログラムの計測ができること。もちろん他言語も問わず計測できると尚良い。
選定理由
- 導入者(自分)が使用したことがあり、欲しい情報が取れることを知っていたこと。
- NewRelicを閲覧するユーザが少なければ、後はデータ量で料金が決まる体系であったため、スモールスタートできること。
導入の成果
どのような成果が得られたか
NewRelicを利用することにより、どのプログラム(API)のどの処理に時間がかかっているのか、どのテーブルにクエリが集中しているのか、その処理のデータベース処理(SQL)は何が実行されているのか、対象データ数はどれくらいなのか、どのような時間帯に負荷があがっているのか、などなど、本番環境の生の診断結果を見ることができるようになりました。
また1日、3日、1週間、1ヶ月、数ヶ月など、時間軸で比較することもでき、負荷上昇の傾向もつかむことができるようになりました。
例えば、「この日のリリースから負荷があがっているので、ここの処理を見直すとよいのではないか。」といった先手の対応をとることができるようになりました。
手動でログを仕込んで調査したり、ローカル環境で再現させるなどの手間も掛からなくなったのもとても大きい成果です。
導入時の苦労・悩み
- 特にありませんでした。唯一、DataDogとSentryがすでに導入されていたことですが、パフォーマンス監視ツールとしては誰も活用している人がいなかったため、利用経験があり効果も一定わかっているNewRelicを導入することはすんなり受け入れられました。
導入に向けた社内への説明
上長・チームへの説明
- まずは1ヶ月使ってみて実際の料金がどれくらいかかるかを見ました。当初は3〜4万円程度だったと思います。あまり高すぎるようなら辞めましょうという見極め期間を設けたのは良かったと思います。
- DataDogとSentryがすでに導入されていてツールが増えてコストがかさむのではないかという懸念は少しありました。しかし、最初に挙げたユーザ・データ増加によるパフォーマンス監視の課題感は、経営陣とエンジニア陣共通して感じ始めていた時期であり、どちらかというと積極的に背中を後押しされた印象があります。ツール利用の稟議も一瞬で通った記憶があります(笑)
活用方法
開発チームで性能問題に対応しているメンバーが、定期的に見に行ったりしています。 また、データベースのCPU・メモリアラートなどが発生した際にNewRelicを見に行くこともあります。
よく使う機能
APM & Servicesから、Transactionsの項目をよく利用しています。こちらでRestAPIのパフォーマンスをよく監視しています。 最近はRestAPIだけでなく、バッチ(Non Web Transaction)の性能も取ることができますので、よく性能問題にぶち当たるバッチプログラムの計測も行うようにしています。 アプリケーションから出力しているログの検索機能も充実しています。エラーレベルや含まれる文字列などで検索することもでき、エラー調査の時にも重宝しています。
ツールの良い点
- アプリケーションへの導入が簡単
- 低価格から導入できる
- 主要な開発言語をほぼサポートしており、社内の色々なサービスの性能を監視できる
- ログの検索機能もフィルタが充実しており便利。
- バッチプログラムの分析もRestAPI側と分けて取得できるので、手薄になりがちなバッチ性能についても性能改善に繋げられる。
ツールの課題点
- Pythonのバッチ性能のデータを送るAgentの方法が最後に全てのデータをまとめて送る仕組みらしく、バッチの処理が終わった後、メモリ不足になり失敗してしまう。改善を希望している。
- フロントの性能も見ることができるようだが、うまく活用できなかった。使い方がわかりにくいかもしれない。
ツールを検討されている方へ
NewRelicは開発言語を問わず、色々なプログラムのパフォーマンス監視を行うことができます。 NewRelicを見るユーザを少なくすれば、低価格で使い始めることができますので、性能問題にプロアクティブに対応した方にはとてもおすすめの監視ツールです。
今後の展望
NewRelicにはサービスごとのSLAを決めて、閾値を超えるとアラートを発生させるなどの機能があり、これまで活用できていませんでした。
最近、弊社にもSREメンバーも増えたので、この機能を正しく活用できる組織になってきたと思います。
サービスごとに妥当なSLAを策定し、より早く性能悪化の傾向をつかみ、よりプロアクティブにユーザ体験を良い状態で維持・提供できるようにしていきたいと考えています。
クロスマート株式会社 / Hiroshi Take
よく見られているレビュー
クロスマート株式会社 / Hiroshi Take