基于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
基于TFS的.net技术路线的云平台DevOps实践的更多相关文章
- 云平台DevOps实践
基于TFS的.net技术路线的云平台DevOps实践 DevOps是近几年非常流行的系统研发管理模式,很多公司都或多或少在践行DevOps.那么,今天就说说特来电云平台在DevOps方面的实践吧. ...
- 026.[转] 基于Docker及Kubernetes技术构建容器云平台 (PaaS)
[编者的话] 目前很多的容器云平台通过Docker及Kubernetes等技术提供应用运行平台,从而实现运维自动化,快速部署应用.弹性伸缩和动态调整应用环境资源,提高研发运营效率. 本文简要介绍了与容 ...
- 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程 ...
- Docker容器技术的PaaS云平台架构设计***
基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程.平台提供基础设施.中间件.数据服务.云服务器等资源,开发人员 ...
- 基于PaaS和SaaS研发的商业云平台实战 转 (今后所有的IT行业会持续集成,往虚拟化方向更快更深的发展,商业化才是这些技术的最终目的)
背景介绍 SaaS.PaaS.IaaS等云服务模式已经被大家普遍认可,在研发过程中借力一些PaaS和SaaS平台,能够提升产品的研发速度和功能稳定程度.本文将通过真实的商业平台案例-MaxWon研发实 ...
- 容器云平台No.1~基于Docker及Kubernetes构建的容器云平台
开篇 最近整理笔记,不知不觉发现关于kubernetes相关的笔记已经达99篇了,索性一起总结了.算是对这两年做容器云平台的一个总结,本文是开篇,先介绍下所有用到的组件.首先来看下架构图(实在画的太丑 ...
- Kubernetes容器云平台建设实践
[51CTO.com原创稿件]Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署.大规模可伸缩.应用容器化管理.伴随着云原生技术的迅速崛起,如今Kubernetes 事实上已经 ...
- 阿里巴巴基于应用和变更的交付模式|阿里巴巴DevOps实践指南
编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...
- 海西 · 云交付 DevOps实践落地方案
一.背景概述 (一)产品背景 1.互联网+的需要 在信息越来越繁杂的互联网时代,公司所运行的项目越来越多,项目相关服务繁多,服务之间存在复杂的依赖关系,运维与管理任务越来越繁重,手工交付需要花 ...
随机推荐
- Cygwin Unable to get setup from *
Cygwin Unable to get setup from * 错误 解决方案 是因为用自定义镜像站点,比如 http://mirrors.xdlinux.info/cygwin/x86_64/ ...
- React-Router 4 的新玩意儿
上一个项目用的还是 2.6.1,转眼的功夫 4.0 都发布了,API 变化实在有点大,2.X那套东西不顶用了,老老实实重新看一遍文档,其中有几点需要注意的,拿出来说一说. 本文只讨论针对浏览器的应用, ...
- SQL Server on Red Hat Enterprise Linux——RHEL上的SQL Server(全截图)
本文从零开始一步一步介绍如何在Red Hat Enterprise Linux上搭建SQL Server 2017,包括安装系统.安装SQL等相关步骤和方法(仅供测试学习之用,基础篇). 一. 创 ...
- 设计模式--代理模式(C++版)
一:代理模式简介 专业版描述:为其他对象提供一种代理以控制对这个对象的访问. 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 戏剧性描述: ...
- nmon指标
表字段分析 关键指标类型 关键指标名称 关键指标含义 SYS_SUMM CPU% cpu占有率变化情况: IO/sec IO的变化情况: AAA AIX AIX版本号: cpus CPU数量: har ...
- OBS实现直播解决方案【html实现直播】
项目的需要,要整一个视频直播,但又不想在其他平台那种直播室盗链展示,那我就直接用播放器来实现rtmp流媒体服务器推流吧!没废话,走起 1.你要有一个媒体服务器,暂时用[盘古云],这个还好,算是不错的平 ...
- 使用 jQuery.Pin 垂直滚动时固定导航
ZKEACMS的导航默认是不能固定的,随着页面的滚动而滚动,为了有更好的用户体验,当页面往下滚动时,可以将导航固定在顶端,这样方便用户点击. jQuery Pin 借助jQuery的一个插件 jQue ...
- 关于php中id设置自增后不连续的问题
alter table tablename drop column id;alter table tablename add id mediumint(8) not null primary key ...
- countDownLatch和cyclicBarrier
< Effecit In Java >说过,从java 1.5发现版本开始, 就不建议使用wait和notify,它们使用比较困难,可以使用更高级并发工具来替代. 图一所说的同步器是指那些 ...
- (数字IC)低功耗设计入门(六)——门级电路低功耗设计优化
三.门级电路低功耗设计优化 (1)门级电路的功耗优化综述 门级电路的功耗优化(Gate Level Power Optimization,简称GLPO)是从已经映射的门级网表开始,对设计进行功耗的优化 ...