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

概念

  • 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 的架构窥探的更多相关文章

  1. 微软改名部又出动啦!微软宣布VSTS改名为Azure DevOps

    本篇为翻译,原文地址:https://azure.microsoft.com/en-us/blog/introducing-azure-devops/ 作者:Jamie Cool,Azure DevO ...

  2. 在Azure DevOps Server中运行基于Spring Boot和Consul的微服务项目单元测试

    1 概述 谈到微服务架构体系,绕不开服务发现这个功能.服务发现机制是简化微服务配置.实现容灾.水平扩缩容.提高运维效率的重要方式.在服务发现工具中,Consul在部署和使用方面与容器结合的天衣无缝,成 ...

  3. Azure Data Factory(三)集成 Azure Devops 实现CI/CD

    一,引言 由于上一节文章内容过长,无法分享Azure Data Factory 的持续集成,持续发布.今天将着重介绍一下在使用 Azure DevOps Pipeline 发布,自动进行持续集成,并且 ...

  4. Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源

    一,引言 上一篇我们结合学习 Azure Traffic Manger 的内容,做了一个负载均衡的基础设施架构.通过 Terraform 部署执行计划,将整个 Azure Traffic Manage ...

  5. Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署

    一,引言 上一篇讲解到利用 Azure DevOps 将整个 Azure Web App,Azure Traffic Manager profile,Azure Storage Account,Azu ...

  6. Azure Devops/Tfs 编译的时候自动修改版本号

    看到阿迪王那边出品了一个基于Azure Devops自增版本号  链接 http://edi.wang/post/2019/3/1/incremental-build-number-for-net-c ...

  7. 如何将Azure DevOps中的代码发布到Azure App Service中

    标题:如何将Azure DevOps中的代码发布到Azure App Service中 作者:Lamond Lu 背景 最近做了几个项目一直在用Azure DevOps和Azure App Servi ...

  8. Azure DevOps to Azure AppServices

    Azure DevOps is a complete solution for software development, from planning to building to deploymen ...

  9. Azure DevOps

    Azure DevOps https://azure.microsoft.com/zh-cn/services/devops/ It looks great!

  10. 使用ML.NET + Azure DevOps + Azure Container Instances打造机器学习生产化

    介绍 Azure DevOps,以前称为Visual Studio Team Services(VSTS),可帮助个人和组织更快地规划,协作和发布产品.其中一项值得注意的服务是Azure Pipeli ...

随机推荐

  1. for循环小九九乘法表

    for(int i=1;i<=9;i++) { for(int j=1;j<=i;j++) { System.out.print(i+"*"+j+"=&quo ...

  2. winscp报错Server sent passive reply with unroutable address. Using server address instead

    找了一堆没用. 最后终于 1.使用winSCP连接ftp时,编辑会话,单击高级. 2.进入高级设置之后,单击连接,查看连接模式,把被动模式的勾,勾掉. 3.单击确定,然后保存配置,重新连接FTP,OK

  3. Linux基础_6_文本编辑

    vi i #编辑 ESC+:wq #保存退出 ESC+ZZ #保存退出 ESC+:q! #不保存退出 shift+z+q #不保存退出 dd #删除所在行 ESC+u #撤销dd误操作 :/字符串 # ...

  4. 使用 Windows Core Audio APs 进行 Loopback Recording 并生成 WAV 文件

    参考文档 COM Coding Practices Audio File Format Specifications Core Audio APIs Loopback Recording #inclu ...

  5. MySQL索引报错

    今天在MySQL 5.7版本的数据库中导库InnoDB表字段长度时遇到了"ERROR 1071 (42000): Specified key was too long; max key le ...

  6. Mysql综合实验2-LAMP+MHA+MYcat分库

    实验目标: 1.搭建主从半同步+GTID复制 2.搭建MHA主服务器高可用 3.Mycat实现分库:wordpress库和shopxo库 4.客户通过域名可以访问到wordpress和shopxo 实 ...

  7. linux 2021

    常用安装 sudo apt install openssh-server # 安装ssh service ssh # 查看ssh服务的 基础 Debian 是Ubuntu的母板,有强大的包管理功能,使 ...

  8. 云原生之旅 - 11)基于 Kubernetes 动态伸缩 Jenkins Build Agents

    前言 上一篇文章 云原生之旅 - 10)手把手教你安装 Jenkins on Kubernetes 我们介绍了在 Kubernetes 上安装 Jenkins,本文介绍下如何设置k8s pod作为Je ...

  9. 【题解】CF1215C Swap Letters

    题面传送门 解决思路 首先容易得知,两个字符串中 \(b\)(或 \(a\)) 的个数为偶数时,一定有解.为奇数则一定无解. 其次考虑怎么交换.对照样例三: in: 8 babbaabb ababab ...

  10. 线性时间选择(含平均情况O(n)和最坏情况O(n)算法)

    前言 本篇文章我将介绍 期望为线性时间 的选择算法和 最坏情况为线性时间 的选择算法,即分别为 平均情况下时间复杂度为O(n) 和 最坏情况下时间复杂度为O(n) 的线性时间选择.以下包含了我自己的全 ...