Azure DevOps 的架构窥探
工作的缘故,接触 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 果然是大杀器
Azure DevOps 的架构窥探的更多相关文章
- 微软改名部又出动啦!微软宣布VSTS改名为Azure DevOps
本篇为翻译,原文地址:https://azure.microsoft.com/en-us/blog/introducing-azure-devops/ 作者:Jamie Cool,Azure DevO ...
- 在Azure DevOps Server中运行基于Spring Boot和Consul的微服务项目单元测试
1 概述 谈到微服务架构体系,绕不开服务发现这个功能.服务发现机制是简化微服务配置.实现容灾.水平扩缩容.提高运维效率的重要方式.在服务发现工具中,Consul在部署和使用方面与容器结合的天衣无缝,成 ...
- Azure Data Factory(三)集成 Azure Devops 实现CI/CD
一,引言 由于上一节文章内容过长,无法分享Azure Data Factory 的持续集成,持续发布.今天将着重介绍一下在使用 Azure DevOps Pipeline 发布,自动进行持续集成,并且 ...
- Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源
一,引言 上一篇我们结合学习 Azure Traffic Manger 的内容,做了一个负载均衡的基础设施架构.通过 Terraform 部署执行计划,将整个 Azure Traffic Manage ...
- Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署
一,引言 上一篇讲解到利用 Azure DevOps 将整个 Azure Web App,Azure Traffic Manager profile,Azure Storage Account,Azu ...
- Azure Devops/Tfs 编译的时候自动修改版本号
看到阿迪王那边出品了一个基于Azure Devops自增版本号 链接 http://edi.wang/post/2019/3/1/incremental-build-number-for-net-c ...
- 如何将Azure DevOps中的代码发布到Azure App Service中
标题:如何将Azure DevOps中的代码发布到Azure App Service中 作者:Lamond Lu 背景 最近做了几个项目一直在用Azure DevOps和Azure App Servi ...
- Azure DevOps to Azure AppServices
Azure DevOps is a complete solution for software development, from planning to building to deploymen ...
- Azure DevOps
Azure DevOps https://azure.microsoft.com/zh-cn/services/devops/ It looks great!
- 使用ML.NET + Azure DevOps + Azure Container Instances打造机器学习生产化
介绍 Azure DevOps,以前称为Visual Studio Team Services(VSTS),可帮助个人和组织更快地规划,协作和发布产品.其中一项值得注意的服务是Azure Pipeli ...
随机推荐
- 从源码分析 MGR 的新主选举算法
MGR 的新主选举算法,在节点版本一致的情况下,其实也挺简单的. 首先比较权重,权重越高,选为新主的优先级越高. 如果权重一致,则会进一步比较节点的 server_uuid.server_uuid 越 ...
- day09-2视图和用户权限
视图和用户权限 1.视图(view) 看一个需求 emp表的列信息很多,有些信息是个人重要信息(比如:sal.comm.mgr.hiredate),如果我们希望某个用户只能查询emp表的empno.e ...
- python今日分享(内置方法)
目录 一.习题详解 二.数据类型的内置方法理论 三.整型相关操作 四.浮点型相关操作 五.字符串相关操作 六.列表相关操作 今日详解 一.习题详解 1.计算1-100所有数据之和 all_num = ...
- SpringMVC访问静态资源的问题。
在项目中引用css和js文件一直出错,反复修改文件路径始终访问不到.究其原因原来是应该在web.xml 文件中添加访问静态资源的默认servlet. 如下. <servlet-mapping&g ...
- day46-JDBC和连接池02
JDBC和连接池02 3.ResultSet[结果集] 基本介绍 表示数据库结果集的数据表,通常通过执行查询数据库的语句生成 ResultSet对象保持一个光标指向其当前的数据行,最初,光标位于第一行 ...
- JVM内存结构模型
- [Mysql] 页结构
什么是页? 页是InnoDB中管理数据的最小单元 页与页之间是通过一个双向链表连接起来. 页的组成 FileHeader 上一页下一页的指针 FIL_PAGE_PREV FIL_PAGE_NEXT P ...
- laravel config()获取null
常规开发获取config值的是否发现获取值为null找了下文档,发现laravel是要把config注册到$app里面. 找到这个目录.加入这一行.就可以了
- HTML躬行记(2)——WebRTC基础实践
WebRTC (Web Real-Time Communications) 是一项实时通讯技术,在 2011 年由 Google 提出,经过 10 年的发展,W3C 于 2021 年正式发布 WebR ...
- 「MySQL高级篇」MySQL锁机制 && 事务
大家好,我是melo,一名大三后台练习生,最近赶在春招前整理整理发过的博客~! 引言 锁锁锁,到哪到离不开这桩琐事,并发琐事,redis琐事,如今是MySQL琐事,这其中琐事,还跟MySQL另一个重要 ...