8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure DevOps 事始め

Last updated at Posted at 2023-04-07

この記事は 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 から始めよう

azure_portal_AzureDevOpsOrganizations.png

何はなくともOrganization

Azure DevOps を始めるには Organization (組織) が必要です。

プロジェクトやリポジトリ、パイプラインなどのリソースは Organization に紐付きます。

また、原則的(※)に課金ユーザの識別や範囲も Organization の単位で制御されます。

  1. Azure portal から遷移した先で Azure DevOps の Organization 画面へ遷移します
    azure_devops_organizations_entrypage.png

  2. 新しい組織の作成 から組織を作ります
    azure_devops_create_new_organization.png

※原則的
後述しますが、複数 Organization に所属するユーザに対して一度だけ課金するようなオプションも存在しているため、原則的という表現になっています。

プロジェクトを作成しよう

Organization を作成したらプロジェクトを作成しましょう。

プロジェクトは Azure Repos や Azure Boards などを関連付けるコンテナになります。

Organization、プロジェクト、各サービスの関係

azure_devops_concepts.png

※この図では Azure Boards/Azure Repos/Azure Pipelines のみが描画されていますが、Azure Test Plans/Azure Artifacts も同様にプロジェクトに関連付けられます。

サービス各論

Azure Boards

  • プロジェクトのテンプレートがあり、アジャイル系ならすぐに始められます
    • この記事では Scrum を選択したものとして記述しています
  • 過去に作成したプロジェクトをテンプレートとして開始することもできます
    azure_devops_project_style.png
  • Azure Repos/Azure Pipelines等との相互作用により次のような事が実現でき、良い開発体験が得られます
    • Azure Boards で起票したタスクからブランチを作る
    • Azure Boards で起票したタスクに Azure Pipelines や他の作業項目を関連付ける
    • ブランチがPRを通じてマージされたら自動的にタスクのステータスを Completed にする

      Azure Repos/Azure Pipelines/Azure Boards との連携などは、図中の赤線部分で管理できます
      azure_devops_new_item.png
      この辺りの自動的にタスクが閉じていく様は体験しないと伝わりづらいかなと思うので、ぜひご自分で試してみてください!

Azure Repos

  • いわゆるソースコードホスティングサービスです。
  • プロジェクト作成時に Git リポジトリとして作成します。
    azure_repos_overview.png

Azure Repos について、次のような理由から現時点では Microsoft と GitHub の動向を注視していく必要があると、筆者は考えています。
・Azure Repos でできることは一定程度 GitHub でも実現可能
・Azure Repos -> GitHub へ移行する仕組み(GitHub Enterprise Importer)などが用意されている
・VSCode から 拡張機能を使用して Static Web Apps をデプロイしようとした時に GitHub アカウントを求められる一方、 Azure DevOps はそもそも選択肢として存在しないなど、明らかに GitHub を志向したサービス展開が見られる
vscode_github_only.png

Azure Pipelines

  • CI/CDをサポートする仕組みです。GitHub Actions などをご存知であれば理解しやすいと思います。
    azure_pipelines_create.png

Azure Artifacts

  • 今回使用していないので割愛

Azure Test Plans

  • 今回使用していないので割愛

料金について

Azure DevOps のコストの発生や複数組織に所属するユーザの課金については一部難しいところがありますので、少し細かめに書いてみます。

コストの発生について

結論

  • 月あたり料金を日割りして、日次でコストが計上されます。
  • 月あたりの料金は公式によると、$6/ユーザです。
    • 2023/3/29現在で見ると¥132.5855 x 6 = ¥795.513
    • これを日割りすると、¥25.66171/日/ユーザ
    • このチームでは2-3名がBasicアクセスレベル以上で課金される対象だったので¥50-¥80程度のコストが発生していて概ね正しそうです。
      azure_devops_cost_daily_table.png

無用なコストの発生を回避する

  • たとえば、プロジェクトの内容は見てほしいけどタスクの実行や開発をする訳ではないユーザがプロジェクト関係者にいる場合、そのユーザに必要な権限は Basic レベルではなく、 Stakeholder レベルかもしれません。
  • コストが発生するのは Basic レベル以上のユーザの数に対してなので、こうしたケースでは権限レベルを変更するだけで無用なコストの発生を回避しつつ、プロジェクトに参加してもらうことができます。
    azure_devops_change_user_access_level.png

料金に関するミスリードっぽく見えるかもしれない公式情報

Microsoft の Azure DevOps Services のページ を見ると、下図のように書かれています。
azure_devops_services_cost_information.png
これだけを読むと月次課金されるのかな?と思ってしまいそうです。
ですが、これはそうではなく月あたり料金の日割分が日次でコストとして発生するというのが正しいです。
こちらについては公式にドキュメントで次のように説明されています。

Q: 毎月のコミットされた購入ではなく、日割り計算料金の違いは何ですか?
A: ユーザー割り当てベースの課金に対する変更の一環として、月単位から毎日の請求に切り替えました。ユーザーに数週間又は数日の有料アクセス権を付与すると、1か月間ではなく、有料アクセスに割り当てられた時間に対してのみ支払われます。organizationを月単位から日単位の請求に切り替えると、次の Azure 課金は以前よりも低くなる可能性があります。翌月は、1か月分の1日の料金が蓄積されると、通常の状態に戻ります。

MS-Learn > Azure > Azure DevOps > セキュリティ > 請求に関する FAQ より引用

結論のところで紹介したように日次でコストが発生しているので、このドキュメントは正しそうです。
azure_devops_cost_daily_table.png

複数組織に所属するユーザの課金を一度だけにする

複数organization課金では、同一サブスクリプションに所属する一人のユーザが複数の Organization に所属するケースについて、マルチorganization課金設定を有効にすることでコスト効率が改善することが説明されています。
azure_devops_billing_multi-organization.png
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さんがどういう方向に舵を切るかわからないところはあるものの、お手軽に従量課金で始められるので、まずは始めてみましょう。
アジャイルに適合した形で利用可能であることも、モダンな開発現場に適合したツールだと思います。

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?