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

モノレポなライブラリ群をCICDしたくて色々試した話

takas
January 28, 2023

 モノレポなライブラリ群をCICDしたくて色々試した話

2023年1月の.NETラボで発表した資料です。
デモのコード: https://github.com/Takas0522/dotnetlab-demos/tree/main/2023/01-try-mono-lib
発表の動画: https://www.youtube.com/watch?v=SoPGwiBsDLs

takas

January 28, 2023
Tweet

More Decks by takas

Other Decks in Programming

Transcript

  1. 誰? Takas(@DevTakas) Angular / Azure / .NET Core / Azure

    DevOps / Microsoft Graph Microsoft MVP M365 Development
  2. 1. モノレポとマルチレポ • モノレポ • メリット • サービスで固まっているので関連するリソースが明確 • テスト時に依存するものがわかるので統合的なテストも容易

    • デメリット • CIやプロジェクト管理が複雑になりがち • 変更が巨大になりがち(諸説ある) • ポリレポ • メリット • CIやプロジェクト管理が楽 • 単一のリソースであればテストが容易に開始できる • デメリット • 依存するリソースが分かりづらい(もしくはわからない) • 上記のため変更の波及先が把握しづらい(統合的にテストをし辛い) モノレポとマルチレポのメリットとデメリット
  3. 3.NxとTurborepoについて • モノレポに適した拡張ビルドシステム • 開発元はNx Cloud(Nrwl) • JS/TS/node.jsに特化 • ただし.NET用のnx-dotnetなどもある

    • Nx起点でプロジェクト構築すると色々と楽 • テストやLintツール勝手にいれてくれたりとか… • Gitの差分測定とそれを利用したBuildの高速化 • 差分があった領域のタスクのみ実行してくれる Nxとは
  4. 3.NxとTurborepoについて • 雑に始めるならTurborepoは楽 • ただCIに持っていくと色々と面倒 • キャッシュをnode_modulesに持っていくのでリモートキャッシュしないと使えない • リモートキャッシュはVercelにサインアップすれば使えるが商用利用するには… •

    コンテナなど提供されているがセットアップがちと面倒 • Nxはプロジェクト構成がガッツリ変わるので好き嫌いは激しそう • 提供している機能は強力 • CI持っていっても素直に差分のみビルドしてくれたり • 標準で依存関係をグラフで表示してくれたり • 移行は楽だった印象(Angularの場合だが…) • そもそも@angular/cli開発元らしいのでその影響もあるかもしれない 使ってみた感想
  5. 5.まとめ • モノレポとマルチレポの違いについて • 一長一短あり。PJ運営方法やサービス構成に合わせて適切な方を選択 • 昨今の潮流からするとサービス単位でモノレポ構成のほうが良さげ? • マイクロサービスで作られている必要はあるが •

    モノレポはビルドツールを導入してあげる • CIや依存関係のコントロール管理が楽になる • ビルドコマンドの実行順序とか・・・ • NxやTurborepoなど様々なビルドツールが存在する • 特色により最適なツールが異なるので技術選定は慎重に!
  6. 参考ページ • monorepo.tools • https://monorepo.tools/ • Monorepo開発のメリット vs デメリット •

    https://circleci.com/ja/blog/monorepo-dev-practices/ • https://turbo.build/ • https://nx.dev/