Staff interview
#50

01. 担当者プロフィール

担当者プロフィール
- お名前:巻田 光起 / Koki Makita
- 組織名:社会人・語学プロダクト開発部
- 入社時期:2022年 04月
どんなシステムでも、無駄なコストは省けるに越したことはありません。ただ、コスト削減を至上命題とするあまり、必要なパフォーマンスが出せずにサービスに影響を与えてしまっては本末転倒です。『スタディサプリENGLISH』のSREチームに所属する巻田光起さんは、ツールを自作しながら検証を重ねることで、データベース移行に伴うインスタンスサイズの縮小やSpot Instanceの本番環境導入を実現し、安定稼働を継続しながら大幅なコスト削減を実現しました。
02. アルバイトやコミュニティ活動を通して幅広く技術に親しみ、SREチームへ
Q:これまでの経歴をお聞かせいただけますか。
巻田:私は学生の頃からプログラミングやソフトウェアエンジニアリング関連のアルバイトをしてきました。Webのバックエンドやフロントエンドの他、Windows上で動作するデスクトップアプリケーション(以下アプリ)を書いたこともあります。並行して、京都のIT系学生コミュニティ『CAMPHOR-』の運営にも携わってきました。
リクルートのインターンシップにも参加し、SREの業務に触れて技術的に面白いことに取り組んでいるなと興味を抱き、2022年4月に入社しました。以来ずっと、『スタディサプリENGLISH』のSREチームに所属しています。
Q:レイヤーの上から下までさまざまな分野に触れてきた上で、インフラやSREに取り組もうと考えた理由は何ですか。
巻田:元々、僕の興味や関心はコンテナなど低めのレイヤーにあるんです。加えて、サービス開発に携わる人に比べ、SREやインフラ関連の人数は少なめです。その少ない人数で全体を見ていけるのがSREのいいところかなと思っています。

03. 丁寧な検証で性能を保証し、アップデートとコスト削減の一石二鳥を実現
Q:MVPを受賞した理由は、複数の施策を通して『スタディサプリENGLISH』のインフラ関連のコストを大幅に削減したことですよね。SREチームでは以前からコストに関する問題意識が根強くあったのでしょうか。
巻田:コストは低いに越したことはありません。ですがこれまでチームとしては、なかなか高い優先度でコスト削減に取り組めていなかった部分がありました。事業への貢献を考慮して、徐々に優先度を上げて対応していくようになったというのが正確かもしれません。
Q:具体的には、どのような手を打ったのでしょうか。
巻田:新卒採用のページ(https://www.recruit.co.jp/employment/students/people/interview/makita/)でもいくつか紹介していますが、中でも2年目に実施したMySQLのアップデートと、3年目に行ったSpot Instanceの本番環境への導入の2つが大きな部分だと思っています。
MySQLのアップデートは、いわゆるEOSL(End Of Service Life、サポート終了)対応の一環で実施しました。実施せざるを得なかったために実施したという性質も強いのですが、移行に当たって、新バージョン移行後も期待通りのパフォーマンスが出るかどうかテストを実施したところ想定以上に性能が出たため、インスタンスのスペックを一段階下げられるのではな いかというアイデアが浮かび、実行に移した形です。
AWSではデータベースのインスタンスを一段階下げると、スペックは約半分になります。それでもサービスに影響が出ないことを示すため、きちんとパフォーマンスを計測し、関係者に説明して承認を得た上で進めていきました。
Q:『スタディサプリENGLISH』のサービスの中で、そのデータベースはどのくらいクリティカルな役割を果たしているのでしょうか。
巻田:いくつかある中でも最大のデータベースは、万一止まると大半の機能が使えなくなってしまうため、非常に大事な存在です。これまでやや大きめのスペックで余裕を持たせて動かしてきたのには、そうした理由もあったと思います。
バージョンをアップデートし、小さなインスタンスタイプに移行してもピークタイムの負荷に耐えられることを確認するため、負荷試験ツールを自作していろいろと検証を行いました。その中で、従来利用してきたIntelのCPUではなく、AWSが作っているGravitonという独自プロセッサに変えることで性能が大きく高まることもわかり、インスタンスサイズを下げるという決定ができました。
またストレージの設定でも「I/O-Optimized」というモードに変更することで性能がさらに上がることもわかりました。これは、元々はストレージのI/Oコストのかかり方を変えるためのオプションなのですが、検証してみると性能も向上することが分かったので、一石二鳥と言うことで採用しました。
Q:わざわざ負荷試験ツールを自作したのはなぜでしょうか。
巻田:チームとしては過去にもMySQLのアップデートを実施したことがあったそうです。ですがそのときに用いたツールでは、今回確かめたいデータがうまく取得できなかったため、それならば作ってしまおうと考えました。余裕を持たせるため、ピーク時の負荷のさらに1.5倍程度の負荷をかけて検証しようとすると、意外と使えるツールや機能が存在しなかったため、自分で作った方が早かった、という感じです。

Q:新卒2年目で、サービスの根幹に関わる部分に手を加えるというミッションを担当したわけですが、プレッシャーはありませんでしたか。
巻田:検証開始からEOSLまでの間に1年半ほどの期間がありましたから、そんなに切羽詰まった感じではありませんでした。きちんと負荷試験を行い、「レイテンシーはこのくらいになるけれども、許容範囲内に収まりますよ」といった数字を示すことで承認が得られましたし、関係者の方にも、きちんとモニタリングすることを前提に納得いただけたと思っています。
『スタディサプリENGLISH』は学校などでも使われているため、負荷のピークは朝の8時半頃にやってきます。深夜にメンテナンス作業を行い、翌朝のピークの時間を耐えられるかがポイントなのですが、無事に終えることができました。
Q:もう1つのSpot Instanceの導入も、王道のコスト削減策ですよね。
巻田:王道と言えば王道ですね。開発やステージング環境には導入されていたのですが、本番環境ではまだだったため、きちんと入れるために必要な調査を行いました。Spot Instanceを採用すると、キャパシティの関係で突然インスタンスが消えてしまう可能性があります。システムの安定性を保つため、冗長化できているか、サービスが落ちてしまう場合もきちんとグレースフルに落ちてくれるかなどを一つ一つ調査し、対策した上で導入しました。
コスト削減で言うとこの2つの施策が一番大きな効果をもたらしました。他に、1年後に消去すべきなのにずっと残っているログがあったので、定期的に消去するようにしてコストを無駄に増やさないようなことも考えました。
Q:一連の施策を進める中で苦労したのはどんなところでしたか。
巻田:それほど苦労せず進めることができました。MySQLに関しては、AWS独自のAurora MySQLとMySQL本体との間で、微妙な挙動の違いがあることもあり、「これは仕様なのか、それともバグか」を確かめるためにAWSのサポートに問い合わせたこともありましたが、その程度です。
そもそも検証に銀の弾丸のようなものはありません。地道に一つ一つ計測し、問題を一つ一つ潰していく、そういう地道な取り組みが大事だと思います。
Q:次に手を付けようと考えている部分はありますか。
巻田:自分としては一区切りついたと思っています。ただ、まだアプリケーションサーバのCPUに若干余裕があるので、調整の余地はあるかもしれません。
コストを減らすことが常に正しいとは限りませんが、「AWS Cost Explorer」などのツールを使ってきちんと分析し、もし必要以上 にかかっているところがあれば適宜削っていきたいと思います。

04. エンジニアとしての知識をさらに増やし、事業理解を深める機会にも
Q:一連の施策を通して、どんな学びや成長が得られたと思いますか。
巻田:1つは事業理解ですね。SREの仕事というものはどちらかというと、マイナスをゼロにすることはあっても、プラスを生み出して事業の数字に直接貢献するのは難しいと思っていました。しかし今回、コストを減らすことでわかりやすい形で事業貢献ができましたし、これを機に、事業に興味を持つきっかけになりました。
もう1つは、エンジニアとしていろいろな知識を身につけることができたことです。MySQLの挙動にしてもSpot Instanceの設定にしても、「初めて知った」という、普段ならば使わないような設定を知ることができました。具体的にはわかりませんが、将来いつか役に立つんじゃないかなと思っています。
Q:手持ちのカードが増えたようなイメージでしょうか。チューニングを競う「ISUCON」などの場でも役に立ちそうでしょうか。
巻田:そうですね。リクルート社内では毎年、「RECRUIT-ISUCON」というイベントを開催しています。今回の検証に関するスキルとパフォーマンスチューニングも、ISUCONから学んでいる部分が多々あります。
Q:エンジニアとして、こういった場が用意されていることは、嬉しいものでしょうか?
巻田:そうですね。2年連続でMVPを受賞し、RECRUIT-ISUCONにも出場している田中京介(kyontan)さんのように、「ああ、この人すごいなぁ」と思える方もいて、周りのエンジニアのレベルが高いと感じます。
また、多少無茶なことでも、きちんと説明すればチャレンジさせてくれる裁量の大きさもあると思います。何より、リクルート社内を見渡した中でもかなりモダンな技術を使い、技術にちゃんと向き合う時間を取れる場だと思いますね。

Q:ご自身は、今後どんなことにチャレンジしていきたいと考えていますか。
巻田:最近は、学生の頃ほどコミュニティ活動には参加できていないのですが、2024年12月にはアメリカで行われた「AWS re:Invent」に参加してきました。規模感に圧倒されましたし、技術系のセッションひとつとっても非常にレベルが高く、大いに刺激になりました。
これからですが、1つは、アプリケーションをデプロイしてから動き出すまでの時間をもっともっと短くしていくなど、もっと開発者体験を向上させていきたいと考えています。
同時に、勉強のためというのもありますが、単純に面白そうだというのもあって、たまには自分でもアプリケーションを書いてみたいとも思っています。サーバサイドの開発にはSRE的な知識が役立つことがあると思いますし、逆にSREをやるにはサーバサイドのことが分かっていなければいけません。そういった経験も積みながら、うまくシナジーを生み出せたらいいなと思っています。
記事中で紹介した事業(名称や内容含む)や人物及び肩書については取材当時のものであり、現時点で異なる可能性がございます。