基于TFS的.net技术路线的云平台DevOps实践

DevOps是近几年非常流行的系统研发管理模式,很多公司都或多或少在践行DevOps。那么,今天就说说特来电云平台在DevOps方面的实践吧。

说DevOps,不得不说DevOps的具体含义。那么,DevOps是什么呢?是开发+运维么?每个人都DevOps的理解都不尽相同,下面是一组对DevOps的定义,通过这组定义,我们基本可以看清DevOps是干啥的。在这众多的解释中,我认为有一种解释可以更贴切:DevOps是一种能力,具备此能力的团队可以高质量、快速的交付软件产品或服务。这个总结定义道出了DevOps的精神和根本内涵。

  • 一组过程、方法与系统的统称。用于促进开发、运维和质量保障部门之间的沟通、协作与整合。
  • DevOps是一种文化转变,或者说是一个鼓励更好地交流和协作(即团队合作)以便于更快地构建可靠性更高、质量更好的软件的运动。
  • DevOps 是一种工程模式,本质上是一种分工,通过对开发、运维、测试,配管等角色职责的分工,实现工程效率最大化,进而满足业务的需求。
  • DevOps主要解决两个方面的问题:
  • 按时、快速、高质量的交付软件产品和服务
  • 通过流程的自动化,节省成本

说到这里,我们不仅要问到:DevOps与敏捷开发什么关系?看上去,他们是如此的相似呢。那么再要说说敏捷。敏捷开发到底什么意思?这仅仅意味着快速吗?简单来说,敏捷开发意味着更多的迭代:更早更频繁地发布产品更新。先把东西做出来,而不是像过去那样过于忧虑产品是否完美。这就是那个“永远beta版”的概念,30天把原型快速搞出来,然后看看人们到底怎么想。敏捷的字面意思就是快速改变的能力。DevOps关注点已经不仅仅是快速改变的能力,他更关注的是如何移除浪费。其实,DevOps是一种敏捷开发的方法,但已超越了敏捷。DevOps是软件开发生命周期(SDLC)从瀑布式到敏捷再到精益的发展。DevOps超越了敏捷,它的关注点是从SDLC中移除浪费。通常情况下,发现浪费或者瓶颈的形式包括:不一致的环境,人工的构建和部署流程,差的质量和测试实践,IT部门之间缺少沟通和理解,频繁的中断和失败的协定以及那些需要珍贵的资源、花费重要的时间和金钱才能保持系统运行的全套问题。

在DevOps的能力闭环中,关注的是:

  • 更早、更频繁地发布产品更新,永远beta版,更快速的响应变化。
  • 依托自动化工具(测试、部署),把开发、测试、发布、部署的过程整合,实现即时交付。

如要具备此能力,就要求DevOps的涉众:开发、测试、运维,求同存异,为组织目标共同担当,紧密配合,提升产品交付能力。启用DevOps会对我们的带来各种变革,总体来说主要有三个方面。DevOps的核心是角色的分工,而不是组织架构变化,垂直化的组织架构不代表可以实现DevOps所需要的分工模式,横向的组织架构也不代表传统的分工模式。DevOps的目标是工程效率最大化,它本身也只是一种方法论,是为了实现工程效率最大化的目标而存在的。

特来电云平台在实践DevOps时,核心思路是通过无人值守的、全过程的自动化(自动构建、自动打包、自动部署、自动测试、自动发布),实现软件研发、部署的流水线式作业。

当开发人员CheckIn代码后,会触发相关应用的自动构建,构建的过程会编译源代码并执行单元测试。单元测试是控制产品质量的第一道大闸,我们要求所有的单元测试必须100%通过,并且所有应用程序要从下面五个方面编写单元测试脚本:内部核心类的公共方法、服务方法(HSF、SG)、符合场景测试、性能测试、破坏性测试。当单元测试执行通过后,会对产出物进行自动打包。因为特来电云平台采用了微软.net技术路线,整个持续集成的过程,我们全部是基于微软的TFS搭建。当然,TFS中没有自动打包的特性,此特性是基于自主开发的补丁管理平台实现的。通过补丁平台不仅仅能制作补丁,还能够为服务器安装补丁。下面是一个公共技术部持续集成的面板。

持续集成结束产出的补丁包,会依次、自动部署到普通测试环境、准生产测试环境、压测环境中进行各类自动化测试。普通测试环境,主要进行接口的自动化测试;准生产测试环境,主要进行接口自动化测试和UI的自动化测试;压力测试环境主要进行性能测试和破坏性测试。当三类测试环境的自动化全部通过,管理员审批通过后, 补丁包首先会在上海数据中心灰度发布上线,24H后在北京数据中心发布上线。持续交付也是基于微软TFS中的Release搭建,但是集成了很多特来电自主研发的系统。三类测试环境和生成环境都部署了特来电自主研发的分布式运维管理平台、补丁安装工具。通过分布式运维管理平台,可以调动500+台服务按照一定的规则更新补丁,此过程也是无人值守的。另外,三类测试环境分别部署了特来电服务治理平台,通过此平台实现接口测试、UI测试、压力测试,并自动出具测试结果和测试报告。限于篇幅,分布式运维管理平台和服务治理平台,后续给大家详细介绍。

下面是基于TFS搭建的持续交付的运行效果图:

在搭建CI、CD的过程中,有非常多的坑需要踩,有技术方面的,也有管理方面的。晒一下重要的建议,希望可以帮助到大家。

1.要有清晰的产品分层结构。

2.清晰、明确的程序集引用关系:nuget、公共目录

3.较全面的自动化测试代码

4.全面的接口测试、UI自动化测试,否则持续集成就变成补丁发布工具

魏亮 2017-6-29

时间: 2024-11-08 11:01:11

基于TFS的.net技术路线的云平台DevOps实践的相关文章

新手的云计算学习路线,云平台入门必备(干货整理)

云计算作为信息技术领域的一种创新应用模式,自其诞生以来一直备受关注.由于其具备低成本.弹性调度.便捷易用.高可靠性.按需服务等特点,近年来被看作是新一代信息技术变革和商业模式变革的核心. 近几年云计算的深入发展和加速落地,目前云平台已经成为更多行业用户的基础环境和业务承载平台,越来越多的行业客户也认识到云计算的价值.而云平台最大的价值在于改变了传统的资源交付模式,实现了IT服务从资源到服务的转型:其中云管平台更起到了核心作用.一个好的云管平台是贴合用户实际需求的,它在提升IT资源利用率的基础上,

基于SAAS模式的客服云平台落地实践

1.项目背景 业界的客服系统经过这些年的发展,已经成为客户服务.辅助销售.线索挖掘等不可缺少的工具:客服平台除了具备实时的聊天功能,还发展出结合微信.QQ.电话等第三方工具,提供文字.图片.文件.语音等多种媒体信息,方便客服人员联系在线访客,“变流量为销量,抓住每一个潜在的客户”.此外作为一款实时的客服工具,不同的厂家都针对性的开发出各自特点的功能,来更好的为客户提供服务,未来客服系统的发展方向应该是更好的结合客户渠道入口,结合客户管理系统,结合在线销售系统,为企业开辟一条发展之路,营销之路.

DaoCloud获光速安振数百万美元投资,将推出容器技术云平台

DaoCloud获光速安振数百万美元投资,将推出容器技术云平台 新浪网 以Docker为代表的容器技术是2014年最受关注的云计算开源项目.这项技术为开发云平台原生应用提供了便利的手段,在开发测试领域和云计算平台运维 ... 2 days ago 新闻 SDN将帮助Docker克服网络瓶颈 网界 Docker最终希望在应用层部署跨主机网络且同时能够适用于所有的基础设施.在这方面,企业能够在基于容器的架构中保留应用的可移植性,尤其是当应用 ... 操作系统虚拟化助力完善企业生态系统 - 比特网 D

安犬——漏洞扫描云平台操作手册

安犬漏洞扫描云平台是一个基于Saas服务模式的漏洞扫描云平台,扫描引擎包括Qualys.Nessus.Acunetix世界三大漏洞扫描引擎.用户无需安装任何硬件设备,无需下载任何软件,只需在云平台提交扫描IP或者扫描网址即可扫描系统漏洞. 产品优势: 1.基于云端:扫描引擎基于云端平台,无需部署硬件设备,无需安装软件设备,无需在服务器做任何部署,只需要添加域名或者IP即可扫描,基于Saas分布式扫描模式,根据扫描网站服务器承受压力自动负载均衡,扫描速度快,最快可30分钟显示报告. 2.基于移动平

中小团队基于Docker的devops实践

笔者所在的技术团队负责了数十个项目的开发和维护工作,每个项目都至少有dev.qa.hidden.product四个环境,数百台机器,在各个系统之间疲于奔命,解决各种琐碎的问题,如何从这些琐碎的事情中解放出来?devops成了我们不二的选择. 文章是基于目前的环境和团队规模做的devops实践总结,方案简单易懂,容易落地且效果显著. 实现方法 先来看下流程图: 工程师本地开发,开发完成后提交代码到代码仓库,[自动]触发jenkins进行持续集成与部署,部署完成会收到结果邮件.项目运行过程中可通过日

基于Kubernetes的技术中台让云原生C位出道

一. 认识云原生与Kubernetes 随着云原生技术的飞速发展,新概念层出不穷,例如DevOps.微服务.容器.弹性云等,直有"乱花渐欲迷人眼"之势.云计算从业者们反复谈及"云原生"这个概念,但对其定义与理解却各有不同. 云原生(Cloud Native)的概念,最早由Pivotal的MattStine根据其多年的架构和咨询经验于2013年首次提出.2015年7月,隶属于 Linux 基金会的云原生计算基金会CNCF(Cloud Native Computing

基于AppCan移动云平台搭建“智慧移动门户”

基于AppCan移动云平台,我们做了很多企业级的移动互联网项目,包括政府层面的双创落地实践,本次将结合实践,分享我们最新的项目经验和技术点.今天要分享的是,我们在智慧城市的项目中很重要的一环,区域智慧移动门户的架构设计和移动前端开发技术. 本次分享共三个重点: 1.AppCan移动云平台架构 2.智慧门户的规划 3.智慧门户的建设策略(技术落地) 智慧门户APP功能框架 智慧门户APP技术框架 1.AppCan移动云平台架构 AppCan在2011年底正式推出,用HTML5+CSS3+JavaS

【JAVA】基于MVC架构Java技术荟萃案例演练

基于JAVA-MVC技术的顾客管理项目案例总结 作者 白宁超 2016年6月9日22:47:08 阅读前瞻:本文源于对javaweb相关技术和资料汇总,涉及大量javaweb基础技术诸如:Servlet运行原理.Get/Post请求的区别.jsp的基本原理和运行框架.jsp的9大隐含对象的使用.MVC开发模式的使用.构建封装自己dao代码库.以及基于MVC的增删改查操作等:小结最后还有面向接口编程的多数据源配置与存储,以及工厂模式的使用.除此之外,后续文章会对cookie.session.Jav

【转载】基于Docker的CaaS容器云平台架构设计及市场分析

[转自]http://www.cnblogs.com/darkprince/p/5115739.html 基于Docker的CaaS容器云平台架构设计及市场分析 ---转载请注明出处,多谢!--- 1 项目背景---概述: “在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交付持续化,业务服务化. 容器将成为新一代应用的标准交付件,容器云将帮助企业用户构建研发流程和云平台基础设施.缩短应用向云端交付的周期,降低运营门槛.加速企业向互联网技术和业务的双转型. 容器云将