THECOO株式会社 / Software Engineer
決済処理周りのパフォーマンスチューニング
サービスで大きなイベントが控えており、ECサイトなどでの購入が急増すると見込まれていたため、想定する負荷に耐えられるのかを確かめるとともに、耐えられない場合はパフォーマンスチューニングを実施する必要がありました。 負荷テスト基盤がなかったため、Kubernetesを用いて本番環境とほぼ同じ環境を構築し、これまでのAPIに対するリクエスト数をもとに、イベント時の負荷を想定してLocustを用いて負荷テスト用のシナリオを記述し、負荷テストを実施しました。 DatadogやGCPのQuery Insightなどを確認した結果、ロックの取得待ち時間と、N+1問題が発生している箇所がボトルネックとなっていたため、最低限のロック取得で済むようにロジックを変更し、Eager Loadingを用いてコードを改善した結果、負荷テストをパスさせ、本番のイベントについても無事成功させることができました。