JavaScriptを有効にしてください

Dev Box を理解し隊

 ·   7 分で読めます  ·   Kento

Microsoft Dev Box について用語と登場人物の役割を中心にまとめます

Microsoft Dev Box とは

Dev Box とは開発環境をユーザーに提供するサービスです
物理端末を提供する代わりに、Azure VM を提供するイメージです
そのため、通常の端末と同様に管理が必要になります

どんな役割の人が何をするのかを簡単に書いてみます

役割 担当内容
プラットフォーム エンジニア ネットワークなど Azure のインフラ周りを整備
IT 管理者 Intune や ADDC を使って Dev Box を管理
開発のチーム リーダー 開発者メンバーが利用する VM テンプレートを準備。ユーザーのニーズに合わせていくつか選択肢を提供することも
開発者 上記で準備されたラインナップから 使いたい開発環境を選択

devbox01
Dev Box の利用の流れ:

参考:Microsoft Dev Box とは - Microsoft Dev Box | Microsoft Learn

用語の整理

Dev Box では用語がややこしいので整理しておきます

開発ボックス (Dev Box)

ユーザーがアクセスする VM です
開発者は好きなタイミングで開発ボックスを作成、停止、削除できます

開発ボックス定義 (Dev box definition)

開発リーダーが開発者に提供する開発ボックスをカタログ化したものです
以下の要素から構成されます

  • VM イメージ
  • VM サイズ (SKU)
  • ストレージ

開発リーダーはこの定義の中から自分のチームで使うカタログを選択します
例えば「つよつよマシン」「そこそこマシン」「win10 マシン」「win11 マシン」などを事前にカタログ化しておきます

開発ボックス プール (Dev Box pool)

開発者が利用する開発ボックス (Dev Box) のテンプレートです
以下の要素から構成されます

  • 利用する開発ボックス定義
  • 開発ボックスが所属するネットワーク
  • 開発ボックス内での OS 権限
  • 自動シャットダウンの有無

プロジェクト

実際の開発チームと突き合わせる概念です
「うちのチームでは「つよつよマシン」と「そこそこマシン」テンプレートを開発者に選ばせるんだ」
「うちのチームでは1人当たりマシンは2台までだ」

とプロジェクト内の利用ルールを紐づけます

デベロッパーセンター

プロジェクトや開発ボックス定義や、ネットワーク設定などすべての概念を束ねる親玉グループです

用語を図にしてみる

公開情報にある図はこちらです
誰がどこを管理するのかが わかりずらいので修正してみます

devbox02
Dev Box のアーキテクチャ:

参考:Microsoft Dev Box の主な概念 - Microsoft Dev Box | Microsoft Learn

プラットフォーム エンジニアの役割

プラットフォーム エンジニアは Azure インフラを管理します
今回は以下の要素を管理することとします

  • デベロッパー センターの管理
  • Network 構成
  • プロジェクトの作成
  • 開発ボックス定義の作成
graph LR

%% ノード
subgraph DevCenter["デベロッパー センター"]
  Project["開発プロジェクトA"]
  subgraph devboxdef1["つよつよ開発ボックス定義"]
    direction RL
    SKU1["VM SKU"]
    storage1["VM ストレージ"]
    image1["VM イメージ"]
  end
  subgraph devboxdef2["そこそこ開発ボックス定義"]
    direction RL
    SKU2["VM SKU"]
    storage2["VM ストレージ"]
    image2["VM イメージ"]
  end
  Network1["独立ネットワーク"]
  Network2["オンプレ接続
            ネットワーク"]
end

%% 関係性

%% 色
classDef manageG fill:#006699,color:#fff,stroke:#fff
class Project,Network1,Network2 manageG

classDef VnetG fill:none,color:#0a0,stroke:#0a0
class DevCenter,devboxdef1,devboxdef2 VnetG

開発のチーム リーダー

開発のチームリーダーはプロジェクトに合わせて自チームで使う開発環境 (開発ボックス プール) を作ります
プラットフォーム エンジニアが作った材料を組み合わせるイメージです

graph TB

%% ノード
subgraph DevCenter["デベロッパー センター"]
  direction TB
  subgraph devboxdef1["つよつよ開発ボックス定義"]
    direction RL
    SKU1["VM SKU"]
    storage1["VM ストレージ"]
    image1["VM イメージ"]
  end
  subgraph devboxdef2["そこそこ開発ボックス定義"]
    direction RL
    SKU2["VM SKU"]
    storage2["VM ストレージ"]
    image2["VM イメージ"]
  end
  Network1["独立ネットワーク"]
  Network2["オンプレ接続
            ネットワーク"]
  subgraph Project["開発プロジェクトA"]
    subgraph pool11["つよつよ開発ボックス プール"]
      devboxdef11["開発ボックス定義"]
      OS11["OS 内ユーザー権限"]
      network11["ネットワーク"]
    end
    subgraph pool12["そこそこ開発ボックス プール"]
      devboxdef12["開発ボックス定義"]
      OS12["OS 内ユーザー権限"]
      network12["ネットワーク"]
    end
  end
end

%% 関係性
devboxdef1 --"選択"--> devboxdef11
Network1 --"選択"--> network11
devboxdef2 --"選択"--> devboxdef12
Network2 --"選択"--> network12

%% 色
classDef manageG fill:#006699,color:#fff,stroke:#fff
class devboxdef11,OS11,network11,devboxdef12,OS12,network12 manageG

classDef VnetG fill:none,color:#0a0,stroke:#0a0
class pool11,pool12 VnetG

開発者

開発者は用意されたプールの中から自分が必要なものを選択し、利用します

graph TB

%% ノード
subgraph DevCenter["デベロッパー センター"]
  direction TB
  subgraph devboxdef1["つよつよ開発ボックス定義"]
    direction RL
    SKU1["VM SKU"]
    storage1["VM ストレージ"]
    image1["VM イメージ"]
  end
  subgraph devboxdef2["そこそこ開発ボックス定義"]
    direction RL
    SKU2["VM SKU"]
    storage2["VM ストレージ"]
    image2["VM イメージ"]
  end
  Network1["独立ネットワーク"]
  Network2["オンプレ接続
            ネットワーク"]
  subgraph Project["開発プロジェクトA"]
    subgraph pool11["つよつよ開発ボックス プール"]
      devboxdef11["開発ボックス定義"]
      OS11["OS 内ユーザー権限"]
      network11["ネットワーク"]
    end
    subgraph pool12["そこそこ開発ボックス プール"]
      devboxdef12["開発ボックス定義"]
      OS12["OS 内ユーザー権限"]
      network12["ネットワーク"]
    end
  end
  DevBox
end

%% 関係性
devboxdef1 --"選択"--> devboxdef11
Network1 --"選択"--> network11
devboxdef2 --"選択"--> devboxdef12
Network2 --"選択"--> network12
pool11 --> DevBox

%% 色
classDef manageG fill:#006699,color:#fff,stroke:#fff
class DevBox manageG

IT 管理者の役割

作成された Dev Box を OS 観点で管理します
Intune や ADDC を使った管理方法になります

graph TB

%% ノード
subgraph DevCenter["デベロッパー センター"]
  direction TB
  subgraph devboxdef1["つよつよ開発ボックス定義"]
    direction RL
    SKU1["VM SKU"]
    storage1["VM ストレージ"]
    image1["VM イメージ"]
  end
  subgraph devboxdef2["そこそこ開発ボックス定義"]
    direction RL
    SKU2["VM SKU"]
    storage2["VM ストレージ"]
    image2["VM イメージ"]
  end
  Network1["独立ネットワーク"]
  Network2["オンプレ接続
            ネットワーク"]
  subgraph Project["開発プロジェクトA"]
    subgraph pool11["つよつよ開発ボックス プール"]
      devboxdef11["開発ボックス定義"]
      OS11["OS 内ユーザー権限"]
      network11["ネットワーク"]
    end
    subgraph pool12["そこそこ開発ボックス プール"]
      devboxdef12["開発ボックス定義"]
      OS12["OS 内ユーザー権限"]
      network12["ネットワーク"]
    end
  end
  DevBox
end

managed[["Intune または ADDC"]]

%% 関係性
devboxdef1 --"選択"--> devboxdef11
Network1 --"選択"--> network11
devboxdef2 --"選択"--> devboxdef12
Network2 --"選択"--> network12
pool11 --> DevBox
managed --> DevBox

%% 色
classDef manageG fill:#006699,color:#fff,stroke:#fff
class managed manageG

まとめ

今回は用語と登場人物に焦点を当てて Dev Box をまとめてみました
用語はややこしくて複雑ですが、誰が何をするかに焦点を当てると理解が進みました

次回は実際にデプロイをしてみたいと思います

参考

共有

Kento
著者
Kento
2020年に新卒で IT 企業に入社. インフラエンジニア(主にクラウド)として活動中