Azure DevOps 的架构窥探

时间:2022-12-30 19:08:11

工作的缘故,接触 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框架
  • 什么都存储在数据库里面,时间长了运行非常的卡顿
  • 技术支持响应很慢,通常以周为单位,问题解决更慢,一等就是几个月

概念

Azure DevOps 的架构窥探

  • ADS 最大的概念是集合,类似一个大组织的名称,比如xx公司,或者研发1部;
  • 集合项目可以分项目,一般按照字面意思使用就好,对应到具体的项目。创建项目的时候可以选择不同的类型,比如 cmmi、scrum、basic、agile,略有不同,一般建议选择 scrum
  • 项目下面有很多的工作项,看板功能(board)比较常用,上面可以自己划分泳道 和 一些工作项的显示字段
    Azure DevOps 的架构窥探
  • 项目可以对应多个git仓库,但是有且仅有一个TFVC库,如果要用的话可以存一下文档
  • 一个集合下可以创建多个 agent,agent 可以安装在 windows、linux、mac上,使用命令行交互的方式进行安装
  • 流水线,可以在项目中创建多条,也可以去调用集合中的agent,使用他们进行构建、发布;流水线中可以包含多个task,ads 本身有大量常用的task,不够的可以去插件市场找,或者自己写一个,再不行使用 command 类型的插件自己写点shell也是可以的。
    Azure DevOps 的架构窥探

架构

Azure DevOps 的架构窥探

微软的产品当然大部分是基于微软的技术,部署的话都是在windows server上,目前没有看到linux 或者 容器化部署的方法。

  • 用户身份验证是基于windows的域账号体系,所以需要一个域控服务,到也不是说你的电脑要加入域,登录的时候弹一个原始的alret框而已。
  • 数据库是基于sqlserver的,oracle、mysql 你就不要想了,如果数据多了可以考虑集群的处理方法,或者可以考虑每个集合单独建库,或者一些业务数据直接缓存到公司的数据中心
  • web,都是部署在iis上的,这里解决高并发的手段主要是服务器做负载,iis开多进程模式
  • Elasticsearch 用于加快搜索,比如搜代码之类的都是基于这个,如果直接查数据库或者放内存,不是数据库爆掉就是web应用爆掉,Elasticsearch 果然是大杀器