APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【Azure DevOps】1つのプロジェクトに複数のボードを作成する

f:id:thanaism:20211111142235p:plain

こんにちは。コンテナソリューショングループの髙井です。

今日はAzure DevOpsの記事です。

Azure DevOpsは、何も知らなくてもサッと使い始められるようになっています。

一方で、同じ環境で使う人が増えてくると、イイ感じに分けて使いたくなったりして、そんなときにどうすれば〈イイ感じ〉にできるのか悩んだりすることもあるかと思います。

今回は、よくある分けたいニーズとしてボードを複数使いたいケースを取り上げます。

結論

いきなりですが、タイトルについての結論です。

  • Azure DevOpsでは1つの〈プロジェクト〉内に複数の〈チーム〉を作成することができる
  • チームごとに〈ボード〉が生成される
  • ボート単位で別々の〈チケット〉や〈スプリント期間〉を設定できる
  • 以降は、各語句についての説明や考え方を記載します。

    組織、プロジェクト、チーム

    Azure DevOpsの大前提 まず、Azure DevOpsが〈階層構造〉であることを理解しておく必要があります。

    大きいものから順に、組織プロジェクトチームです。

    f:id:thanaism:20220125185008p:plain
    Azure DevOpsの階層構造

    組織とは

    Azure DevOps 組織 Azure DevOpsを利用するには、最初に〈組織 (Organization)〉を作成する必要があります。

    ある〈組織〉に対して、必ず1つのAAD(Azure Active Directory)テナントが親になっています。

    複数のテナントを親として持つことはできません。

    したがって、複数のテナントにまたがるユーザーを同じ〈組織〉に所属させたい場合、先に親となるAADテナント側でゲストユーザーとして招待しておく必要があります。

    プロジェクトとは

    Azure DevOps プロジェクト ある組織には複数の〈プロジェクト〉を作成できます。Azure DevOpsの基本単位といってよいでしょう。

    1つの〈プロジェクト〉には、おなじみのBoardsやRepos、Pipelinesなどの各種サービスが含まれます。

    Azure DevOpsを開始する場合、まず組織を作成し、その中に〈プロジェクト〉を1つ作成すれば、さしあたっては利用を始めることができます。

    チームとは

    Azure DevOps チーム プロジェクトの中には複数の〈チーム〉を作成できます。ユーザーが所属する最小単位です。

    ここで生じる問題は、複数の企画1を扱う際に、やり方が大きく2通りに分かれることです。

    • ひとつのプロジェクトの中に複数のチームを作る(single projectパターン)
    • ひとつのチームからなるプロジェクトを複数作る(many projectsパターン)

    実際には、複数のチームからなるプロジェクトを複数作ったり、組織を複数作ったりもできますが、論点を明確にするため今回は含めません。

    one project と many projects

    f:id:thanaism:20220125185100p:plain
    one project と many projects

    Azure DevOpsを手探りで使っている場合、おそらく自然と many projects のパターンになっていることが多いと思います。

    なぜなら、1つのプロジェクト内に複数のチームを作るにはUI上で深い項目に到達する必要があるからです。

    とはいえ本来ならば one project と many projects のメリット・デメリットを検討したうえでパターンを決定したいところです。

    実は、公式ドキュメントにも「組織の構造を計画する」というページがあります。

    docs.microsoft.com

    多くの内容が記載されていますが、キモはOverviewやRepos、Pipelinesなどを共有したいかどうかです。

    many projects

    many projectsのメリット プロジェクトが分かれると他のプロジェクトの情報は見えなくなります。つまり分離性が増します。

    同じ会社内で、まったく違う部署のまったく違う企画がある場合はプロジェクトを分けるほうがよいでしょう。

    お互いの情報にアクセスする必要がほとんどないことが予想されるからです。

    one project

    one projectのメリット 同じプロジェクトで複数のチームを作成すると、互いの情報は既定でオープンです。つまり同じ情報をもとにしたチーム間のコラボレーションに向いています。

    もちろんチームごとに権限を制限することもできますが、明示的な設定が必要になります。プロジェクトを分けるのに比べて情報の分離性は低いです。

    また、最初に結論で述べた通り、チームを複数作成するとチームごとに独自のボードが作成されます。

    小規模な部署で、一部のメンバーが重複しながら複数の企画にアサインされている場合など、アセットの切り分けが難しくなってきます。

    こうしたケースでは、単一のプロジェクトの中に複数のチームを作ったほうが管理コストは小さくなると予想されます。

    チケットとスプリント期間はボードごとに設定できる

    ボード分割のポイント ボードを分けると、ボードごとに別々のスプリント期間(Iteration)が設定できます。

    おそらくボードを分けたい理由でいちばん最初にくるのが〈スプリント期間を別々に設定したい〉だと思います。

    同じアセットを使用しているものの、担当領域の違いで区切りの違うスプリントが並行して走っているシーンなど、ぜひご活用ください。

    おわりに

    手探りでAzure DevOpsを利用し始めてしばらく経ったころに気になるあたりを想定して書きました。

    利用が拡大してくると、管理面でのケアが必要になってきますね。実際には、今回の内容に加え、権限まわりも理解していく必要があります。

    権限まわりは組織構造よりさらに複雑というか階層が多いので、近いうちにザックリまとめた記事を書くつもりでいます。


    1. Azure DevOpsにおける〈プロジェクト〉と表記がかぶるため、一般的なプロジェクトと同じ概念として〈企画〉と表現しています。