共用方式為


規劃組織結構

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

使用您的商務結構作為您在 Azure DevOps 中建立的組織、專案和小組數目指南。 本文可協助您規劃 Azure DevOps 的不同結構和案例。

在 Azure DevOps 中,請考慮下列商務和共同作業的結構:

您也可以規劃下列案例:

至少有一個組織代表貴公司、您較大的程式碼專案集合,或甚至多個相關的業務單位。

什麼是組織?

Azure DevOps 中的組織是組織與連接相關專案群組的機制。 範例包括營業單位、地區部門或其他企業結構。 您可以為整個公司、自行選擇一個組織,或針對特定業務單位個別組織選擇一個組織。

每個組織都會取得自己的 免費服務層級 (每個服務類型最多五個使用者),如下所示。 您可以使用所有服務,或只選擇您需要補充現有工作流程的內容。

  • Azure Pipelines:CI/CD 每月 1,800 分鐘的託管作業和一個自我裝載作業
  • Azure Boards:工作專案追蹤和面板
  • Azure Repos:無限制的私人 Git 存放庫
  • Azure Artifacts:套件管理
  • 無限制項目關係人
    • 前五位使用者免費 (基本授權)
    • Azure Pipelines
      • 一個 Microsoft裝載的 CI/CD (一個並行作業,每個月最多 30 小時)
      • 一個自我裝載 CI/CD 並行作業
    • Azure Boards: 工作專案追蹤和面板
    • Azure Repos:無限制的私人 Git 存放庫
    • Azure Artifacts: 每個組織免費兩個 GiB

注意

Azure DevOps 雲端式負載測試服務已被取代,但 Azure 負載測試 仍可供使用。 這個完全受控的負載測試服務可讓您使用現有的 Apache JMeter 腳本來產生大規模的負載。 如需詳細資訊,請參閱 什麼是 Azure 負載測試?Visual Studio 中的負載測試功能變更和 Azure DevOps 中的雲端負載測試。

您需要多少組織?

從 Azure DevOps 中的一個組織開始。 然後,您可以新增更多組織,這可能需要不同的安全性模型,稍後再新增。 單一程式代碼存放庫或專案只需要一個組織。 如果您有需要單獨處理程式碼或其他專案的個別團隊,請考慮為那些團隊建立個別的組織。 它們會有不同的URL。 視需要新增專案、小組和存放庫,再新增另一個組織。

請花一些時間檢閱您的工作結構和要管理的不同商務群組和參與者。 如需詳細資訊,請參閱 將您的項目對應至業務單位結構考慮

提示

對於公司擁有的 Microsoft Entra 組織,請考慮限制使用者建立新組織作為保護 IP 的方式。 如需詳細資訊,請參閱 透過 Microsoft Entra 租用戶原則限制組織建立。 使用者可以使用其 MSA 或 GitHub 帳戶來建立組織,但沒有任何限制。

什麼是小組?

小組是支援許多 小組可設定工具的單元。 這些工具可協助您規劃和管理工作,並讓共同作業更容易。

為每個不同的產品或功能小組建立小組

每個小組都有自己的待辦專案。 若要建立新的待辦專案,請建立新的小組。 將小組和待辦專案設定為階層式結構,讓計劃擁有者可以更輕鬆地追蹤整個小組的進度、管理組合,以及產生匯總數據。 當您建立小組時,就會建立小組群組。 您可以在查詢中使用此群組,或設定小組的許可權。

什麼是專案?

Azure DevOps 中的專案包含下列一組功能:

  • 敏捷式規劃的面板和待辦專案
  • 持續整合和部署的管線
  • 原始程式碼和成品的版本控制和管理存放庫
  • 整個專案生命週期的持續測試整合每個組織都包含一或多個專案

在下圖中,虛構的 Contoso 公司在其 Contoso-Manufacturing 組織中有四個專案。

具有四個項目的組織影像

您需要多少個專案?

至少有一個項目開始使用 Azure DevOps 服務,例如 Azure Boards、Azure Repos 或 Azure Pipelines。 當您建立組織時,會為您建立預設專案。 在您的預設專案中,有一個程式代碼存放庫可以開始運作、待處理專案來追蹤工作,以及至少一個管線來開始自動化建置和發行。

在組織內,您可以執行下列其中一種方法:

  • 建立包含許多存放庫和團隊的單一專案
  • 建立許多專案,每個專案都有自己的團隊、存放庫、組建、工作項目和其他元素

即使您有許多小組處理數百個不同的應用程式和軟體專案,您也可以在 Azure DevOps 的單一專案中管理這些專案。 不過,如果您想要管理軟體專案與其小組之間更細微的安全性,請考慮使用許多專案。 隔離的最高層級是一個組織,其中每個組織都會連線到單一Microsoft Entra 租使用者。 不過,單一Microsoft Entra 租使用者可以連線到許多 Azure DevOps 組織。

注意

如果已為組織啟用 [將用戶可見度和共同作業限制為特定專案預覽功能],則新增至 [專案範圍使用者] 群組的使用者將無法存取他們尚未加入的專案。 如需詳細資訊和重要的安全性相關注標,請參閱 管理您的組織、限制專案的用戶可見度等等

單一專案

單一專案會將所有工作放在整個組織的相同「組合」層級。 您的工作有一組相同的存放庫和反覆運算路徑。 使用單一專案,Teams 會共用來源存放庫、建置定義、發行定義、報表和套件摘要。 您可能有許多團隊所管理的大型產品或服務。 這些團隊在產品生命週期中具有緊密的相依性。 您可以建立專案,並使用團隊和區域路徑來分割工作。 此設定可讓您的團隊瞭解彼此的工作,讓組織保持一致。 您的團隊會針對工作項目追蹤使用相同的分類法,讓您更容易溝通並保持一致。

提示

當多個小組在同一個產品上工作時,讓所有小組在同一個反覆專案排程上,有助於讓小組保持一致,並以相同的步調提供價值。 例如,Azure DevOps 中的組織在單一專案中有超過 40 個功能小組和 500 位使用者,這很正常,因為我們都在處理具有共同目標和常見發行排程的通用產品集。

大量的查詢和面板可讓您很難找到您要尋找的內容。 視您的產品架構而定,此困難可能會流入其他領域,例如組建、發行和存放庫。 請務必使用良好的命名慣例和簡單的資料夾結構。 當您將存放庫新增至專案時,請考慮您的策略,並判斷該存放庫是否可以放入自己的專案中。

許多專案

您可以藉由寄送產品的方式,來判斷項目結構。 有數個專案會轉移系統管理負擔,並讓您的團隊在團隊決定時更自主地管理專案。 它也可讓您更充分地控制跨不同專案對資產的安全性和存取。 不過,讓小組獨立與許多專案會造成一些對齊挑戰。 如果每個專案使用不同的程式或反覆項目排程,如果分類法不相同,可能會使通訊和共同作業變得困難。

提示

如果您在所有專案中使用相同的程式與反覆專案排程,您匯總數據和跨小組報告的能力會有所改善。

Azure DevOps 提供跨項目體驗來管理工作。

您可能會想要新增另一個專案,原因如下:

  • 禁止或管理對專案內資訊的存取
  • 支援組織內特定業務單位的自定義工作追蹤程式
  • 支援完全獨立的業務單位,這些單位有自己的系統管理原則和系統管理員
  • 若要支持測試自定義活動或新增延伸模組,再推出工作項目的變更

當您考慮許多專案時,請記住,Git 存放庫可攜性可讓您輕鬆地移轉存放庫 (包括專案之間的完整歷程記錄)。 專案之間無法移轉其他歷程記錄。 範例包括推送和提取要求歷程記錄。

當您將專案對應至業務單位時,您的公司會取得單一組織,並設定許多代表業務單位的專案。 公司的所有 Azure DevOps 資產都包含在此組織內,且位於指定區域 (例如西歐)。 請考慮下列指引,以將專案對應至業務單位:

一個專案,許多團隊 一個組織、許多專案和團隊 多個組織
一般指引 最適合具有高度對齊團隊的較小組織或大型組織。 不同的努力需要不同的程序。 可作為 TFS 舊版移轉的一部分,且適用於組織之間的硬式安全性界限。 與每個組織內的多個專案和團隊搭配使用。
縮放比例 支援數十萬個使用者和數百個團隊,但如果所有團隊都在處理相關工作,則最好在此規模上。 與一個專案相同,但許多專案可能比較容易。
處理 跨團隊對齊的程序;團隊彈性可自訂面板、儀表板等等。 每個專案的獨立程序。 例如,不同的工作專案類型、自訂欄位等等。 與許多專案相同。
共同作業 在不同團隊的工作和資產之間,最高預設可見度和重複使用。 可以有良好的可見度和重複使用,但不論刻意是否刻意,在專案之間隱藏資產會比較容易。 組織之間的可見度、共同作業和重複使用不佳。
匯總報告和組合管理 在團隊之間匯總及協調的最佳能力。 跨專案可進行良好的報告。 跨專案匯總和團隊協調更困難。 組織之間沒有匯總或協調。
安全性/隔離 可以在團隊層級鎖定資產,但預設為開放可見度和共同作業。 更能鎖定專案之間的功能。 根據預設,在專案內提供良好的可見度,並跨專案提供良好的隔離。 跨組織的硬式界限;絕佳的隔離度和最少的能力,可跨組織共用。
內容切換 最容易讓團隊共同作業,以及讓使用者在工作之間切換。 相對容易讓使用者共同作業,並在工作之間切換內容。 使用者必須跨不同組織工作更困難。
資訊多載 根據預設,使用「我的最愛」和類似機制來避免「資訊多載」的使用者可以看到所有資產。 降低資訊多載的風險;跨專案界限隱藏的大部分專案資產。 跨組織的資產是隔離的,可降低資訊多載的風險。
系統管理負荷 許多系統管理會委派給個別團隊。 最簡單的使用者授權和組織層級管理。 如果工作之間需要一致,可能需要更多工作。 專案層級的更多系統管理。 更多額外負荷,但當專案有不同的系統管理需求時,可能會很有用。 如同更多專案一樣,還有更多的系統管理額外負荷,可讓組織之間有更多彈性。

專案內的結構存放庫和版本控制

請考慮將特定策略性工作範圍限定為您先前建立的其中一個組織,以及需要存取的人員。 使用這項資訊來命名和 建立專案。 此專案具有您在中建立之組織底下定義的URL,且可在 https://dev.azure.com/{organization-name}/{project-name}.

在 [項目設定] 中 設定專案。

顯示 [項目設定] 按鈕的螢幕快照。

如需管理專案的詳細資訊,請參閱 在 Azure DevOps 中管理專案。 您可以藉由移轉數據,將專案移至不同的組織。 如需移轉專案的詳細資訊,請參閱 移轉概觀

管理版本控制

在已啟用 Azure Repos 服務的專案中,版本控制存放庫可以儲存和修訂程式代碼。 當您設定存放庫時,請考慮下列選項。

Git 與 Team Foundation 版本控制 (TFVC)

Azure Repos 提供下列版本控制系統,供小組選擇:

  • Git 和 TFVC。 專案可以有每種類型的存放庫。 根據預設,新專案會有空的 Git 存放庫。 Git 可在開發人員工作流程中啟用大量的彈性,並與開發人員生態系統中幾乎每個相關工具整合。 任何專案都可以使用 Git 存放庫。 可以新增至專案的 Git 存放庫數量沒有限制。

TFVC 是也可使用的集中式版本控制系統。 不同于 Git,專案只允許一個 TFVC 存放庫。 但是,如有需要,該存放庫、資料夾和分支內會用來組織多個產品和服務的程式碼。 如有需要,專案可以使用 TFVC 和 Git。

Monorepo 與每個服務一個存放庫

從Monorepo部署各種獨立服務,對於旨在建立早期勢頭的小型小組而言,可能很有效。 不過,隨著小組成長,此策略可能會因為數個因素而變得有問題:

  • 新成員所需的知識會隨著系統的整體複雜度而增加。
  • 單一存放庫中的程式代碼共用可能會導致服務之間的非預期結合。
  • 共用程式代碼中的變更可能會影響各種服務的行為,因此很難追蹤這些變更。

對於較大型的小組,管理Monorepo需要強大的工程專業領域和強大的工具。 或者,您可以選擇每個服務的個別存放庫,以及共用資源的個別存放庫。 雖然此方法牽涉到較初始設定,但隨著小組成長,其規模會更有效率。 它也可讓新成員更容易上線,而新成員只能專注於其特定服務存放庫。

如果您是從小型團隊開始,單一存放庫可能是一個很好的選擇。 隨著小組的擴充和複雜度增加,您可以轉換至不同的存放庫。

專案內的一個與多個存放庫

您是否需要在單一項目中設定多個存放庫,或為每個項目設定存放庫? 下列指導方針與這些存放庫的規劃和管理功能有關。

如果產品/服務正以協調發行排程運作,則包含多個存放庫的專案可正常運作。 如果開發人員經常使用多個存放庫,請將它們保留在單一專案中,以確保程式保持共用且一致。 在單一專案中管理存放庫存取更容易,因為訪問控制和選項,例如在專案層級設定案例強制執行和檔案大小上限。 即使存放庫位於單一專案中,您也可以個別管理存取控制和設定。

如果儲存在多個存放庫中的產品會以獨立排程或程式運作,您可以將它們分割成多個專案。 Git 存放庫可移植性可讓您輕鬆地在專案之間移動存放庫,但仍保留完整逼真認可歷程記錄。 其他歷程記錄,例如提取要求或建置歷程記錄,都不容易移轉。

根據下列因素和秘訣,決定一個與多個存放庫:

  • 程式代碼相依性和架構
  • 將每個獨立部署的產品或服務放在自己的存放庫中
  • 如果您預期跨這些存放庫進行協調的程式代碼變更,請勿將程式代碼基底分成許多存放庫,因為沒有任何工具可協助協調這些變更
  • 如果您的程式代碼基底已經是整合型,請將它保留在一個存放庫中。 如需整合型存放庫的詳細資訊,請參閱 Microsoft如何使用 DevOps 來開發新式軟體文章
  • 如果您有許多中斷連線的服務,則每個服務一個存放庫是一個很好的策略

提示

請考慮 管理您的許可權,讓組織中的每個人都無法 建立存放庫。 如果您有太多存放庫,很難追蹤誰擁有儲存在這些存放庫中的程序代碼或其他內容。

共用存放庫與分叉存放庫

建議您在信任的組織內使用共用存放庫。 開發人員會使用分支來維持彼此變更的隔離。 透過良好的分支和發行策略,單一存放庫可以調整以支援數千名以上的開發人員並行開發。 如需分支和發行策略的詳細資訊,請參閱 採用 Git 分支策略和發行流程:我們的分支策略

當您與不應該直接存取更新主要存放庫的廠商團隊合作時,分叉可能會很有用。 分叉也適用于許多開發人員不常參與的案例,例如在開放原始碼專案中。 當您使用分叉時,可能會想要維護個別的專案,以隔離分叉存放庫與主要存放庫。 可能會增加系統管理額外負荷,但會讓主要專案更簡潔。 如需詳細資訊,請參閱 分支一文

下圖顯示「貴公司」如何建構其組織、專案、工作專案、小組和存放庫的範例。

顯示公司組織結構的圖表。

管理暫存和共享資源

請考慮如何透過採用下列最佳做法,有效地管理暫存和共用資源:

  • 暫存環境: 暫存環境為短期環境,並用於測試、開發或預備等工作。 若要有效率地管理這些環境:
    • 個別存放庫和管線: 每個暫存環境及其相關聯的資源,例如 Azure Functions,都應該有自己的存放庫和管線。 此區隔可讓您同時部署和復原環境及其資源,讓您更輕鬆地視需要啟動和捨棄它們。
    • 範例: 特別為您的開發環境建立存放庫和管線,包括 Azure Functions、記憶體帳戶和其他服務等所有必要的資源。
  • 共用資源: 共用資源通常是長時間使用,且會跨多個環境使用。 這些資源通常會有較長的加速時間和更高的成本。 若要有效地管理共享資源:
    • 個別存放庫和管線:共享資源,例如 Azure SQL 資料庫,應該有自己的存放庫和管線。 此區隔可確保暫存環境可以使用這些共享資源,使其部署更快且更具成本效益。
    • 範例:為您的 Azure SQL 資料庫 建立存放庫和管線,以供多個暫存環境使用。
  • 共用基礎結構資源: 共用基礎結構資源,例如虛擬私人雲端(VPCs)和子網,也稱為登陸區域,也應該有自己的存放庫和管線。 這種方法可確保您的基礎結構一致管理,而且可以在不同的環境中重複使用。
    • 範例: 為您的VP和子網組態建立存放庫和管線,其他存放庫和管線可以參考此組態。

深入瞭解組織結構

選擇您的組織系統管理員帳戶類型

當您建立組織時,您用來登入的認證會定義組織所使用的識別提供者。 使用Microsoft帳戶或Microsoft Entra 實例建立您的組織。 使用這些認證,以系統管理員身分登入您的新組織。 https://dev.azure.com/{YourOrganization}

使用您的Microsoft帳戶

如果您不需要向具有 Microsoft Entra 識別碼的組織驗證使用者,請使用您的Microsoft帳戶。 所有用戶都必須使用Microsoft帳戶登入您的組織。 如果您沒有帳戶, 請建立Microsoft帳戶

輸入您的密碼並登入

如果您沒有Microsoft Entra 實例,請從 Azure 入口網站 免費建立一個實例,或使用您的Microsoft帳戶來建立組織。 然後,您可以將 組織連線到 entra ID Microsoft。

使用您的 Microsoft Entra 帳戶

如果您使用 Azure 或 Microsoft 365,您可能已經有Microsoft Entra 帳戶。 如果您任職的公司使用 Microsoft Entra ID 來管理用戶權力,您可能有Microsoft Entra 帳戶。

如果您沒有Microsoft Entra 帳戶, 請註冊 Microsoft Entra 識別碼 ,以自動將組織連線到您的 Microsoft Entra ID。 所有用戶都必須是該目錄中的成員,才能存取您的組織。 若要從其他組織新增使用者,請使用 Microsoft Entra B2B 共同作業

Azure DevOps 會透過您的 Microsoft Entra 識別符來驗證使用者,因此只有屬於該目錄中成員的使用者才能存取您的組織。 當您從該目錄移除使用者時,他們就無法再存取您的組織。 只有特定的 Microsoft Entra 系統管理員 管理目錄中的使用者,讓系統管理員控制誰存取您的組織。

如需管理使用者的詳細資訊,請參閱 管理使用者

將組織對應至業務單位

您公司中的每個業務單位都會在 Azure DevOps 中取得自己的組織,以及自己的Microsoft Entra 租使用者。 您可以 視需要根據小組或進行中的工作,在這些個別組織內設定專案

對於較大的公司,您可以使用不同的用戶帳戶建立多個組織(最有可能Microsoft Entra 帳戶)。 請考慮哪些群組和用戶共用策略和工作,並將其分組至特定組織。

例如,虛構的 Fabrikam 公司建立了下列三個組織:

  • Fabrikam-Marketing
  • Fabrikam-Engineering
  • Fabrikam-Sales

每個組織都有個別的 URL,例如:

  • https://dev.azure.com/Fabrikam-Marketing
  • https://dev.azure.com/Fabrikam-Engineering
  • https://dev.azure.com/Fabrikam-Sales

組織是同一家公司,但大多彼此隔離。 您不需要以這種方式分隔任何專案。 只有在對您的業務有意義時,才建立界限。

提示

您可以更輕鬆地使用專案分割現有的組織,而不是合併不同的組織。