阅读更多
DevOps有多火,当下已不用更多的描述,只看看每天的朋友圈就会有一个所以然。与此同时,根据Gartner最新出炉的2015 I&O Automation报告,DevOps同样正处其技术发展曲线的最高点。



然而不可否认的是,这同样也说明DevOps真正落地企业内部实践仍然有很长的路要走,其中就包括了企业日常IT系统的开发、测试和运维,从而显著地提升企业的IT服务能力。也正是因为如此,现在很多人可能对于DevOps的理念任然充满怀疑,然而不断出现的成功案例还是让大家对其充满期待。

为此,由Puppet Labs领导的年度DevOps发展报告也希望能够对此进行更全面地分析和调研,其2014年DevOps发展报告则再次用具体调查数据揭示了组织绩效、IT服务绩效与DevOps实践之间的关系。其中的核心观点包括如下:

拥有强IT服务绩效的企业通常会双倍超过其市场及盈利目标;
企业的IT服务绩效和DevOps推崇的普遍实践(如持续交付等)有非常明显的正相关。例如,调查发现强IT服务绩效的团队比较差IT服务绩效团队的部署频率要快30倍,变更失败率要低50%。
由上可见,DevOps实践对于提升企业IT服务能力是有明显的正面作用,并且从实践中也得到广泛验证,值得企业关注和学习。

一、DevOps从哪里来?

如果希望了解DevOps,就不可避免需要切分这个词中的两个角色:Dev和Ops(注:这里的Dev包括常说的开发和测试人员,Ops则指服务运维人员,更多时候特指生产环境的服务运维人员)。回顾历史,Dev和Ops这两个角色从计算机诞生之日就已经存在,而且在诞生之初它们本身就是一体的。在最早期,计算机的使用范围非常有限。其硬件生产、软件开发和日常运维很多时候都是来自同样人员或者团队。所以,Dev和Ops这两个角色也就自然融合在一块。

随着计算机使用用途的扩展,越来越多行业开始采购计算机来提升效率,其中个人电脑(PC)的出现则让计算机从传统的计算领域向外延伸到各行各业。于是,PC时代其就诞生了许多独立的计算机软硬件供应商。而步入这个阶段后,计算机软硬件研发就会和最终使用者自然分离。当企业普遍开始使用计算机及相关软件来提升日常运营效率时,通常会需要专职的IT系统运维管理人员来保证其正常运行,于是最早期的专职运维人员(也称系统管理员)应运而生。在这个阶段,系统的研发人员(Dev)和运维人员(Ops)其实是处在不同的机构中,他们之间的沟通和交互主要靠产品说明书、操作文档以及付费的Support完成。为保证企业内IT系统的稳定运行,以Ops为中心的运维管理体系(如ITIL)逐步形成。在这个时间段,企业运维管理体系以服务企业内部运营为主,并不直接面对企业最终用户。实际运维过程则以保证系统稳定为核心目标,对于系统自身的迭代速度要求并不高。一个最明显的例证就是这个时期软件及系统的交付周期一般都是以年为单位(甚至那个时候的Windows版本更新甚至以3年记)。同时,由于这个阶段的Dev和Ops完全分离在不同组织中,基本无法形成持续有效的沟通和交互,从而也无法相互了解。通常Ops团队对于软件的设计及实现思路缺乏最基本的了解,而Dev团队对于Ops在实际运维过程中的挑战和问题也知之甚少。

随着互联网和移动互联网的出现,人们终于找到了一种更好的软件及服务交付方式,即在线服务。在这种模式下,用户无需再承担软件及服务的运维工作,而是直接“开箱即用”。系统的开发和运维工作再次回到一个组织内部,即在线服务提供商。但是,由于遗留系统(很多在线服务提供商在早期并没有自研能力,而是采购外部技术来搭建自身服务系统)及传统运维思路的影响,很多在线服务供应商仍然是按照传统模式组建自身的运维团队。于是,很多组织内部的运维团队和研发团队虽然是在一个公司,也服务于同一个产品,但是他们在组织架构上仍然是独立向上汇报。甚至,这种组织架构在很多公司内部还作为一种均衡各方势力的法宝。基于这些原因,那些因Dev和Ops相互分离而造成的问题并未由于他们重新回到一个组织内而得到根本改观。同样存在Dev和Ops相互不了解,互不信任,上线流程异常缓慢等众多老问题。于是,人们就会思考一个问题:既然都在一个组织内,而且是服务于同一个产品,为啥不能让两者走向融合,变成一个以给最终用户交付最大价值为目标的团队呢?于是,DevOps思潮开始涌现,并从理论研究逐步成为目前非常主流的软件生产方式。在这其中也诞生了很多非常优秀的DevOps践行者,如Facebook、Amazon、Netflix等。

回顾整个发展过程,我们可以看到随着系统交付及使用方式不断变化,Dev和Ops两者也经历了由合到分,又重新走向融合的过程。从中可以看出,系统的生产方式其实和系统交付及使用方式息息相关。有什么样的交付及使用方式,就会诞生与之匹配的系统生产方式。而现在,以互联网和SaaS为代表的交付及使用方式已经成为主流趋势,与之相对应的软件生产方式也必然会向全新的DevOps方向发展。

二、DevOps包括什么?

尽管DevOps在现在这个阶段重新走向融合,但是这个阶段的融合已经和最早期Dev和Ops来自同一个团队有着本质的差别。无论从系统的复杂程度,面对的用户规模,还是采用软件工程思路都有天壤之别。具体来说,个人认为现在的DevOps应该包括如下三个层面的内容:

1.从组织文化角度上,DevOps应该成为组织文化上的一个内在要求。首先,企业关注的产出应该转向最终交付价值(即交付给最终用户的产品功能、用户体验)以及响应用户和市场变化的能力。其次,企业需要从组织架构上解决遗留下来的Dev和Ops隔离的状态,为他们走向融合提供组织制度上的保障。最后,DevOps文化强调跨部门协作和直接主动沟通,而不是流程导向的流水线模式。总结来说,需要在组织内部树立“you build it, you run it”的行为准则。
2.从方法论角度上,DevOps包括一系列最大化交付价值的最佳实践。例如,持续交付来提高交付的频率,保证Dev的每一个改进能够尽快交付给最终用户,并能够快速得到真实用户的反馈,以便及时调整产品方向。持续构建和自动化测试保证Dev能够尽快得到反馈,发现代码中潜在的问题并及时修复。自动化一切的原则尽可能避免人为失误并且保证整个流程的高效,可重复。
3.从工具角度上,DevOps指一套适应DevOps组织架构需求,能够帮助团队落实DevOps最佳实践的工具。这其中包括代码管理工具、持续构建工具、代码部署工具、系统监控与运维工具等。在工具选型中,用户即可以基于开源软件自己搭建,也可以考虑购买商业软件(如FIT2CLOUD)来快速落地。
总结而言,DevOps团队需要在组织文化层面能够得到保证和支持,团队成员能够接受并实行DevOps各种最佳实践,并配套相应工具帮助落实。只有这样才能比较完整的落实DevOps实践,并最终让团队和业务都从中收益,最大化交付给最终用户的价值,而不是流于形式和炒作概念。

三、DevOps的抓手在哪里?

如果一个组织希望推进DevOps实践的落地,从哪里入手可能是很多组织内一线经理最为困惑的地方。网络上关于DevOps的分享涉及的内容非常多,而每一点似乎实施起来都不是特别容易。那DevOps的抓手到底在哪里?来自Puppet Labs 2015 DevOps发展报告的结论则能够很好地回答这个问题。其报告结论中包括如下观点:

如果需要了解一个团队的DevOps状况,只需要问一个简单的问题,那就是“团队部署一次服务有多痛苦”。这个问题的答案会告诉你很多细节。

同样,DevOps最好的抓手也在于此。提高团队持续交付和部署的能力在绝大部分情况下都是落实DevOps实践最好突破口。在落实这个突破口时,团队需要关注如下几点:

1. 理清并打通团队从代码到服务的整个通道最为关键,例如,下图就是一个典型的从代码到服务的通道。需要提高团队持续交付和部署的能力就体现在是否能够打通这条通道,并让其尽可能高效地运转。



在打通这个通道过程中,团队遇到的常见问题有以下几点:

a. 团队缺少基本的可落实部署规范(包括Artifact打包规范和部署流程规范)。规范是提高团队协作效率的重要一环。同时,这里的规范是必须要能够落实到部署流程并能够自动化实施。如果团队在此没有历史成功经验,建议直接采用已经广泛使用的现有规范(如AWS的CodeDeploy规范)加快落实。

b. 团队缺少统一的制品库管理。现实环境中,团队构建出来的artifacts经常直接存在FTP、共享目录上,组织不规范而且也未集中管理。因此经常出现选择的版本不对,需要回滚时候没有老版本,不同环境版本选择错误等一系列问题。建议团队建立统一的制品库(例如开源的Nexsus,商业软件Artifactory等)并直接对接构建环境和部署系统。构建时候自动把构建结果打包上传到制品库中,部署时从统一制品库取部署包进行部署。

c. 团队缺少保证不同环境一致性的能力。如图所示,系统交付流程需要涉及到开发、测试、验收和生产环境(简称DTAP),如何保证不同环境上一致性并避免系统因环境不一致而导致事故是一个重要挑战。一般来说,使用统一的基础环境(如镜像)加统一的部署流程及工具是保障环境一致性的关键所在。

2. 关注团队部署效率并持续改进是深入提高团队交付和部署能力的法宝。在打通从代码到服务的通道后,团队整个交付能力会有一个质的提升。但是如果需要深入、持续地提升团队交付能力,还需要持续关注团队部署效率,找出影响团队进一步前行的潜在障碍,并有针对性改进。在这个方面,Puppet Labs 2015 DevOps报告提出了一个定量的分析模型非常有帮助。具体来说,这个定量分析模型由如下几个关键指标组成:
● 产出指标:

○ 部署频率(Deployment frequency):团队代码部署的频率(包括所有环境的部署次数),一般以每天的部署次数计算。

○ 代码上线延时(Deployment lead time):代码从提交到代码库到其上线运行的时间间隔。

● 稳定性指标:

○ 服务平均恢复时间(Mean time to recover):服务平均恢复时间。

○ 变更失败率(Change fail rate):变更失败率。
通过关注上面这些指标的变化趋势,团队可以定量衡量整个应用交付的效率和质量,并能够始终保证对于应用交付的关注。当然,为了更方便统计如上指标,需要记录团队所有的部署操作及结果,不过这应该是一个好的部署系统需要支持的基本功能之一。

四、写在最后

如本文开篇的Gartner技术发展曲线所示,目前DevOps实践已经进入高度关注期,但离全面铺开还有一定时间距离。不过这也恰恰是愿意革新的团队开始尝试的好时机。现如今,企业的IT服务能力已经成为核心竞争力之一,能够快速适应这个变化并积极提升企业IT服务能力的组织必将在激烈的市场竞争中占有优势。所以,企业需要行动起来,积极拥抱这一新型生产方式,让那些由此实践获得的高效IT研发运维效率的事情不再仅仅是“别人家的故事”。

关于作者:

徐桂林,当前在FIT2CLOUD负责公司的技术布道和生态合作。在此之前先后供职于意法半导体、Autodesk和阿里云。徐桂林热衷于云计算(尤其是公有云IaaS平台),有过多年云计算生产环境工作经历,是较早在国内分享云计算实践经验的作者之一。
  • 大小: 122.1 KB
  • 大小: 47.5 KB
来自: CSDN
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 【新锐资讯-专家点评】谈DevOps的前世今生,及企业落实的着力点

    顾老师认为DevOps就是一个通过实践,持续优化的过程,但在初期,如何推动这件事情是最复杂的,尤其是大中型企业,哪个部门适合推动。再者,Devops不仅仅是开发到运维的事情,包括CIO等角色都应该能从中享受到好处,...

  • 云计算的前世今生

    除此之外,由于云上数据库按时间及容量计费的轻量特点,也给予了一些优质企业级数据库以重要的展示和售卖渠道,降低了企业的评估和尝试成本:例如,原本只能以昂贵的一体机方式售卖的 MPP 数据库 SQL Server ...

  • 【干货合集】从菜鸟到老司机,20篇文章带你了解DevOps!

    原文链接:点击打开链接摘要: 流行技术大狂欢,5月29日即将召开的第二届研发效能嘉年华,带来了前沿技术理念及实践技术成果分享。本次峰会将有10位技术大咖进行干货分享,多角度,不同领域的带领大家了解高效研发...

  • 【云原生布道系列】第一篇:不谋全局不足以谋一域

    而云原生体系,是基于资源全面虚拟化、应用运行标准化基础上,演进成了一整套成体系解决方案,落地着力点便是容器+微服务+DevOps。 诚然,这三架马车是需要长于云上的(现阶段也有大量专家脱离云,基于其商业目的或...

  • 微服务是企业实施云计算的必由之路——普元专区回顾2016

    数字化时代,通过云计算加速数字化转型,已成为全球企业主管们的共识,而微服务架构、容器云服务、DevOps、数据管理是实现企业IT精益运营的重要手段。普元通过全面开放的企业界云计算平台The Platform,用户可从研发...

  • 亨嘉之会话数据行业未来 万字长文解码2021数据技术嘉年华

    庄乾锋 华为云数据库产品服务部 CTO 深耕创新与开放合作—— GaussDB企业级云原生架构演进与开放生态 随着数字化转型的不断深入,数据资产已成为企业构建核心竞争力的着力点。庄乾锋介绍了华为云GaussDB数据库基于...

  • SQL Server 2017正式发布,微软老牌数据库如何继往开来?

    如今正值 SQL Server 2017 发布之际,我们不妨一起来看看 SQL Server 的前世今生,探究微软数据平台发展之路。 微软 SQL Server 自身的历史具有传奇色彩,最初是由微软、Sybase、Ashton-Tate(开发 dBase 的公司)三...

  • 支持Linux和容器化的SQL Server 2017,微软数据库如何继往开来?

    如今正值 SQL Server 2017 发布之际,我们不妨一起来看看 SQL Server 的前世今生,探究微软数据平台发展之路。 微软 SQL Server 自身的历史具有传奇色彩,最初是由微软、Sybase、Ashton-Tate(开发 dBase 的公司)三...

  • go 生成基于 graphql 服务器库.zip

    格奇尔根 首页 > 文件 > gqlgen是什么?gqlgen是一个 Go 库,用于轻松构建 GraphQL 服务器。gqlgen 基于 Schema 优先方法— 您可以使用 GraphQL Schema 定义语言来定义您的 API 。gqlgen 优先考虑类型安全— 您永远不应该看到map[string]interface{}这里。gqlgen 启用 Codegen — 我们生成无聊的部分,以便您可以专注于快速构建您的应用程序。还不太确定如何使用gqlgen?将gqlgen与其他 Go graphql实现进行比较快速启动初始化一个新的 go 模块mkdir examplecd examplego mod init example添加github.com/99designs/gqlgen到项目的 tools.goprintf '//go:build tools\npackage tools\nimport (_ "github.com/99designs/gqlgen"\n _ "github.com/99designs/gqlgen

  • 基于JAVA+SpringBoot+Vue+MySQL的社区物资交易互助平台 源码+数据库+论文(高分毕业设计).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:maven 数据库工具:navicat

  • 法研杯2021类案检索赛道三等奖方案源码+项目说明+数据.zip

    法研杯2021类案检索赛道三等奖方案源码+项目说明+数据.zip是一个专为计算机相关专业(如计科、信息安全、数据科学与大数据技术等)学生设计的宝贵学习资源。该压缩包包含了完整的项目源码、详细的项目说明文档以及用于训练和测试的数据集,旨在帮助参赛者深入理解并掌握类案检索的相关技术和方法。该项目通过实际案例,展示了如何运用自然语言处理和机器学习技术对法律案件进行智能检索和匹配。项目内容涵盖了从数据预处理、特征提取到模型训练和评估的全过程,为学习和研究类案检索技术提供了全面的参考。本项目不仅适合作为课程设计、期末大作业或毕设项目的参考,也是企业员工提升技能、进行实践操作的优质学习资料。通过实际操作和学习该项目,用户可以加深对类案检索技术的理解,并在实践中不断提升自己的技能水平。请注意,由于该资源包含完整的项目源码和数据集,下载和使用时请确保遵守相关法律法规和道德规范,尊重知识产权和隐私权。同时,建议用户在使用前仔细阅读项目说明文档,了解项目的整体架构和使用方法,以便更好地利用该资源进行学习和研究。

  • 基于Cesium实现的对倾斜摄影模型的单体化分层方案源码.zip

    本资源提供了基于Cesium实现的倾斜摄影模型单体化分层方案的完整源码,旨在帮助开发者深入理解并实践三维地理空间数据的处理与展示。通过Cesium平台,用户能够将倾斜摄影获取的高精度三维模型进行单体化和分层处理,实现对模型中每个独立元素的精细管理和交互操作。该资源适合具备一定计算机编程基础的学习者,特别是对Cesium感兴趣的学生、研究人员及GIS行业从业者。通过下载并学习这些源码,用户可以掌握倾斜摄影模型在Cesium中的加载、单体化以及分层显示等关键技术,进而提升自己在三维地理信息系统开发领域的技能水平。

  • Go 的 PostgreSQL 驱动程序和工具包.zip

    Go 的 PostgreSQL 驱动程序和工具包 pgx - PostgreSQL 驱动程序和工具包pgx 是 PostgreSQL 的纯 Go 驱动程序和工具包。pgx 驱动程序是一个低级、高性能接口,它公开了 PostgreSQL 特定的功能,例如LISTEN/ NOTIFY和COPY。它还包括一个标准database/sql接口的适配器。工具包组件是一组相关的软件包,用于实现 PostgreSQL 功能,例如解析线路协议以及 PostgreSQL 与 Go 之间的类型映射。这些底层软件包可用于实现替代驱动程序、代理、负载均衡器、逻辑复制客户端等。示例用法package mainimport ( "context" "fmt" "os" "github.com/jackc/pgx/v5")func main() { // urlExample := "postgres://username:password@localhost:5432/database_name" conn, err := pgx.Connect(context.B

  • C#ASP.NET中小型超市管理系统源码数据库 SQL2012源码类型 WinForm

    ASP.NET中小型超市管理系统源码 超市管理系统是专门为中小型超市打造的管理系统,可以方便管理时更加准确清晰的查看商品信息, 仓库出售与进货的信息,还有每一个部门员工的信息,也更加直观的体现出每一阶段的商品销售情况; 从而提高项目管理水平,实现了工作的协同化、提高了工作效率 二、功能介绍 1.1 UI Requirements界面要求 (1)界面美观,给用户一种很舒心的感觉。 (2)界面所体现出的功能清晰明了,让用户一目了然。 (3)界面的背景颜色搭配符合超市管理系统界面的设计理念。 1.2 UI Requirements界面要求 (1) 使用ADO.NET与数据库交互制作 (2) 使用Visual Studio设计窗体布局 (3) 使用提供的用控件快速开发 1.3 Development Environment 开发环境 (1) 开发工具:Visua

  • 毕设&课程作业_基于C#的易知仓库管理系统.zip

    计算机系毕业设计

  • Go 编程教程的主列表、其撰写、其源代码以及其当前构建状态!.zip

    教程边缘TutorialEdge.net Go 教程 ‍‍欢迎来到 TutorialEdge Go 存储库!此 repo 的目标是能够跟踪所有 Go 教程及其各自的 github repo 位置和构建状态。这些将在 Go 最新版本发布时更新和运行。目录初学者教程中级教程高级教程DevOps项目数据格式并发教程挑战初学者教程这些教程主要针对那些希望提高对 Go 语言工作原理的基本理解的语言新手!教程标题 教程边缘 Github 构建状态 更新日期01 - Go 入门 阅读教程 TutorialEdge/getting-started-with-go 不适用02 - Go 基本类型教程 阅读教程 TutorialEdge/go-basic-types-tutorial 不适用03 - Go 复合类型教程 阅读教程 TutorialEdge/go-complex-types-tutorial 不适用04 - Go 函数教程 阅读教程 TutorialEdge/go-functions-tutorial 2019 年 3 月 27 日

  • 基于JAVA+SpringBoot+Vue+MySQL的敬老院管理系统 源码+数据库(高分毕业设计).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:maven 数据库工具:navicat

  • 基于LSB实现对水印图片,文字等信息的隐藏隐写和提取的DEMO源码(功能包括嵌入水印,提取水印等).zip

    本资源是一个基于LSB(最低有效位)算法实现的水印图片和文字信息隐藏与提取的DEMO源码。该源码展示了如何将水印图片或文字信息嵌入到宿主图像中,以及如何从宿主图像中提取出隐藏的信息。功能包括嵌入水印和提取水印等操作。通过使用LSB算法,该源码实现了对水印图片和文字信息的隐写和提取。LSB算法是一种常用的图像处理技术,通过修改图像的最低有效位来嵌入额外的信息。在嵌入过程中,源码将水印图片或文字信息转换为二进制数据,并将其嵌入到宿主图像的像素值中。在提取过程中,源码从宿主图像中读取嵌入的二进制数据,并将其转换回原始的水印图片或文字信息。本资源适用于学习和研究图像隐写术的相关领域。通过阅读和运行该源码,用户可以了解LSB算法的原理和应用,掌握如何在图像中隐藏和提取水印图片和文字信息的方法。请注意,本资源仅供学习使用,不得用于任何非法用途。

  • 毕设&课程作业_基于C#的和SQLServer2014的学生成绩管理系统 .zip

    计算机系毕业设计

Global site tag (gtag.js) - Google Analytics