Azure DevOps 的架構窺探

遠方V3發表於2022-12-30

工作的緣故,接觸 TFS (Team Foundation Server)挺多的,現在改名為 Azure DevOps,分為 可私有化部署版本 Azure DevOps Server,簡稱ADS,以及 SAAS 版本 Azure DevOps Services。未來因為微軟收購了 github,據說 TFS 的開發團隊已經合併到github,所以未來可能只存在github 企業版 和 github網站。

本文根據自己的理解,基於 Azure DevOps Services 版本,總結了一下 ADS 目前的架構。

概述

微軟的一個產品,提供版本控制、需求管理、報告、軟體庫管理、專案管理、測試、自動生成和釋出管理功能。它涵蓋了應用的整個生命週期,並啟用了 DevOps 功能。

ADS 這個產品功能很複雜,企業在選擇後通常都需要有專門的售後支援,比如如何與現有業務流程配合起來使用,如何和現有的系統做整合。

優點:

  • 功能完善且穩定,相當於一站式 ALM
  • 文件齊全,遇到問題不怕找不到解決方案
  • 擴充套件性不錯,有外掛市場,也可以自己開發外掛
  • 執行很穩定,微軟產品的一向優勢,就算是卡頓也不會那麼容易奔潰

不足:

  • 收費較高,中小企業不會買單,關鍵大點的企業又在推國產化 或 自研
  • 功能上僵化,操作很繁瑣,就算用外掛方式做擴充套件,也跳不出現有的UI框架
  • 什麼都儲存在資料庫裡面,時間長了執行非常的卡頓
  • 技術支援響應很慢,通常以周為單位,問題解決更慢,一等就是幾個月

概念

img

  • ADS 最大的概念是集合,類似一個大組織的名稱,比如xx公司,或者研發1部;
  • 集合專案可以分專案,一般按照字面意思使用就好,對應到具體的專案。建立專案的時候可以選擇不同的型別,比如 cmmi、scrum、basic、agile,略有不同,一般建議選擇 scrum
  • 專案下面有很多的工作項,看板功能(board)比較常用,上面可以自己劃分泳道 和 一些工作項的顯示欄位
    img
  • 專案可以對應多個git倉庫,但是有且僅有一個TFVC庫,如果要用的話可以存一下文件
  • 一個集合下可以建立多個 agent,agent 可以安裝在 windows、linux、mac上,使用命令列互動的方式進行安裝
  • 流水線,可以在專案中建立多條,也可以去呼叫集合中的agent,使用他們進行構建、釋出;流水線中可以包含多個task,ads 本身有大量常用的task,不夠的可以去外掛市場找,或者自己寫一個,再不行使用 command 型別的外掛自己寫點shell也是可以的。
    img

架構

img

微軟的產品當然大部分是基於微軟的技術,部署的話都是在windows server上,目前沒有看到linux 或者 容器化部署的方法。

  • 使用者身份驗證是基於windows的域賬號體系,所以需要一個域控服務,到也不是說你的電腦要加入域,登入的時候彈一個原始的alret框而已。
  • 資料庫是基於sqlserver的,oracle、mysql 你就不要想了,如果資料多了可以考慮叢集的處理方法,或者可以考慮每個集合單獨建庫,或者一些業務資料直接快取到公司的資料中心
  • web,都是部署在iis上的,這裡解決高併發的手段主要是伺服器做負載,iis開多程式模式
  • Elasticsearch 用於加快搜尋,比如搜程式碼之類的都是基於這個,如果直接查資料庫或者放記憶體,不是資料庫爆掉就是web應用爆掉,Elasticsearch 果然是大殺器

相關文章