こんにちは、エンジニアの安達です。
今回は弊社におけるレスポンスタイム改善について、お話しします。
なぜレスポンスタイム改善を行ったのか
弊社は半期ごとにエンジニア組織の目標を設定しており、期中に達成したいことを全員で話し合って決めています。
話し合いの中で、サービスの成長に伴い既存機能のレスポンスタイムが悪化しているものの、なかなか改善の時間を取れていないことが課題として挙がりました。そこで、ECサイトの購入フロー・倉庫管理システムの出荷機能など、お客様の体験に関わる重要な機能のレスポンスタイム改善に取り組むことにしました。
どのように進めたのか
エンジニアを2チームに分け、チームごとに改善したい機能とレスポンスタイムの目標値を決めました。その後、同期的に作業する時間を週2時間ずつ確保しながら進め、チームの進捗を週次でSlackに共有し、半期の終わりに最終結果発表を行いました。
どうやってレスポンスタイムを改善したのか
はじめにCakePHPのデバッグ機能やDatadogのトレース機能を活用しながら、アプリケーションの処理、SQL、外部API接続等のどの部分がボトルネックになっているかを特定しました。
特にSQLに関わる処理がボトルネックになっていることが多かったので、
・N+1問題が発生している処理を見直す
・実行計画を確認してindexが効くようにする
・不要なカラムを取得しないようにする
・クエリキャッシュを活用する
など地道な対策を行いました。
根気強く作業を進めていく必要がありましたが、チームとして目標を決め、同期的に作業を行うことで、モチベーションを保ちながら進めることができました。
どのような効果があったのか
レスポンスタイムの改善
レスポンスタイムが10倍以上改善された機能もあり、お客様の体験向上や出荷業務の効率化に繋がりました。
システム負荷の軽減
今回の取り組みによってシステム全体の負荷が軽減されたため、(お客様への影響はない)負荷上昇によるアラートの発生頻度も減少しました。
パフォーマンス改善の知見
エンジニア全員で取り組んだため、組織としてパフォーマンス改善の知見が貯まり、普段の開発でもパフォーマンス面をより考慮した実装ができるようになりました。
まとめ
今回はTANPのレスポンスタイム改善についてお話ししました。弊社では、新規機能の開発と既存機能の改善を両立しながらサービスを一緒に作っていくメンバーを募集しております!
少しでも興味を持っていただけたら、各種募集記事からお気軽にご連絡ください!
エンジニア採用サイト:https://gra-cia.co.jp/engineer
Gracia Twitter:https://twitter.com/gracia_tanp
募集職種一覧:https://gra-cia.co.jp/careers