1
/
5

スタートアップのサービスではインフラコストはかけられない

本記事はAWS Startup Community Advent Calendar 2021の24日目です。

こんにちは、dotDで愛犬/ペットのお散歩・健康の記録管理アプリであるonedogの開発を担当している遠藤です。

▼目次

  • 今回の取り組み
  • なぜこの取り組みが必要だったか
  • まずは負荷の傾向を確認
  • 次にボトルネックの確認
  • 改善の対策
  • ①インデックスの作成
  • ②不要なUPDATE処理を削除
  • 対応後のDB負荷の確認
  • DBインスタンスのスペックダウン
  • コスト削減結果
  • db m5.2xlargeのコスト
  • db m5.largeのコスト
  • まとめ

今回の取り組み

今回はインフラコストの削減の取り組みの中で、Amazon RDSのPerformance Insightsを利用してボトルネックとなっている処理を洗い出し、パフォーマンスチューニングを行い、DBの負荷を軽減させ、DBインスタンスのスペックダウンにつなげた取り組みについてお話いたします。

なぜこの取り組みが必要だったか

サービスのインフラコストが月に1ユーザあたり80円近くかかってしまう状況になってしまったことがきっかけです。
onedogのアプリは課金プランがあるものの課金せずに利用できるアプリなので、全てのユーザに課金プランに加入頂いているわけではありません。
なので、残念ながら課金によってインフラコストを賄えている状態ではありません。
ユーザを増やす取り組みを行えば行うほど、インフラコストが増大しサービスとしての赤字が増えてしまいます。
もちろんサービスレベルを維持しつつもインフラコストを削減しなければ、会社の売上にも大きな影響を与えてしまう状況になりかねません。
例えば、ユーザが100万人に増えて、インフラコストが1当たり100円だとすると、単純計算で月々1億円がインフラコストになってしまいます。

そこで、今回インフラコストのうち最も金額の大きかったRDSのコスト削減に、弊社梅田とともにまずは集中して取り掛かりました。

まずは負荷の傾向を確認

DBのどこに負荷がかかっているのかを探っていくため、まずは負荷の傾向を確認するためにCloudWatchを眺めてみました。

  • 使用可能なメモリ量はほぼ変動なく潤沢なままだったので、メモリを多く使っていることはなさそう
  • CPU使用率の変動の波が激しい。(特にわんちゃんのおさんぽ時間帯、朝と夕方の負荷が高い)

                      CPU使用率

次にボトルネックの確認

今度は、CPUを使用しているものが何かを探るため、SQL単位での負荷状況を確認できるRDSのPerformance Insightsを見てみました。
そこで、いくつか負荷をかけているクエリが見つかり、その原因を探ると特定の原因が見えてきました。

  • 全ユーザの日々のおさんぽの記録のため、件数が多いおさんぽ履歴テーブルのSELECT文で常にフルテーブルフルスキャンしていた。
  • ユーザテーブルのSELECT文で常にフルテーブルフルスキャンしていた。
  • システム内で利用していないカラムをおさんぽ中の位置情報の更新毎にUPDATEしていた。(Performance Insightsに出てくるSQLとしては、COMMITに全てマージされてしまいます)

改善の対策

①インデックスの作成

発見したボトルネックの中でもSELECTの負荷が大きいもので、おさんぽ履歴テーブルもユーザテーブルも検索条件はPK以外のカラムでの検索でした。どちらのSQLも検索条件に指定しているカラムは一意になるデータのカラムで、そのカラムで検索してPKのカラムを取得するSELECT文でした。
そこで、対策としては検索条件で利用しているカラムのインデックスを作成し、インデックスが使われるように改善しました。
以下がPerformance Insightsでの例で、赤点線でインデックス作成を行い負荷状況が一変しているのが分かるかと思います。

                インデックス作成前後の負荷状況

②不要なUPDATE処理を削除

無駄なUPDATE処理を発見したので、その処理を削除した。
以下がPerformance Insightsのカウンターメトリックスでの例になります。
オレンジ色がSELECT、青色がUPDATEなので、対応前まではほぼ同じ波形になっていましたが、対応後青色の波形だけが消えています。

                カウンターメトリックスの状況

対応後のDB負荷の確認

発見した高負荷なSQLへインデックスの作成及び無駄なUPDATE処理の削除の対応を行ったことで、DBのCPU使用率がピーク時の頂点が1/4程度までに抑えられるようになりました。

                   対応後のCPU利用率

DBインスタンスのスペックダウン

負荷の低減により、現在のDBインスタンス(db m5.2xlarge)では過剰スペックとなったので、スペックダウンを行いました。
安全のため1ランクずつ下げて行くことにしました、スペックダウンし1日様子を確認し、さらにスペックダウンをし様子を確認を繰り返しました。
最終的にDBインスタンスを「db m5.2xlarge」から「db m5.large」までスペックダウンを行いました。

                 スペックダウン前後のCPU使用率

負荷の傾向で確認したとおり、メモリはほぼ使用していないのでスペックダウンによって利用可能メモリ量が減ってしまっても問題はありません。
したがって、vCPUが半減するスペックダウンを行い、CPU使用率が倍増するだけになっていることが確認できたので成功といえます。

コスト削減結果

AWS Priceing Calculatorを利用し各スペックの月額コストの見積もり算出し、スペックダウンによりどれほどコスト削減したのかを示します。

db m5.2xlargeのコスト

                   db m5.2xlargeのコスト

db m5.largeのコスト

                   db m5.largeのコスト

結果、$1400.00-$370.70=$1029.3となり、1000USD程のコスト削減することができました。

まとめ

インフラコストの削減対応で、金額が高いDBについて1000USD程削減することができ、結果的に1ユーザあたりのインフラコストを10円程下げることができました。
また、DB負荷改善前の負荷だけを見れば逼迫した状態ではなかったので、負荷改善対応をするということにはならなかったと思います。けれども今回の対応により、潜在的な危険を解消することができ、さらにスペックダウンすることでコスト削減もすることができました。
改善対応の中でインデックス作成の大きな効果を改めて感じることができました。そして定期的な見直し、改善は行う必要性があることを学ぶことができました。

まだまだ1ユーザあたりのインフラコストが高いので改善を進めていきたいと考えております。

dotDでは一緒にサービスを作ってくれる仲間を大募集中です!
副業から参画でも全く問題ありませんので、すこしでも興味を持たれた方がおられましたら、お気軽にお声がけください!!


SREエンジニア
SREとして新規事業のプラットフォームを支えるエンジニア募集!!
【世の中に新しい価値を生み出し続ける事業創造ファーム】 私たちは自社事業と共創事業の2つを軸に、技術・知識・経験を相互に作用させることで、新しい事業を生み出し、常にアップデートし続けることで、ひとりひとりの「当たり前」に変化をもたらす価値を創造し続けます。 ①共創事業 大企業様の新規事業戦略立案から開発まで、先方の持っている課題感や構想をヒヤリングすることから始め、事業を成功に導くためのお手伝いをしています。大企業の社会的影響力や利用可能な資源の量、dotDの強みである発想力や敏捷性・柔軟性と、その両方を掛け合わせることでひとりひとりの「当たり前」に変化をもたらす価値を創造し続けます。 ▼直近の案件例 “クルマのデジタルキー”から“スマートシティを支えるサービス”へ「TOKAI RIKA Digitalkey」 https://digitalkey.jp/ TOKAI RIKA Digitalkeyは、クルマ以外のモビリティ、オフィスなどの建物、駐車場などもデジタルキー化を促進させ、物理的な「鍵」のない安全で便利な社会の実現を目指します。様々な場所をデジタルキー化することで、それぞれが繋がり、お客様へのシームレスなサービス提供と課金、事業者様における人員削減などに貢献します。 ②自社事業 dotDには、社会や身近に課題意識を持ったメンバーがおり、課題が深く難易度が高い領域への事業化に可能性やビジョンをもってチャレンジしながらサービス開発をしています。 現在はPetTech(ペット x テクノロジー)、EdTech(エデュケーション x テクノロジー)での新サービス開発を中心に取り組んでいますが、今後もどんどんチャレンジする領域を広げていきます。 愛犬とオーナーに幸せを届けるプラットフォーム「onedog」 https://onedog.io/ja/app/index.html 子どもの本当の好きに出会える課外活動マッチングサービス「meepa」 https://meepa.io/ フィジタル空間を実現し、新たなオンライン体験を模索するプロジェクト「iDovatar」 https://project.idovatar.com/
株式会社dotD

▼onedog公式note

onedog公式note|note
愛犬の健康管理・オーナー同士のSNSアプリ「onedog」公式noteです! onedog公式HP ▶︎https://onedog.io/ja/app/index.html dotD公式HP ▶︎https://dotd-inc.com/ja/
https://note.com/onedog/

▼onedog公式HP

愛犬のおさんぽとヘルスケア記録、飼い主同士のコミュニケーションプラットフォーム | onedog
onedogなら日々のおさんぽを記録するだけでなく、日々の愛犬の健康やお世話を記録・管理することで愛犬の健康をサポートします。さらに、犬好きが集うコミュニティでは、情報交換や愛犬に関するお悩みの相談まで。愛犬とオーナーの毎日を、より豊かにするサービスです。
https://onedog.io/

▼dotD公式note

株式会社dotD公式note|note
dotDは事業創造ファームとして、これまで培ってきた知識や技術、経験を活かしながら連続的に事業を創ることで、あなたの「想い」を「挑戦」に変えていく会社です。dotDのビジネスや働くメンバーなど、dotDの内情を発信していきます。
https://note.com/_dotd/

dotD公式HP

株式会社dotD | 事業創造ファーム
dotDはB2B,B2Cに関わらずのデジタルを活用した事業を連続的、非連続的に作り出すことによって社会の基盤になることを目指している「事業創造ファーム」です。
https://dotd-inc.com/



Invitation from 株式会社dotD
If this story triggered your interest, have a chat with the team?
株式会社dotD's job postings

Weekly ranking

Show other rankings
Like funabashi yukiko's Story
Let funabashi yukiko's company know you're interested in their content