KINTO ONE運用 新型プリウス発売に備えて
はじめに
こんにちは、KINTOテクノロジーズ新車サブスク開発グループの阿出川です。
アプリケーションエンジニアとして国内のトヨタ新車サブスクリプションサービス「KINTO ONE」の開発・保守・運用に3年間従事しております。
自動車が大好きなので仕事を通して関われてとてもハッピーです。
今は家族優先でミニバンに乗っておりますがいつかトヨタのGR車種に乗りたいです!
好きなエンジン機構は「カムギアトレーン」です!
そんなわたしが今まで関わったプロジェクトで特に印象深く達成感が大きかったお話を紹介しようと思います。
新型プリウス発売に備えよ
2023年1月10日 新型プリウス(5代目)が発売されました。
プリウスといえばハイブリッド車の先駆けで環境車としての確固たる地位を築いたトヨタの中でも注目度高い車種ですよね。
しかしプロジェクト発足当時のプリウス(先代)は既に発売からだいぶ経過していたこともあってKINTO ONE取扱い車種の中で特に人気が高いわけではなかったです。なので個人的には新型が出ても特段反響が大きいとは考えておりませんでした。
しかし掲げられた目標は*,990 PV/分 耐えられる事!
(この数値は過去最高負荷時の10倍)
その時点で許容可能だったのは目標値の3%程度でした。
主な対策ポイントは③点です。
対策① Databaseの接続先調整
RDBはライターインスタンス、リーダーインスタンス1台という構成でしたがフロントからは参照系のアクセスの方が圧倒的に多かったのでリーダーインスタンスに負荷が偏りライターのインスタンスの方は余裕がありました。
暫定的にフロントからの接続先を参照・更新問わずライターインスタンスへ接続させるよう設定変更しました。
結果、意図したとおりに負荷が分散されました。
リーダーインスタンスを追加するより手軽だったのでまずはこの方法を取り入れました。
対策② 見積画面の改善
トップ画面に次いでアクセスが多いのは車種ごとの見積画面になります。
ここでは自動車のグレード、パッケージ、オプションなどを選択しますがその車両マスター情報をリレーショナルデータベーステーブルから取得しておりました。
これをインメモリのkey/valueキャッシュ(Elasticacheのredis)に格納された車両マスタ情報から取得するよう変更し、DB負荷軽減とフロントレスポンスの改善を図りました。
次にキャッシュ化出来なかった情報でDB負荷の高い箇所を特定しました。
見積~申込までは車両情報の他、販売店店舗情報のマスタテーブルの参照しており、slow queryに挙がってくるような問い合わせは行われていないのですが発行回数が多いので塵も積ればとやらで比較的costの高い箇所は対象テーブルへINDEXを追加しquery costは全て一桁台に改善させました。
対策③ インフラ増強
①、②の対策に加え目標数値に耐えられるよう後はインフラの構成見直しで調整します。
特別な一時的な対応という事で手動スケーリングで次の通りインフラ増強を図りました。
スケールアウト
AWS service | 台数-変更前 | 台数-変更後 |
---|---|---|
EC2 Front End | 6 | 36 |
EC2 Back End | 2 | 15 |
スケールアップ
AWS service | タイプ-変更前 | タイプ-変更後 |
---|---|---|
EC2 | スケールアウトのみ | |
Elasticache | t3.medium | r6g.large |
RDS | r5.xlarge | r5.12xlarge |
その他
急激なアクセス増加に耐えらるよう予めALBの拡張を行う為、暖気運転が必要との事で下記の情報を添えAWSへ暖気申請をしました。
- 予測されるピーク時間帯
- 予測されるピーク時のリクエスト数
- トラフィックパターン
- ユースケース
- etc
発売当日を迎えて
負荷としては準備していた許容範囲に対して実際のアクセスはピークで10%程度でしたがトラブルもなく発売当日から安定し稼働しました。
お客様からの反響もよくKINTO専用グレード含めたプリウス全体の流入(見積・申込)は期待通りだったようです。
しばらく推移を見守り落ち着いたところで暫定的に対応していた箇所は元に戻し終了しました。
さいごに
滅多にない大きなイベントだったので大変貴重な経験だったなと思っております。街中でプリウスを見かける度に気になり目で追ってしまうようになってしまいました。KINTOのかな~?って
結果をみるとインフラのスペックは過剰であったようですが事前に正確に流入を予測する事は不可能且つミスするわけにもいかなかったので良かったのだと思います。
年末から年始にかけての忙しい時期にも関わらず様々な方々にご協力いただき無事に乗り越える事が出来たと思っております。
負荷のテストプラン、スケジュールを管理してくださったベンダー会社の方々。
サーバ増強に伴うサービス停止に付き合ってくれた対向システムのメンバー。
インフラ増強に関してはプラットフォームGメンバーにアドバイス助言を頂きました。
この場でもお礼の言葉を残しておきたいと思います。ありがとうございました。
関連記事 | Related Posts
We are hiring!
【フロントエンドエンジニア(コンテンツ開発)】新車サブスク開発G/東京
新車サブスク開発グループについてTOYOTAのクルマのサブスクリプションサービスである『 KINTO ONE 』のWebサイトの開発、運用をしています。業務内容トヨタグループの金融、モビリティサービスの内製開発組織である同社にて、自社サービスである、クルマのサブスクリプションサービス『KINTO ONE』のWebサイトコンテンツの開発・運用業務を担っていただきます。
【ソフトウェアエンジニア】業務システムG/東京
業務システムグループについてTOYOTAのクルマのサブスクリプションサービスである『 KINTO ONE 』を中心とした国内向けサービスのプロジェクト立ち上げから運用保守に至るまでの運営管理を行っています。