毎年数多くの事業を生み出し、現在40以上の事業を保有するレバレジーズ。その膨大な事業を支えるのは、常に新しい試みに挑戦し続ける開発組織です。なかでも今回は、多くのユーザーとクライアントが利用する「レバテック」のシステム開発を手がける開発部門の技術面や組織としての取り組みをご紹介します。
レバテックが実現したい未来
2022年、レバテックは新たに「ITリソースの最大化により社会・全産業の問題解決を加速させる」という目標を掲げました。
ITリソースの最大化により、すべての社会・人類それ自体の進化や問題解決の速度を飛躍的にあげること。 そのために、IT人材と開発組織の「挑戦」と「成長」を加速させること。 これがIT人材の調達支援の中心にいる我々レバテックの使命であると定義しました。
その実現のために「事業ポートフォリオ構想」という戦略を掲げており、既存事業である「IT人材支援」をメインに、HRTech、教育、M&A、内製化支援など、社会・全産業の問題解決を加速させるための10を超えるサービスを2030年までに創造していきます。
未来を実現するためにレバテックの開発組織が取り組んでいること
①生み出され続ける新規事業。それに耐えうるスケーラビリティとアジリティの担保
レバテックは圧倒的シェアNo1のフリーランスエージェントサービスを中心に、就転職支援、ダイレクトリクルーティング、プラットフォーム開発、教育支援事業、M&Aなどわずか数年で数多くのサービスをリリースしています。
生み出され続ける新規サービスに素早くかつ柔軟にシステムが適用するには、事業戦略に基づいた柔軟な開発組織の構築と持続的な事業成長に貢献できる発展性の高いシステムが欠かせません。
しかし、事業が拡大するにつれて開発しなければならない領域が大きく広がり、機能の充実に伴いその複雑性も高くなってきてしまったことから、エンジニア個人がドメイン知識すべてを把握することが困難になっていました。そのため、エンジニアのドメイン知識の不足による非機能要件の齟齬や、バグの発生頻度の増加、レビュー工数の増加、レビュワーへの負荷の集中、新規参画エンジニアのトレーニング期間の長期化など様々な問題が発生し、スケーラビリティとアジリティの担保が困難になってきていました。
そのためレバテックでは、これらの問題を解決するために下記のような取り組みをおこなっています。
マイクロサービス化
新規事業に対してシステムが素早くかつ柔軟に対応していくためには、これまでの事業拡大に伴って機能間が密結合で互いに依存しあっていたモノリシック(一枚岩)なシステムから、システムの粒度を小さくし、依存関係を弱めることで拡張性や変更容易性を高める必要がありました。そのため社内ではマイクロサービスアーキテクチャを採用し、スケーラビリティやアジリティの向上を目指しています。
また、GoogleやNetflix、メルカリのような世界的企業でも導入されているgRPCを新たに採用することにより、決められた規格に対する保証を高め、リクエストの多重化・頻発にも適応するシステムを目指しています。
メインの開発言語の乗り換え
レバテックでは主に動的型付け言語であるPHPを用いて開発をおこなっていましたが、サービスの規模が拡大し、開発者の人数も増えてきたことにより、実行時までエラーがわからないPHPでは、機能追加やバグの修正時の確認作業に多くの工数がかかるようになっていました。
そこで、コンパイラが事前にエラーを検出してくれる静的型付け言語のTypeScriptへの乗り換えを実行しました。 静的型付け言語のなかでもTypeScriptを選択した理由には、フロントエンドからバックエンドまでの言語の共通化を図れることにより開発を効率化できる狙いがあります。
ドメイン駆動開発
事業領域の拡大に伴いドメインが広く複雑になったことで、エンジニア個人個人がドメインを完璧に理解することが難しくなりました。 そのため、ドメイン駆動開発を取り入れました。これに対して、エンジニアが多職種からなるドメインエキスパートとユビキタス言語を用いてコミュニケーションを取ることで、ドメイン知識の不足を補い、チームとしてサービス品質と開発効率を高く維持することを目指しています。
また、ドメインエキスパートと協力してドメインルールの分析をおこない適切にドメイン分割をすることで、マイクロサービスの疎結合化を実現し、エンジニアが開発時に必要となるドメイン知識を限定することを可能にし、開発効率の向上を目指しています。
クリーンアーキテクチャ
レバテックではシステムが複雑化するにつれて密結合なクラスが増えていき、品質の担保にかかるコストが高くなってしまいました。 そのため、クラスの疎結合を維持するために、レバテックの開発組織ではレイヤードアーキテクチャの一つである、クリーンアーキテクチャの概念を取り入れています。
もともとアーキテクチャとしてMVCを採用していましたが、サービスの拡大に伴い、モデル層が肥大化しメンテナンス性が低下していました。そのため、クリーンアーキテクチャを採用することで、大規模なサービスでも改修影響範囲を限定し改修コストの抑制を目指しています。
LeSS(Large Scale Scrum)
生み出され続ける新規事業と、拡大しつづける既存事業に対応するために、レバテックはアジャイル開発手法の一つである、スクラム開発を採用しています。 ウォーターフォールのように完成系を完全に定義してから開発に臨むのではなく、段階的に開発を進めることで、ユーザーにとって最善のサービスになるよう計画をアジャストしていくことができます。
従来の事業サイドから要望を受けて開発を進める社内受託型の組織を脱却し、企画段階からエンジニアがアサインされ、テクノロジーの強みを活かして企画を立案し、システムを構築していく開発組織への変革を目指しています。
また、大規模なプロダクト開発に適応するためにLeSS*1の概念を導入し、スクラムの強みを維持しながらもスケールするために自己組織化チームの組成やプロセス管理の改善をおこなっています。
テクニカルイネイブリングチームの立ち上げ
上記のような取り組みをより素早く実現していくために、開発支援を目的とした社内共通ライブラリを作成しアーキテクチャの構成を担保することや、チームトポロジーの概念に基づきチームを横断してのコードレビューやプロジェクトマネジメント支援をおこなうテクニカルイネイブリングチーム*2を組成し品質の向上をおこなっています。
②プロダクト品質の担保
数多くのプロダクトやシステムを抱えるレバレジーズグループでは、各システムやユーザーへの信頼性を高めるためにそれぞれの事業やプロダクトの品質の向上が不可欠です。 そのため、レバテックにおいてもTQC(トータルクオリティコントロール)という全社品質管理の手法を導入し、クオリティコントロールを実現しています。
品質管理チームを社内で立ち上げ、下記の図のような管理システムを社内で独自開発し、他社に負けない高品質なシステムを目指してクオリティコントロールに取り組んでいます。
③レバテックID(共通ID)
レバテックでは、IT専門職の一生に寄り添うために、一過性の高いサポートではなく、「ゆりかごから墓場まで」を意識した長期的なキャリアをサポートするサービスの展開を目指しています。
レバテックユーザーの人生を長期的にサポートしていくためには、これまで分散していた各種情報を紐付けることでサービス間の連携を強化し、ユーザー体験を向上させる必要がありました。そのため、「レバテックID」という共通ID化を進めており、再利用性が高いサービスの実現を目指しています。
この実現のため、OAuth2.0やその拡張規格であるOpenID Connectを採用することで認証と認可を強化し、さらにはレバテック独自のOAuthのサービスプロバイダを構築することで、共通ID(レバテックID)の拡張性を高めました。
また、ユーザビリティの向上のため共通IDと並行して独自の分析基盤も構築しており、各ユーザーに最適なタイミングで最適なコンテンツを提供できるサービスの実現に取り組んでいます。
④アドバイザーの頭の中をテクノロジーで再現
レバテックはIT黎明期からエンジニアのキャリア支援をおこなってきたため、膨大なデータと業界随一の専門性を誇るアドバイザーの在籍が大きな強みです。
アドバイザーの提案を、ヒトを介さずとも提供できる世界を実現するために、社内のデータサイエンティストや機械学習エンジニアを中心に求職者と企業のマッチングアルゴリズムの開発に力を入れています。
アドバイザーが思考し、提案する求人を機械学習で再現するレコメンドエンジンの開発のため、機械学習の運用基盤であるMLOps*3の構築を進めています。 MLOpsの構築のために、機械学習フレームワークであるscikit-learnやSageMaker、Feature Store、Apache Beamなど、新技術をはじめとしたツールを積極的に取り入れ、人間を越えたマッチングにも挑戦していきます。
⑤その他技術的な取り組み
ユーザー体験の改善の高速化
数十万人ものレバテックユーザーの顧客体験の改善を加速するための取り組みもおこなっています。
従来はデザインの複雑なランディングページのリリースに数週間もの時間を要していたり、既存システムの運用・保守に追われサービス利用体験の改善に満足なリソースを割くことができていませんでした。
それに対して、Amplify Studio*4の導入を進めることにより、開発効率の向上を目指しています。
サービスの信頼性の向上を目的とするエンジニアリング
サービスオリエンテッドな思想を大切にしているレバレジーズの開発部では、常にサービスの信頼性を上げる取り組みをおこなっています。
その取り組みの一つとして、3年前よりSREを取り入れ、これまではインフラとしてサービスにまで考えが及ばない運用保守中心の体制から、よりプロダクトの信頼性を向上させるためのサーバレス化や、CI/CDを用いた自動化に取り組み、DevOps化を推進しています。
また、Datadogを用いた監視体制基盤の構築や、AWS CDK、Terraformを用いたIaC化も推進しており、システム課題を持続的に改善する文化の浸透を目指しています。
テクノロジーで社会・全産業の問題解決を加速させる
日本で最も期待される成長産業における「ITリソース不足」という深刻な社会課題を解決するため、我々レバテックは歩みを止めません。レバテックは、2030年までに今までとは比較できないほどの速度での事業開発と大規模投資を進めていきます。
日本で最も価値のあるIT領域のHRプラットフォームになることを通じて、成長産業のハブになることを目指します。我々はまだどの企業も実現していないことを、一つひとつ解決していき、日本の社会・全産業の問題解決を加速させていきます。
私たちとともに日本の未来をテクノロジーでつくっていきませんか?