#DevOps的前世今生# 3. DevOps 的目标和核心

前言

#DevOps的前世今生# 2. Dev和Ops矛盾缘何而来 ?一文中,通过Dev和Ops的历史发展总结出了Dev和Ops矛盾的历史渊源,以及 Dev 和 Ops 的核心矛盾:

Dev 和 Ops 的矛盾主要是面向适应性的敏捷软件交付和面向经验性的传统运维之间的矛盾。

但这个矛盾最先 John Allspaw Paul Hammond在 “10+ Deploys Per Day: Dev and Ops Cooperation at Flickr” 提出,并以“Cooperation”作为整个演讲的核心,讲述了他们解决这个矛盾的实践经验。这个演讲中:

重新定义Ops的工作目标

在一个组织中,如果相关利益者的利益不一致,在既定流程的进行中一定会碰到诸多阻力。而在这一点上,首先做得就是把 Dev 和 Ops 的利益一致化,从而减少Ops对软件交付的阻力。在演讲中,John Allspaw 和 Paul Hammond 首先挑战的是对 Dev 和 Ops 的传统观点。

传统的观点认为Dev和Ops的工作是不同的:

Dev的工作是增添新的功能

Ops的工作是保证站点的稳定和高性能

他们认为,保证站点的稳定和高性能不是 Ops 的工作目标。

Ops的工作目标应该是激活业务(enable the business ),而这一点和Dev是一致的。

理想往往是美好的,现实往往是残酷的。激活业务会带来更多的变更,而更多的变更会引起故障!

面对这样的问题,就需要做出一个选择:为了保障稳定性减少变更,还是及时按需变更?

阿拉伯有一个谚语:“你若不想做,会找到一个借口。你若想做,会找到一个方法。”

Flicker 并没有屈服于压力,他们选择让问题向目标妥协,而不是目标向问题妥协。他们的手段是:

构建相互合作的工具和文化

降低变更风险的关键就是在于提高可靠性,这不仅仅是Dev在软件开发中,也需要Ops把可靠性通过非功能性需求(性能要求,扩展性,安全性等)注入到软件开发过程中。通过系统交付过程中的质量內建而不是事后检验来提升交付质量。

而 Dev 和 Ops 的具体矛盾点表现在以下两方面:

在价值流下游的 Ops 评审认为价值链上游的 Dev 软件非功能质量不满足要求,因此阻止变更。

在价值流上游的 Dev 无法获得价值链下游的 Ops 的真实运行环境,因此无法提升交付质量。

于是,逐渐陷入了“无法提升质量”和“ 非功能质量不满足要求 ”的死循环中。

由于在 Dev 环节关心的是功能性需求,往往忽略了非功能性需求,而 Ops 更关注的是非功能性需求。所以通过质量內建,把运维加入开发反馈环。在开发环节中增加非功能性的需求的实现和验收,让 Ops 担任最终的 QA 的角色。从而提升了交付质量,也提升了反馈速度。

首先,他们通过基础设施自动化(Automated infrastructure )提升了基础设施准备的质量和效率。

其次,他们搭建了Dev和Ops 交付的桥梁:共享版本控制(Shared Version Control )并且通过功能开关(Feature flags )管理功能发布。

然后,通过一步构建和部署(One step build and deploy )以及频繁进行小变更(Small frequent changes)提升单向价值流速度并降低部署风险。

最后,采用共享运维指标(Shared metrics ),和即时消息工具集成(IRC and IM robots )提升沟通效率以做到及时反馈并进行改进。

但仅仅有这些是不够的,还需要构建出合作的文化。合作的文化的构建关键在 Dev 和 Ops 之间的尊敬,相互信任,以及面对失败的改进而非指责的态度

第一届 DevOpsDays 在继承了这些思想的方向上则走的更远。第一届 DevOpsDays 吸引了更多关注于这一领域的人群,它们甚至都不具备技术背景。

DevOps的目标——提升软件交付的质量內建以加速流程

在第一次 DevOpsDays 会议后,作为 DevOpsDays 活动的发起人和 DevOps 这个词的创始人,Patrick Debois 随后总结并写下了“Charting out devops ideas”一文,他把第一届 DevOpsDays 这也成为后续 DevOps 运动的理念基石。在这篇文章里,Patrick从第一届DevOps活动中有了两个重要的观察,分别是:

1. DevOps 是在业务、交付流程和运维之间反馈环中增加了一个反馈环。

2. 因为有了这样一个环节,我们可以提升质量以加速流程。

简而言之,DevOps 是把运维(Ops)加入到了价值流的反馈环中。并且通过提升软件交付的质量內建以加速价值链端到端的反馈效率。

而要实现这一目标,要通过一些手段。

DevOps的手段——技术升级和流程管理

于此同时,Patrick 发现, DevOpsDays 的所有话题都围绕着两条主线:技术(technologies)流程管理(process management),而这些话题又相互交织在一起形成了四个不同的反馈环,如下图所示。其中蓝色气泡代表技术,黄色气泡代表过程管理: 

DevOps 反馈环

开发-测试反馈环(黑色箭头反馈环):

技术方面:

由非功能特性(扩展性,可用性)驱动的软件架构:用NO-SQL数据库或队列系统(Queue System)增加系统的可扩展性,以及混合使用编程语言和memcache这样的缓存系统。

过程管理方面:

拉近软件开发和系统工程的交互:采用敏捷团队或者其它形式的多功能团队跨越不同的部门墙。

开发-运维反馈环(绿色箭头反馈环):

技术方面:

系统管理员采用软件开发技术:使用代码仓库、持续集成、测试工具、设计模式来自动化的处理系统的初始化操作。

部署的配置管理:采用配置管理以及自动化配置工具(Chef,Puppet)用于部署和生产环境的变更。

测试和监控相互辅助:在监控系统中复用自动化测试逻辑(比如:cucumber-nagios),在测试环境中使用监控手段验证测试场景。

运维团队开发新的系统管理工具:工具也是技术水平差距的重要体现,很多系统管理员开发新的工具用来处理大规模的部署,变更以及监控。

过程管理方面

拉近软件开发和系统工程的交互:敏捷项目或者其他形成多功能团队的方法替代不同的部门墙。

项目从运维中学习:架构在项目中不断获得反馈,从而知道哪些可以用,哪些不能用。这样可以得到更好的架构设计。

业务-运维反馈环(红色箭头反馈环):

技术方面:

基于云计算和敏捷基础设施的新系统架构:云计算和敏捷的基础设施可以获得更好和更先进的自动化部署手段和系统初始化手段。

过程管理方面:

业务部门应当同时关注功能和非功能需求:业务应当开始关注停机时间和数据丢失带来的影响。

运维团队参与过程上游而不是被动的角色:在运维中采用看板在项目阶段进行互动,甚至可以用在项目前的阶段(销售、服务水平管理)。

运维团队自组织以应对业务挑战:例如把敏捷引入运维(agile operations)或把精益引入运维(lean operations)

业务使用运维指标作为反馈:要了解用户喜欢什么,如何行动。为了做出更好的业务决策,性能降低或故障中断正在成为一个重要的反馈回路。

业务-用户反馈环(紫色箭头反馈环):

过程管理方面:

运维作为用户问题的第一个响应人:运维人员和销售人员一样,都可以作为处理用户的问题的一线,并反馈给业务部门。

通过以上四个反馈环我们发现两个关键点:

1. DevOps 不仅仅是IT部门的事情,他涉及到IT部门以外的部门,包括最终用户。在脱离像 Flicker 这样的互联网公司这个大背景下。企业级IT部门采用 DevOps 还会遇到更多外部挑战。

2. 新的技术,尤其敏捷软件开发观念的深入和大规模基础设施(虚拟化,云计算,SDN)的不断发展让 Ops 以 Dev 的方式工作成为可能。

总结

第一届DevOpsDays秉承着Velocity 09中 “Dev and Ops Cooperation”的理念汇集了世界上所有关注于解决 Dev和 Ops 矛盾的有志之士。然而,通过大家的交流,发现软件交付的问题并不仅仅是 Dev 和Ops合作那么简单,通过文章我们发现:

DevOps 本质是一场以提升质量內建为手段,以加速软件系统价值流反馈为目标的技术提升和管理变革。

但是,DevOps 运动后续的发展却并不顺利:

一方面,由于 DevOps 这个很短的单词中包含了太多的概念,又缺乏足够的限定,使得 DevOps 的概念很模糊。让不同的人对于 DevOps 的理解千差万别。

另一方面, 来自传统运维对 DevOps 的批评也让这种基于社区(集市)而非基于专业性组织(大教堂)产生了质疑。由于缺乏系统化的方法论,使得更多的企业在实践 DevOps 中处于观望或低水平的软件工具升级阶段。

然而,DevOps 的实践者们仍然在不断总结和完善。使得 DevOps 的文化价值体系渐渐成型,使得大家能够更好的理解和实践 DevOps。请期待下篇#DevOps的前世今生# 4. DevOps的文化和原则

感谢ThoughtWorks 高级咨询师 马博文,伍斌,黄博文给本文提出的宝贵意见。

参考链接:

http://cdn.oreillystatic.com/en/assets/1/event/29/10+%20Deploys%20Per%20Day_%20Dev%20and%20Ops%20Cooperation%20at%20Flickr%20Presentation.pdf

http://www.jedi.be/blog/2009/12/22/charting-out-devops-ideas/

http://www.jedi.be/blog/2010/02/12/what-is-this-devops-thing-anyway/

https://www.devopsdays.org/

https://theagileadmin.com/what-is-devops/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容