Upgrade to Pro — share decks privately, control downloads, hide ads and more …

学習しながらアーキテクチャを進化させていくためのモノレポ

 学習しながらアーキテクチャを進化させていくためのモノレポ

Hirotaka Miyagi

October 06, 2023
Tweet

More Decks by Hirotaka Miyagi

Other Decks in Programming

Transcript

  1. 戦略 Featureチーム ... テナントのリポジトリで業務要件を達成するアプリケーションを実装 Platformチーム 基盤のリポジトリでテナントに関わらずPlainを利用する上で必要になる基盤とな るコードをnpm private packageで提供 サービステンプレートとしてテナント立ち上げに必要なコード群が生成できるよ

    うなツールを提供: npx @route06/create_next_app 今優先して取り組むこと 初期テナントへの提供の完遂を優先し、ドメインの理解と実装を進める テナントの分離がコードレベルで確実に行われている 複数テナントの運用を見据え、リポジトリ間のパッケージ共有をチームが学習する 1. テナントと基盤のコードでリポジトリを分離する 8
  2. 起きた課題 直近の開発における調整の多さ ... ドメインの機能を実装するために基盤の実装も必要 で、結果的に2つのリポジトリを変更しなければいけなくなる npm private packageによる分離は立ち上げフェーズの今本当に適切なのか? 組織のスケーラビリティ ...

    この構成では各テナントに対して保守する開発チームが必 要になり、テナントを増加させるためにはチームのスケールが必要になる 1. テナントと基盤のコードでリポジトリを分離する 9
  3. 戦略 pnpm workspaceを利用し、各機能をパッケージという単位でモジュール分割する Featureチーム ... 統合したリポジトリで業務要件を達成するアプリケーションを実装 Platformチーム ... 統合したリポジトリでドメインに依存しない基盤機能・非機能要件 を実装

    今優先して取り組むこと 初期テナントの完遂を優先し、ドメインの学習やモデリング・実装を進める 逆コンウェイ戦略での境界の探索 一度優先度を下げたこと リポジトリ間のパッケージ共有の学習 2. モノレポへの統合 12
  4. 複数テナントの情報が 1 つのリポジトリに同居するため、issue や PR などの管理が煩雑に なる可能性がある pnpm workspaceの学習コストは高いと感じており、新規参加メンバーのオンボーディング の改善は必要

    モノレポそのものの複雑さ(各種開発ツールでモノレポの設定が必要になる・Branch Protectionの設定がしづらい等) → 今後の学習次第でポリレポに戻す可能性はあるが、現在は境界の探索容易性を重視している 残る課題 15
  5. pnpm workspace実践ノウハウ - Speaker Deck pnpm workspaceの運用中に起きた課題とその解決策をまとめたスライドです Plainのフロントエンドにおける技術選定(2023年8月版) - ROUTE06

    Tech Blog モノレポを中心としたその他の技術選定全体についてまとめています 全社ワークスペースにGitHubを選んだROUTE06の開発生産性 - Findy Engineer Lab - ファ インディエンジニアラボ ROUTE06では、開発業務以外のメンバーも含め全員がGitHubを利用しています Related Links 16