この記事は Azure DevOps を概観しつつ、利用して感じたことなどを書いていきたいと思います。
ここで触れなかったトピックなどについて、何か気付きがあればまた別の機会にお届けできればと思います!
※スクリーンショットに黒塗り部分が多くなっていますが、ご容赦ください。
Azure DevOps とは
一次情報
公式ページによると次のように定義されています。
モダンな一連の開発サービスを利用して、よりスマートに計画を立て、より効率的に共同作業を行い、より迅速に出荷しましょう。
モダンな一連の開発サービスたち
開発プロジェクトを進めるために必要なサービス群の総称が Azure DevOps です。
Azure DevOps に含まれるモダンな一連の開発サービスと呼ばれるものは次のとおりです。
サービス名 | 説明 |
---|---|
Azure Boards | アジャイル計画のためのボードとバックログ |
Azure Repos | ソースコードのバージョン管理と管理のためのリポジトリ |
Azure Pipelines | 継続的インテグレーションとデプロイのためのパイプライン |
Azure Artifacts | 成果物のバージョン管理と管理のためのリポジトリ |
Azure Test Plans | プロジェクトライフサイクル全体の継続的なテスト統合 |
Azure DevOps は SaaS での提供となる Azure DevOps Services
と、サーバライセンスでの提供となる Azure DevOps Server
の2つの形態での提供となっており、今回は Azure DevOps Services
についての記事となっています。
Azure Test Plans について
このサービスは利用料金がちょっと試してみようと思える金額ではないので、今回は使用を見送っています。
Azure DevOps の料金によると次のように規定されていました(2023/03/31 14:15 確認)。
- Test Plans を使用しないプラン $6/user/month
- Test Plans を使用するプラン $52/user/month
$52 = ¥6,907 ですから、数人のチームで試そうと思うと数万円必要になりますね。
正直ちょっと使いにくいお値段かもしれないなと思います。。。
Azure DevOps の始め方
前提条件
今回は私が所属している会社の環境で実施したので次のことが前提になります。
- AADにディレクトリが存在している
- 自分たちのチーム用にサブスクリプションが作成されている
- サブスクリプションレベルの権限が付与されている
Azure Portal から始めよう
何はなくともOrganization
Azure DevOps を始めるには Organization (組織) が必要です。
プロジェクトやリポジトリ、パイプラインなどのリソースは Organization に紐付きます。
また、原則的(※)に課金ユーザの識別や範囲も Organization の単位で制御されます。
※原則的
後述しますが、複数 Organization に所属するユーザに対して一度だけ課金するようなオプションも存在しているため、原則的という表現になっています。
プロジェクトを作成しよう
Organization を作成したらプロジェクトを作成しましょう。
プロジェクトは Azure Repos や Azure Boards などを関連付けるコンテナになります。
Organization、プロジェクト、各サービスの関係
※この図では Azure Boards/Azure Repos/Azure Pipelines のみが描画されていますが、Azure Test Plans/Azure Artifacts も同様にプロジェクトに関連付けられます。
サービス各論
Azure Boards
- プロジェクトのテンプレートがあり、アジャイル系ならすぐに始められます
- この記事では Scrum を選択したものとして記述しています
- 過去に作成したプロジェクトをテンプレートとして開始することもできます
- Azure Repos/Azure Pipelines等との相互作用により次のような事が実現でき、良い開発体験が得られます
Azure Repos
Azure Repos について、次のような理由から現時点では Microsoft と GitHub の動向を注視していく必要があると、筆者は考えています。
・Azure Repos でできることは一定程度 GitHub でも実現可能
・Azure Repos -> GitHub へ移行する仕組み(GitHub Enterprise Importer)などが用意されている
・VSCode から 拡張機能を使用して Static Web Apps をデプロイしようとした時に GitHub アカウントを求められる一方、 Azure DevOps はそもそも選択肢として存在しないなど、明らかに GitHub を志向したサービス展開が見られる
Azure Pipelines
Azure Artifacts
- 今回使用していないので割愛
Azure Test Plans
- 今回使用していないので割愛
料金について
Azure DevOps のコストの発生や複数組織に所属するユーザの課金については一部難しいところがありますので、少し細かめに書いてみます。
コストの発生について
結論
- 月あたり料金を日割りして、日次でコストが計上されます。
- 月あたりの料金は公式によると、$6/ユーザです。
無用なコストの発生を回避する
- たとえば、プロジェクトの内容は見てほしいけどタスクの実行や開発をする訳ではないユーザがプロジェクト関係者にいる場合、そのユーザに必要な権限は Basic レベルではなく、 Stakeholder レベルかもしれません。
- コストが発生するのは Basic レベル以上のユーザの数に対してなので、こうしたケースでは権限レベルを変更するだけで無用なコストの発生を回避しつつ、プロジェクトに参加してもらうことができます。
料金に関するミスリードっぽく見えるかもしれない公式情報
Microsoft の Azure DevOps Services のページ を見ると、下図のように書かれています。
これだけを読むと月次課金されるのかな?と思ってしまいそうです。
ですが、これはそうではなく月あたり料金の日割分が日次でコストとして発生するというのが正しいです。
こちらについては公式にドキュメントで次のように説明されています。
Q: 毎月のコミットされた購入ではなく、日割り計算料金の違いは何ですか?
A: ユーザー割り当てベースの課金に対する変更の一環として、月単位から毎日の請求に切り替えました。ユーザーに数週間又は数日の有料アクセス権を付与すると、1か月間ではなく、有料アクセスに割り当てられた時間に対してのみ支払われます。organizationを月単位から日単位の請求に切り替えると、次の Azure 課金は以前よりも低くなる可能性があります。翌月は、1か月分の1日の料金が蓄積されると、通常の状態に戻ります。
※MS-Learn > Azure > Azure DevOps > セキュリティ > 請求に関する FAQ より引用
結論のところで紹介したように日次でコストが発生しているので、このドキュメントは正しそうです。
複数組織に所属するユーザの課金を一度だけにする
複数organization課金では、同一サブスクリプションに所属する一人のユーザが複数の Organization に所属するケースについて、マルチorganization課金設定を有効にすることでコスト効率が改善することが説明されています。
Single organization で運用する場合、organization ごとに5人のBasicアクセスレベルを持った無料のユーザを設定可能です。一方、Multi organization で運用する場合、5人のBasicアクセスレベルを持った無料のユーザはサブスクリプションで共有されます。
このことから、公式ドキュメントでも次のように説明されています。
Q: マルチorganization課金はすべての顧客にとって意味がありますか?
A: いいえ。たとえば、既定の割り当てベースの課金では、各organizationは5人の無料 Basic ユーザーを取得します。複数organization課金に変更すると、Azure サブスクリプションには5人の無料の Basic ユーザーが付与され、リンクされているすべての組織間で共有されます。ほとんどのユーザーが1つのorganizationにのみアクセスすると、5人の無料ユーザーが最もコスト効率が高くなります。多くのユーザーが複数の組織にアクセスする場合は、マルチorganization課金が最適なオプションである可能性があります。
※MS-Learn > Azure > Azure DevOps > セキュリティ > 請求に関する FAQ より引用
まとめ
Microsoftさんがどういう方向に舵を切るかわからないところはあるものの、お手軽に従量課金で始められるので、まずは始めてみましょう。
アジャイルに適合した形で利用可能であることも、モダンな開発現場に適合したツールだと思います。