工作的缘故,接触 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 这个产品功能很复杂,企业在选择后通常都需要有专门的售后支持,比如如何与现有业务流程配合起来使用,如何和现有的系统做集成。
优点:
不足:
- 收费较高,中小企业不会买单,关键大点的企业又在推国产化 或 自研
- 功能上僵化,操作很繁琐,就算用插件方式做扩展,也跳不出现有的UI框架
- 什么都存储在数据库里面,时间长了运行非常的卡顿
- 技术支持响应很慢,通常以周为单位,问题解决更慢,一等就是几个月
概念
- ADS 最大的概念是集合,类似一个大组织的名称,比如xx公司,或者研发1部;
- 集合项目可以分项目,一般按照字面意思使用就好,对应到具体的项目。创建项目的时候可以选择不同的类型,比如 cmmi、scrum、basic、agile,略有不同,一般建议选择 scrum
- 项目下面有很多的工作项,看板功能(board)比较常用,上面可以自己划分泳道 和 一些工作项的显示字段
- 项目可以对应多个git仓库,但是有且仅有一个TFVC库,如果要用的话可以存一下文档
- 一个集合下可以创建多个 agent,agent 可以安装在 windows、linux、mac上,使用命令行交互的方式进行安装
- 流水线,可以在项目中创建多条,也可以去调用集合中的agent,使用他们进行构建、发布;流水线中可以包含多个task,ads 本身有大量常用的task,不够的可以去插件市场找,或者自己写一个,再不行使用 command 类型的插件自己写点shell也是可以的。
架构
微软的产品当然大部分是基于微软的技术,部署的话都是在windows server上,目前没有看到linux 或者 容器化部署的方法。
- 用户身份验证是基于windows的域账号体系,所以需要一个域控服务,到也不是说你的电脑要加入域,登录的时候弹一个原始的alret框而已。
- 数据库是基于sqlserver的,oracle、mysql 你就不要想了,如果数据多了可以考虑集群的处理方法,或者可以考虑每个集合单独建库,或者一些业务数据直接缓存到公司的数据中心
- web,都是部署在iis上的,这里解决高并发的手段主要是服务器做负载,iis开多进程模式
- Elasticsearch 用于加快搜索,比如搜代码之类的都是基于这个,如果直接查数据库或者放内存,不是数据库爆掉就是web应用爆掉,Elasticsearch 果然是大杀器