Staff interview
#23
01. 担当者プロフィール
担当者プロフィール
- お名前:岩田 英丈 / Hidetake Iwata
- 組織名:小中高プロダクト開発部
- 入社時期:2020年 07月
02. モブプロでブラックボックス化した仕組みを刷新し、開発者体験の向上を推進
よりよいプロダクトを作るには、よりよい開発者体験が必要です。スタディサプリでは、本番環境に限りなく近いデータベースやコンテンツを利用して開発中のプロダクトを確認できるようになっています。本番環境にある個人情報をマスクした上で開発環境にコピーを作る仕組みをデータベースリストアと呼んでおり、これは開発者体験を向上させる重要な仕組みの1つですが、長年にわたって継ぎ足しで手が入れられ、メンテナンスが困難になっていました。そこに手を入れ、開発者も含めたモブプログラミングを通じてAWS Step Functionsを用いた仕組みに移行させた小中高SREグループの岩田英丈さんにお話を伺いました。
03. 複雑になりすぎ、メンテナンスが困難になっていたデータベースリストア
Q:今のお仕事について教えてください。
岩田:2020年の7月に旧Quipper Japan(以下「Quipper」)に入社し、その後ずっとSREとして仕事をしています。
Q:小中高SREグループも含めたSREの目的とは何でしょう。
岩田:より多くの生徒や学校の先生に使ってもらい、より効率的な学習体験を提供できるようスタディサプリを安定運用することが一つ。もう一つは、必要なものを素早く開発し、ユーザーに提供していくための仕組みや文化を整え、開発体験を向上させることです。サービス自体を安定して提供しつつ、開発生産性を高めていく2つの目的をいかに両立させるかに興味を持っていて、それがQuipperのSREチームに入った理由でもあります。
Q:「データベースリストア」の改善 がMVPの対象になりましたが、これはどのような仕組みでしょうか。
岩田:私が開発者だったときにも実感していたことですが、開発環境と本番環境でデータが異なると、開発環境では問題のなかったデザインが崩れたり、使い勝手が悪くなるといったことが起きがちです。そこでスタディサプリでは、本番環境のデータベースを毎日夜中にコピーし、本番と同じデータを使って開発できる仕組みをずっと昔から用意していました。その仕組みをデータベースリストアと呼んでいます。
データベースリストアは開発者だけでなくSREにとっても役に立っています。本番環境に近いデータが開発環境にあるので、インフラの設定を変えた後にも動画がちゃんと閲覧できるか、問題が解けるかといった動作確認に活用しています。SREもプロダクトの理解を深められる仕組みと言えるでしょう。スタディサプリのコンテンツは面白いので、ついつい講義動画を見たり、問題を解いてみたりすることもあります。
Q:その仕組みにどんな問題があったのでしょうか。
岩田:リストアの仕組みは私が入社するだいぶ前、2010年代前半から動いてきたもので、データベースの追加や構成変更に伴って、継ぎ足し、継ぎ足しで改善が加えられていました。このためジョブやスクリプトの構成がかなり複雑になっており、メンテナンスが難しい状態でした。いわゆる「ブラックボックス」です。夜中のリストアに失敗すると、その都度調べては直すけれど、根本的な解決ではなく、なんとなく動いているという状態でした。
Q:一日くらい失敗しても いいじゃないか……というわけにはいかないのですね。
岩田:本番データを使った開発用データベースは、先生や生徒などのユーザーから受けた問い合わせを調査するためにカスタマーサポートのチームも使っています。リストアに失敗するとその調査ができず困ってしまうという事情もありました。
また、スタディサプリではサービスをより安全に安定して提供していくための施策を継続的に推進しており、その一つとして本番環境と開発環境のAWSアカウントを分離する施策を進めています。AWSアカウントの構成に合わせてリストアの流れも変える必要があるため、この機会に改善したいという理由もありました。
04. 正解のわからない問題にモブプログラミングで挑戦
Q:毎日使われる仕組みですから、動かしながら直していく必要があったんですね。
岩田:そうですね。すでに動いている仕組みを止めずに変更していく必要がありました。細かな仕様はわからなくなっていたので、まずは、どういう仕様や実装で動いているか、たとえば夜中の何時時点のデータをコピーしているのかといった事柄を調査することから始めました。
スタディサプリで利用しているデータベースはおおまかにAmazon Aurora、MongoDB Atlas、self-hosted MongoDBの3種類があります。また環境も、開発用、カスタマーサポート用、データ分析用、QA テスト用の4種類があります。それぞれで仕様や実装が異なるので詳しく調べていきました。調査し終えるのに一ヶ月くらいはかかったと思います。
Q:調査を踏まえて、どのような方針で変更することにしたのでしょうか。
岩田:データベースの種類によってリストア処理の実装やジョブの構成が異なるため、認知負荷が大きいという課題がありました。例えば、あるデータベースのリストアはRubyで実装されているが、他はシェルスクリプトで実装されていて、それぞれでJenkinsジョブのパラメータも異なる、といった状況でした。これらを安全にかつ安定して運用していくには、一貫性のある仕組みに置き換えた方が良いと判断しました。
Q:具体的にはどんな仕組みを採用しましたか。
岩田:スタディサプリではインフラやアプリケーションの設定をすべてGitHubで管理し、Infractructure as Code(IaC)を実践しています。変更する場合はプルリクエストを出して、間違いが起こらないようレビューをしてから反映させています。これを踏まえて新たな仕組みをいくつか検討していきました。
何らかのサーバを運用すると、それ自体が止まっていないかどうかの監視をしたり、バージョンアップをしていくのに手間がかかってしまいます。Jenkinsでそのような課題を感じていたため、AWSのマネージドサービスでSREの負担が少なくて済むAWS Step Functionsに着目しました。
Q:すでに誰か詳しい人がいたからでしょうか。
岩田:いえ、SREチームにはStep Functionsを使い込んでいる人がいなかったので、手探りの状態でスタートしました。
Q:一般には「枯れた技術」の方が安心だという意見もあると思いますが、手探りでどう進めたのでしょうか。
岩田:これはまさに、何を選べば良いかわからない、正解がないという不確実性の高い課題でした。こういう課題を解決するには、チームで少しずつ試して、チームで判断していく……ということを繰り返していくことが非常に効果的です。もし間違った選択をしても、チームならば誰かがそれに気付いて軌道修正をしていけますから。なのでチームで、モブプログラミングで「少し試してみよう」とプロトタイプを始めました。
Q:それが同僚の石塚さんと清水さんのお二人ですね。
岩田:そうです。石塚さんはWebエンジニアで、AWSには詳しいけれど、当時はSREの仕事は経験がありませんでした。以前から毎月1on1で話をしており、「データベースリストアを一緒に改善したいね」とアイデアを出し合っていました。また、同じSREチームの清水さんとも1on1でリストアの課題を話し合っていたため三人でチームを作って一緒にプロトタイプを始めました。SREとWebエンジニアで協力して進められたのは、今回、すごくよかったなと思ったことの一つです。
Q:面白いチームですね。
岩田:こんなことができる組織はなかなかないと思います。スタディサプリの開発組織全体で新しいチャレンジを推奨していこうという方針があるのも一つの要因ではないでしょうか。ちなみに石塚さんは、今、SREチームに三ヶ月限定で短期留学(短期間別チームに入って業務を行うことを「留学」と呼んでいます)していて、実際にSREの仕事に携わっています。こういった形で知識の共有やコラボレーションを推進していくことも開発組織全体で掲げており、すごくいいことだなと思います。
Q:開発作業そのものは大変でしたか。
岩田:そうですね。当初は「データベースをコピーするだけでしょ」と思っていたところもありましたが、蓋を開けてみると非常に複雑な条件分岐が必要で、思ったよりも複雑なことをやっていることがわかりました。一方で、Step Functionsはあまり複雑なことを実現するのに向いていなくて……たとえば、「0時を回った時点で一番新しいスナップショットを探す」といった事柄をちゃんと計算しなければいけないため、非常に複雑になってしまうことがわかりました(細かい話はこちらのブログ記事にも書いているのでぜひご覧ください)。
ただ、モブプロですごくよかったのは、長期的にメンテナンスしていけるかどうか石塚さんや清水さんと十分に議論して、チームとして「やっぱり無理だね」という結論を出せたことです。もしSREだけでやっていたら、「頑張ればいけるでしょう」と判断して、また新しい負債を生み出していた可能性があります。軌道修正ができた、あきらめて別の選択肢を探すという風に方向転換できたのは、すごくよかったと思います。
Q:あきらめることも時には大事ですね。
岩田:そうですね。二ヶ月、三ヶ月とかけてプロトタイプを作っていると、作ったものに愛着がわいてきます。それに、もし一人でやっていると自分だけ理解が深まるので「他の人もできるだろう」と思ってしまうんですよ。でもモブプロにすると、第三者の視点で冷静に技術的な判断を下せるんじゃないかと思います。
Q:モブプロは前にも経験したことがあるのでしょうか。
岩田:石塚さんが所属している開発チームでよくモブプロをやっている話を聞いていて、そこがすごくいいなと思っていました。SREでもモブでやってみたいという話はしていたので、これを契機に挑戦してみた形です。新しい技術に取り組んだり、何がほしいかわからないといった不確実性の高い問題に対しては、新しい課題を探索して軌道修正を繰り返すモブはすごく効果的だと思います。
05. チームで問題解決に取り組み、育てていけることが強み
Q:チームの二人にメッセージはありますか。
岩田:この三人でモブで改善に挑戦している間は、「Daily Sync」と呼んで、毎日15分だけ顔を合わせて同期するポイントを作り、不安な点やわからないことを解決していきました。こうしたプロセスの型を作れたことはすごくよかったです。今後はそれを、他の人にもどんどん広めていきたいなと思っています。
Q:個人として取り組んでいきたいことはありますか。
岩田:データベースリストア以外にも、Jenkinsに残っているジョブはたくさんあります。それらについても新しい仕組みへの移行に挑戦していきたいなと思います。Webエンジニアだけでなく、コンテンツを作る人やカスタマーサポートなど、いろんな職種の人が快適に使えるジョブ基盤が必要だな、という課題を感じています。
Q:最後に、この会社で働いていていいなと感じることは何ですか。
岩田:新しい技術への取り組みや今ある仕組みの改善を、小さく始めて、チームで育てていく文化があることです。一人すごく詳しい人がいて、その人が全部決めていくというやり方もあるかもしれませんが、一人だと道を間違うこともあるし、いろんな人の視点で仕組みを改善していく取り組みができないので、やはり、チームで問題を解いていくことがすごく重要だと思っています。
取材時期:2022年4月
記事中で紹介した事業(名称や内容含む)や人物及び肩書については取材当時のものであり、現時点で異なる可能性がございます。
スタディサプリの開発主体であったQuipper Japanは組織再編のため、2021年10月に株式会社リクルートに事業譲渡しています。