リアーキテクトの舞台裏!Omiaiが直面した技術的課題とその解決策
小野 晋太朗 株式会社Omiai 開発責任者/VP of Engineering
数社の起業を経て2006年に楽天株式会社(当時)の開発部門に入社。楽天トラベルにて業界初となるダイナミックパッケージ、レンタカーサービスなど複数の新規サービスの立ち上げを行う。2012年より楽天全体の新規事業立ち上げ専門部門にて開発ゼネラルマネージャーなどを歴任。Droneサービスを始めとする20以上のサービスの立ち上げやPoCの実現、開発部門の体制強化を推進。2023年3月、株式会社Omiaiに入社し開発責任者に就任。リアーキテクトプロジェクトの全体を統括。
渡邊 裕又 株式会社Omiai テックリード
2012年にスマートフォンを専業とするベンチャーの広告代理店にエンジニア技術職として就職。その後、業務管理システムの受託開発を行う会社を経て、2014年にフリーランスとして独立し、さまざまなプロジェクトに参画。2019年7月に株式会社ネットマーケティングに入社し、2023年3月に株式会社Omiaiに転籍。リアーキテクトプロジェクトではテックリードを担当。
山岸 拓也 株式会社Omiai テックリード
2005年に楽天グループ株式会社へ入社。楽天トラベルをはじめとする複数の事業において、システムリプレイスや運用業務、マネージメントに従事。2023年より株式会社Omiaiに参画し、エンジニアマネージャーを経て、現在はテックリードとして開発に携わる。リアーキテクトプロジェクトでは、リードエンジニアとして管理画面とバッチ処理のリファクタリングをメインに担当。
Omiaiの事業成長には、抜本的なシステム改革が急務だった
ーー今回、リアーキテクトを実施した背景を教えてください。
小野:大きな理由の1つがシステムの拡張性に限界が来ていたことですね。Omiaiはサービス開始から10年以上経過しており、さまざまな箇所に技術的負債が蓄積していました。そのため、障害発生時の対応やセキュリティ対策などによって慢性的に開発コストがかかる状態になっていたんです。さらに、渡邊さんのような熟練エンジニアがいないと回していけない組織的な負債も同時に発生していました。
渡邊:そもそも、Omiaiのサービスを開始した頃はマッチングアプリの黎明期でした。当時は市場規模が小さかったため、小さなデータベースで運用を行っていました。しかし、今や累計会員数1,000万人を突破している状況であり、ソフトウェアやアプリケーション、インフラの維持・改善に多くのコストや工数が割かれている状況でした。
山岸:データベースの設計もですが、拡張性が乏しくてプロダクトチームの要望に迅速に応えられないところが大きかったかなと思っています。あと細かいところでいうと、管理画面とバッチ処理のリファクタリングなど優先度の低いタスクはなかなか進んでおらず、またフレームワークが古くて扱えるエンジニアがほとんどいない状態になっていました。その辺りもリアーキテクトをする判断材料の1つだったかもしれません。
ーー過去にもリアーキテクトに挑戦したことがあるという話を聞きました。当時はどのような状況だったのでしょうか?
小野:当時はシステムインスペクションを行わずに、「使いたいモダンな技術を導入すれば解決するのではないか」という形で何となくリアーキテクトを進めてしまったようです。
最優先で解決すべき課題に集中して取り組むよりも、さまざまなタスクに同時進行で着手した結果、開発工数が足りず中途半端になってしまったり、もしくは何か問題が生じたときにプロジェクトを停止せざるを得ないということが頻発していたと聞いています。
ーー今回のリアーキテクトの実施に向けて、どのように関係者と合意形成をしましたか?
山岸:私が入社したときはOmiaiのサービス拡充や機能改善を加速度的に進めていくタイミングで、リアーキテクトの実施は決まっていたんです。先ほどお伝えしたOmiaiのシステムがボトルネックになっており、ユーザーの方々にご満足いただける機能をスピーディーに提供するには難しい状況でした。
渡邊:当初、私はリアーキテクトプロジェクトに反対の立場だったんですね。ビジネスモデルが確立されているうえに、10年以上稼働しているサービスなので、これ以上大きな変更をすべきではないと思っていたからです。ただ、システムインスペクションをしたら、非常に多くの問題があることが判明したんですね。まずはリアーキテクトを完了させないと拡張性は今後も期待できないし、Omiaiが考える未来は実現できないと率直に感じました。経営陣にもシステムの現況と事業成長の関連性について事細かく説明していく中で、社内の方向性が徐々に定まっていきましたね。
システムインスペクションから見えたリアーキテクトの進め方
ーーリアーキテクトで実装する機能の優先度は、どのように決めましたか?
山岸:CTOの坂水さんとリアーキテクトについて議論を重ね、まず課題抽出をするために、システムインスペクションを実施しました。その結果、システムの拡張性に乏しい状況であることが少しずつ見えてきました。
渡邊:実装する機能の優先度については、システムとして致命的な欠陥につながる可能性のある箇所の解消をすることと、これからプロダクトを改善・強化するうえで、何を先に確立しないと拡張性が高められないかをみた上で決めていきました。
山岸:特に、データベースの再設計やデータの移行などベンダーさんを巻き込んで取り組む必要があるタスクについては、優先的に行いましたね。
ーー直前で開発期間を短縮することになったそうですが、どのように対応しましたか?
小野:バッチや管理画面に影響が出る部分は、早めにJavaに置き換えました。データベースの再設計は非常に大きなタスクであるため、他のプロジェクトと並行して進めるのはリスクがあったものの、そこは渡邊さんがガントチャートを作成してくれて、何とか短期間で着実に実現をすることができました。
渡邊:プロダクト改善が滞らないように、リアーキテクトプロジェクトをドメインごとに分割し、少しずつリリースしていくような形でスケジュールを設計しました。
ーーアーキテクチャの設計で心がけたこと・工夫したことがあれば教えてください。
小野:なるべくレガシーな技術を取り除き、一般的に用いられているモダンな技術を選定することを心がけましたね。過去にチャレンジしたリアーキテクトの学びから技術選定にはこだわって、「課題を解決できる技術」「これから入社する新しいメンバーや今在籍しているメンバーにフィットした技術」という2点で選定しました。
渡邊:アーキテクチャの設計は、実はそこまで大きく変えてません。特に、機能同士の依存を最小限にとどめることを意識しました。機能同士の関連性がシステムの拡張性を妨げている原因になることがよくあるんです。例えば「検索機能」を修正したら「いいね機能」が破損してしまうといったことが起こらないようにする必要がありました。
山岸:バッチはそのままで、今動いているJavaの環境に載せ替えましたね。管理画面は古いPHPのフレームワークを使用していたため、Spring BootというJavaのフレームワークに置き換えました。
Omiaiにもたらした4つの変化。リアーキテクトプロジェクトの成果とは?
ーーリアーキテクトプロジェクトは、どこまで進んでいるのでしょうか?
渡邊:課題は全て解消しきったので完了率としては100%ですね。10年分の技術的な負債を見直していく作業だったため、思いもよらないところに依存関係があったり、誰も見たことがない機能が出てきたりして、リリースがうまくいかずに苦戦したこともありました。ただ、何かあってもすぐ対応できる体制を整備していたため、幸いにも大きなインシデントにはつながらずにリアーキテクトを完了できましたね。
山岸:渡邊さんと同じく100%完了ですね。私は管理画面とバッチ処理のリファクタリングをメインに担当していましたが、新しい管理画面やバッチで不具合があればすぐに古い管理画面やバッチに移行させる方法でユーザーへの影響を最小限にしていましたね。
ーーリアーキテクトプロジェクトが無事に完了できた要因を教えてください。
小野:最初にシステムインスペクションを行って課題の洗い出しを行ったことですね。渡邊・山岸両名がお互いに苦手な分野を補完し合いながら業務にあたってくれたことはもちろん、最終的には今回協力いただいたベンダーさんも含め、皆で一致団結してリアーキテクトプロジェクトを完遂させるという強い気持ちによって成し得た結果だと思っています。
渡邊:小野さんと同じくインスペクションをしたことが大きいですね。今回のリアーキテクトで難しかったのは、目的の洗い出しだったのではないかなと個人的には思います。目的を設定し、そこに対して的確なアクションを打てたことが今回の結果につながったと思いますね。
山岸:今回、協業したベンダーさん2社には、前職でよく一緒に仕事をしていた人たちがいたこともあり、非常に良いチームワークが取れましたね。最後は、小野さんが話したように皆の頑張りが大きかったのかなと思います。
ーーリアーキテクトによって、Omiaiにもたらされた効果はありますか?
小野:大きく4つあって、まず1つめがシステムの拡張性の向上です。リアーキテクト前と比べて新機能追加などの開発プロジェクトをより早く、より多く行えるようになりました。
2つめがパフォーマンスの向上です。スロークエリの改善によって応答時間が平均60%以上、短縮しています。また、Amazon RDSへの移行前は、スケールアップ/ダウンのリードタイムが8時間以上かかる、またはサービスの停止が必要でしたが、移行後は30分程度に改善され、サービスの停止も不要となりました。
3つめが運用コストの低減です。 Amazon RDSに移行したことでAmazon EC2のコストを大幅に削減できました。今後は、さらなる性能改善によってサーバーコストの削減も達成できると予測しています。
4つめがセキュリティリスクの解消です。管理画面関連の権限を全て整理し直して、社内業務上で不要な権限がない状態を作り込みました。
ーー最後に、Omiaiが目指す未来や展望についてお聞かせください。
小野:今、Omiaiは第2創業期を迎えています。リアーキテクトプロジェクトが完了して、積極的な攻めに転じている段階です。ともにマッチングアプリ業界を盛り上げて少子化対策という日本の社会課題の解決に貢献したいと考えている方にぜひ来てほしいですね。
渡邊:Omiaiは、これからさまざまな新機能を追加する予定で、まさに第2創業期さながらの雰囲気です。エンジニアにとって非常に面白い環境だと思いますね。今回のリアーキテクトプロジェクトのように、Omiaiにはしっかりと課題や意義を発すればそれに見合った予算や挑戦の機会が与えられます。自分事として問題を捉えられるプロフェッショナル思考が高い方はぜひ一度話を聞きに来てください。
山岸:今まではシステムの課題について話すことが多かったのですが、リアーキテクトプロジェクトがひと段落して「こんな機能ができたら良いよね」など前向きな議論が増えています。
Omiaiの課題や業務を自分事としてしっかりと考えて、落ちているボールを拾いにいく積極性や自発性のある人に来てもらえると本当にありがたいですね。
▼株式会社Omiai の求人はこちらから