写点什么

DevOps 的目标特点和部署特性

  • 2013-10-19
  • 本文字数:2131 字

    阅读完需:约 7 分钟

实现 Devops 的目标意味着开发和运维行为和方法的一些基本变化。资深架构师 Dan阐述了实现 DevOps 需要高频率的交付和全局视角,同时分析了一个有效的交付系统应该具备的特质。

关于高频率的问题,Dan 指出,为了实现 DevOps 目标,最明显的变化之一是我们假设把新的软件功能交到用户手中才能让软件更有价值。这个假设意味着越早发布新的软件功能越好,因为这意味着新的软件功能所带来的价值实现的更快。但是绝大多数的开发团队,以前都以用很长的时间开发很大的软件为导向。

这种短周期、高频率的开发假设才正是软件开发定义转变的根本所在。DevOps 摒弃了原来那种一年当中将开发进程暂停很多次而去做很大的软件整合和组装的想法,取而代之的是一个开发系统应该能持续运行,并且擅长连续不断地开发大量小的增量。关键点是替代。传统的以大的开发为导向的系统通常都很笨拙,所以很难高速运转来支持 DevOps。“用旧方法做,就是尽量快点”的企图常常会失败,因为创造旧方法的假设从来不是为了支持高频率的活动。这不是好与不好,这只是一个需要解决的工程问题。

鉴于这种新的交付过程变成了从软件投资中获取价值的固有的一部分,这种过程理所当然也就成为了整个系统新的扩展。它成为了评价研发投资最基本的方式。于是,这也形成了管理交付进程的效率和效果对整个系统来说有着直接且可计量的商业价值的假设。这个假设所暗含的意思是忽略维持交付能力所产生成本是不可行的。

而 DevOps 研发另外一个特点是它着眼于完整的系统而不是简单的能实现软件功能的代码变化。Dan 指出:

DevOps 严谨地认为应用程序代码依靠服务器、网络和数据库等基础设施来实现它的价值。因此,DevOps 部署方法同等地对待系统组成部分的所有变化,以同样的方式追踪记录这些变化。一些基础设施的变化,比如一个谨慎的网络交换机升级或者存储设备的增加,会被视为性能的增强(系统的新功能),即便这些变化可能会不太容易察觉。同样的,网络服务器的或者 SAN 固件补丁可能会被认为是修复补丁或者缺陷。不论一个开发团队如何将事物分类,关键是他们能够用同样的严谨态度去对待其他部分,来保证整个系统的持续稳定。

在 DevOps 环境下,将全局系统的视角运用到一个高层次的模型中,Dan 认为将会产生下面四种将被交付的核心变化:

  • 应用——应用是系统中编写代码的真正特性。它是驱动整个核心业务进程的具有高度可见性的功能。它的这种可见性使它获得了很多的注意,但是这种关注几乎没有给支持它的环境带来任何主动式的价值考虑。
  • 操作系统服务——操作系统服务适用于所有的机器(虚拟的或是真实的)、操作系统服务、程序库和能让应用运行的中间软件。所有环境下配置的协调性,从测试一直到生产,都是应用稳定性和质量的关键驱动因素。
  • 网络服务——网络服务将所有的网络设备和配置集中在应用的周围。这些配置显然影响运行和可用性,但是也能影响应用行为和体系结构。例如,应用和负载均衡器必须就在其他事物中就 session 处理达成一致。
  • 数据库——应用中的数据库包含应用使用和产生的关键数据。在应用的整个生命周期中,数据库和应用必须在数据规划结构方面完美地保持同步。

Dan 认为,DevOps 部署需要一种很严格缜密的方法将各种变化传递到这种部署所支持的软件系统。系统需要承受的异常、变化或者是特殊的事件越多,系统开发尤其是维护就会越昂贵。控制交付过程的复杂程度就要理解并控制将被交付的对象以及它们是怎样被交付的。这要求开发团队必须商定一套构成每个交付单元的已定义的程序包和一个能和谐地将程序部署到所需要的环境中的系统。

以“定义好的程序包”为例,Dan 指出:

一个有效的交付系统要求被交付的项目符合一定的标准。现实世界中的集装箱就是一个很好的例子。这种标准的集装箱能够被标准的设备通过极其复杂的物流网运输。这个物流网络包括很多不同的交通方式,如火车、货船和货车。在起重机和追踪系统的帮助下,我们能将任何东西运送到任何地方,只要它能够被装在一个集装箱中。将这些集装行标准化是世界商品运输和贸易史上的一次革命。

好消息是我们没必要制定一个国际化的标准来将变化交付到一个软件系统中。许多开发团队已经通过一些活动拓展实现了这个目标。许多开发团队正在通过持续集成或者其他的计划以稳定的速度开发软件内部版本。这些内部版本拥有或者应该拥有一些独特的身份标识,能让使用它们的人,比如测试者,预期软件的性能和特点等。

这种方法能给开发团队提供一条理解其他三大组件中变化组群的基准。如果这四大构成中的每一种都有一种标准方式去识别变化,那么通过独有的变化指示器去追踪这四大构成的组合就会变得相对直接简便。对应用的内部版本号、配置服务器以及数据库的模式版本等的组合就能够被记录并且被部署到任何测试或者使用环境中。

交付系统不像集装箱,Dan 指出,可部署数据包系统不一定和水力学和柴油燃料有关。相反,它涉及一组工具和程序,它们能让开发团队以同样的方式操控他们的开发环境、测试环境以及生产环境并且任何时候都能将数据包部署到任何一个环境中。这些工具和程序涉及环境中的各种函数。这些函数包含不同领域的专业知识,并且根据组件中出现的问题以不同的方式运用。考虑到各种函数复杂性,根据它们的作用建立一个框架来将它们形象化并分成不同的种类将会很有帮助。

2013-10-19 07:072955
用户头像

发布了 501 篇内容, 共 260.5 次阅读, 收获喜欢 61 次。

关注

评论

发布
暂无评论
发现更多内容

教你学c++算法题中最头疼的动态规划

KEY.L

7月月更

室外LED屏幕防水吗?

Dylan

LED显示屏 室外显示屏

关于对JavaScript变量提升的理解

是乃德也是Ned

JavaScript 前端 7月月更

小程序直播 + 电商,想做新零售电商就用它吧!

CRMEB

自主工业软件的创新与发展

Geek_2d6073

易周金融 | Q1保险行业活跃人数8688.67万人 19家支付机构牌照被注销

易观分析

金融 银行

Qt如何实现打包,实现EXE分享

小肉球

qt 7月月更

国内酒店交易DDD应用与实践——代码篇

Qunar技术沙龙

架构

基于STM32+华为云IOT设计的酒驾监控系统

DS小龙哥

7月月更

实战:fabric 用户证书吊销操作流程

BSN研习社

fabric

【Docker 那些事儿】容器为什么傲娇?全靠镜像撑腰

Albert Edison

7月月更

2022年中国移动阅读市场年度综合分析

易观分析

移动阅读

产品好不好,谁说了算?Sonar提出分析的性能指标,帮助您轻松判断产品性能及表现

龙智—DevSecOps解决方案

Node の MongoDB安装

空城机

mongodb Node 7月月更

SpringSecurity会话管理

急需上岸的小谢

7月月更

结合案例:Flink框架中的最底层API(ProcessFunction)用法

百思不得小赵

大数据 flink 7月月更

抓到Dubbo异步调用的小BUG,再送你一个贡献开源代码的机会

捉虫大师

开源 dubbo 问题排查 7月月更

【LeetCode】粉刷房子Java题解

Albert

LeetCode 7月月更

程序员转方向

沃德

程序员 7月月更

回顾V神 Rollups 神作,详解以太坊为何需要二层扩展方案

TinTinLand

区块链 科技

对话龙智高级咨询顾问、Atlassian认证专家叶燕秀:Atlassian产品进入后Server时代,中国用户应当何去何从?

龙智—DevSecOps解决方案

Server Atlassian Jira DC版

CSS 文本阴影 text-shadow 悬停效果

南城FE

前端 动画 HTML5, CSS3 7月月更 hover

一个数据人对领域模型理解与深入

松子(李博源)

大数据 领域模型 模型设计

Helix Swarm中文包发布,Perforce进一步提升中国用户体验

龙智—DevSecOps解决方案

perforce Helix Core Helix Swarm

都在说DevOps,你真正了解它吗?

龙智—DevSecOps解决方案

DevOps 运维 开发

【一库】vueuse:我不许身为vuer,你的工具集只有lodash!

摸鱼的春哥

Vue 前端 Vue3 7月月更

程序员的焦虑

沃德

程序员 7月月更

洞见科技解决方案总监薛婧:联邦学习助力数据要素安全流通

洞见科技

数据安全 隐私计算 数据隐私计算

实时云交互如何助力教育行业发展

3DCAT实时渲染

实时云渲染 云交互

分布式BASE理论

源字节1号

软件开发 后端开发

浅识k8s中的准入控制器

火线安全

云安全 云安全技术 云安全攻防 云安全研究

DevOps的目标特点和部署特性_DevOps & 平台工程_崔康_InfoQ精选文章