# 概要
将来ユーザーがさらに増えた時のことを考慮し、DB設計の見直しやクエリチューニングなど大幅なパフォーマンス改善
# チーム情報
- フロントエンド 2名
- バックエンド 6名
- テスター 2名
# 担当
- バックエンドエンジニアとしてプロジェクトに入り、以下を担当してきた。
# 使用技術
- Docker,AWS,PostgreSQL,REST_API,Rails,SideKick
# 課題
- 以下のような課題点があり、このプロジェクトに至った。
-- ユーザーが将来さらに増えた事を想定した負荷テストを行った際にビジネスロジックに大きく関わる部分の処理で時間が掛かり過ぎてしまいタイムアウトになってしまいました。
# 取り組み
具体的な対応としてはもともとwebサーバーとDBだけのやり取りで集計処理に時間がかかっている箇所にはAWSのDynamoDB、Lambda、APIGatewayを使用して処理をサーバーレスにしたり、スロークエリを調査して改善しました。
# 担当業務
- 設計
具体的な重い処理の流れを整理し、どの部分がボトルネックかを明確化にし、どの部分をAWSに任せるかなどを設計
- 実装
クエリの実行計画をもとに不要なselect分や不要なjoinを減らしたりテーブル構成の改善を行なった
# 工夫した点
-- 実際にユーザーが触れる部分で言うと、3,000~4,000社へのメール送信処理のような重たい繰り返し処理の実装をSidekickにより非同期処理にして、重たい処理はSidekickで実行して、ユーザーからは処理が終わったように見せる工夫などそして、パフォーマンスの改善に努めました。