SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

ProductZine Day&オンラインセミナーは、プロダクト開発にフォーカスし、最新情報をお届けしているWebメディア「ProductZine(プロダクトジン)」が主催する読者向けイベントです。現場の最前線で活躍されているゲストの方をお招きし、日々のプロダクト開発のヒントとなるような内容を、講演とディスカッションを通してお伝えしていきます。

ProductZine Dayの第3回。オフラインとしては初開催です。

ProductZine Day 2024 Summer

ProductZine Day 2024 Summer

「Developers Summit 2024」レポート(AD)

LayerXのバクラクシリーズを支える「モノレポ開発」の裏側に迫る

【16-B-8】ビジネスドメインの拡大を実現するバクラクシリーズでのモノレポ開発

ポリレポからモノレポへ

 ポリレポ開発で生じていた問題を解消すべく、バクラクでは2022年9月よりモノレポ開発に挑戦することになった。これまでのように1つのレポジトリで1プロダクトを構成するのではなく、より小さなビジネスドメインにフォーカスしたリソースカットでレポジトリを構成することにしたのだ。

 「バックエンドは複数のビジネスドメインを区別した形で含める」「フロントエンドはスモールスタートで小さなプロダクトだけを含める」「インフラはデプロイ設定やTerraformなどのIaCも含める」「サブシステムは機械学習系を含めない」という方針でスタートした。

 モジュール管理などの言語が持つエコシステムやCI/CDの記述を容易にするため、ルートディレクトリ配下はGo・Terraform・Web(TypeScript)のように言語ごとに分けることにした。また、アーキテクチャ上の各コンポーネントはディレクトリで表現し、その内部に実装を閉じるようにしたうえで、サービスの一覧性を高めるための「サービス」ディレクトリを設け、その下にサービスA・サービスBといった形でマイクロサービスのディレクトリをつくっている。

 開発体制に関しては、モノレポ開発になってからも1プロダクトあたり2〜4人という開発体制は変わらないものの、DevOps責任者を常にアサインするとともに、プロダクト開発のパフォーマンス向上を目的とした「Enabling team」を新たに発足させた。

 このようなチーム体制になった背景には、『チームトポロジー 価値あるソフトウェアをすばやく届ける適応型組織設計』(マシュー・スケルトン、マニュエル・パイス著、日本能率協会マネジメントセンター)で紹介されている次の4つの基本的なチームタイプの影響があるという。

  • Stream-aligned team:ビジネスドメインにおける一連のフロー(機能の開発・リリース・運用)を担当する。
  • Enabling team:Stream-aligned teamとコラボレートしながら障害を取り除き、システムや組織に必要な機能の発見や技術の伝搬を担う。
  • Complicated Subsystem team:専門知識を要するシステムの開発や運用に携わる。
  • Platform team:チームによるデリバリーを加速するための社内サービス(X-as-a-Service)を提供するように振る舞う。

 実際にモノレポでの開発体制にしたことで、「相互のチームが同じコードベースから始められる」「Enabling teamはStream-aligned teamとコラボレートする際のコンテキストスイッチが小さくて済むし、仕組みを伝搬するためのコストも小さくて済む」「Platform teamはサービス提供に必要なコストを小さく抑えられる」といったチーム間の相互作用が生まれた、と中川氏は語る。

 全プロダクトのフロントエンドのシングルエントリーポイントとして、アーキテクチャには「API Gateway Pattern」を採用。フロントエンドに向けてはGraphQLを公開し、マイクロサービスのAPIは直接公開しないこととした。また、内部通信には「Protocol Buffers」を採用し、ゲートウェイとマイクロサービス間や、マイクロサービス同士の通信で利用している。これにより、モノレポ内で複数個のプロダクトを構成できるようになった。

 GraphQLのゲートウェイレイヤーでは、リソースの集約表現やリレーションの解決など、フロントエンドの表示に関わるリソース解決を一手に引き受けている。その代わり、必要なAPIの呼び出しのみを行い、ユーザー入力から出力を生成するオペレーションのロジックには干渉しない。

 その裏にあるマイクロサービスのレイヤーでは、ドメインモデリングを行い、APIを設計する。この過程で、顧客と対話するための重要な構成要素や依存関係を明らかにしていく。

 こうしてバクラクシリーズのアーキテクチャは、プロダクト同士で依存関係にあったところから、ビジネスのリソースカットによる連携へと進化したのだ。

ポリレポからモノレポへ移行したことによるアーキテクチャの変化
ポリレポからモノレポへ移行したことによるアーキテクチャの変化

次のページ
デメリットを乗り越えてでもモノレポ開発を選ぶワケ

関連リンク

この記事は参考になりましたか?

「Developers Summit 2024」レポート連載記事一覧

もっと読む

この記事の著者

野本 纏花(ノモト マドカ)

 フリーライター。IT系企業のマーケティング担当を経て2010年8月からMarkeZine(翔泳社)にてライター業を開始。2011年1月からWriting&Marketing Company 518Lab(コトバラボ)として独立。共著に『ひとつ上のFacebookマネジメント術~情報収集・人脈づくり...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

提供:株式会社LayerX

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

ProductZine(プロダクトジン)
https://productzine.jp/article/detail/2516 2024/04/12 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

ProductZine Day&オンラインセミナーは、プロダクト開発にフォーカスし、最新情報をお届けしているWebメディア「ProductZine(プロダクトジン)」が主催する読者向けイベントです。現場の最前線で活躍されているゲストの方をお招きし、日々のプロダクト開発のヒントとなるような内容を、講演とディスカッションを通してお伝えしていきます。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング