继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

敏捷开发时代,浅谈DevOps,你真的了解吗

慕尼黑5497867
关注TA
已关注
手记 378
粉丝 23
获赞 77

敏捷开发时代,浅谈DevOps,你真的了解吗

敏捷开发

DevOps概念产生背景

早期的软件开发模式很单一,只有软件工程师一人完成,此时还没有全栈的概念,后期为了提高效率,逐渐实行分工模式:开发、测试、运维,各尽其职,很是欢乐。

经过时间的推进,分工越来越细之后带来了问题也越来越突出,那就是各角色之间的沟通成本越来越高,开发要求改变,运维要求稳定,之间的矛盾越来越深,开发与运维工具不统一,差异较大,同时也出现了各种甩锅的行为,如图1-1所示:

敏捷开发时代,浅谈DevOps,你真的了解吗

图1-1

随即产生了全栈工程师、DevOps相关职位和概念,将之前需要各角色沟通的工作集中在一个人身上,用来降低沟通成本,增加开发效率。

DevOps基本概念

DevOps这个词是由Patrick Debois于2009年提出的。一千个人心中有一千个哈姆雷特,每个人对DevOps理解都不一样,DevOps本质是为了填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系。DevOps希望做到的是软件产品交付过程中IT工具链的打通,使得各个团队减少时间损耗,更加高效地协同工作。需要注意DevOps并不只是包括开发和运维,其中还有测试环节,图1-2表明了三者之间的关系:

敏捷开发时代,浅谈DevOps,你真的了解吗

图1-2

此处引用一下来自 Gartner的一个定义:

DevOps represents a change in IT culture, focusing on rapid IT service delivery through the adoption of agile, lean practices in the context of a system-oriented approach. DevOps emphasizes people (and culture), and seeks to improve collaboration between operations and development teams. DevOps implementations utilize technology— especially automation tools that can leverage an increasingly programmable and dynamic infrastructure from a life cycle perspective.”

企业中DevOps应用带来的问题

如今互联网行业,产品想要抢占市场,必须快准稳,一方面,业务用户需要尽快增加新功能,新服务等,同时,他们还需要一个稳定且无中断系统。这就产生了一个问题,是追求持续快速交付还是追求稳定性。在开发人员看来,软件就应该快速持续发布,这才符合DevOps的理念,但是在运维人员看来,稳定性才是第一位的,这就造成了矛盾的产生。

其实,DevOps就是为了解决这一难题,DevOps 的宗旨就是消除两个传统上孤立的团队(开发团队和运维团队)之间的壁垒,将开发人员,测试工程师,运维工程师以及其他相关的每个人集成到一个高度自动化的工作流程中,共同关注快速交付高质量的软件,满足所有用户要求,同时保持整个系统的完整性和稳定性。凡是采用 DevOps模式的组织或企业,无论企业结构如何,参与团队都会将整个开发和基础设施生命周期视为己任。

实践证明,快速的部署其实可以帮助更快地发现问题,产品被更快地交付到用户手中,团队可以更快地得到用户的反馈,从而进行更快地响应。而且,DevOps小步快跑的形式带来的变化是比较小的,出现问题的偏差每次都不会太大,修复起来也会相对容易一些,如图1-3所示:滞后软件服务的发布也并不一定会完全地避免问题,反而可能会错失软件发布的最好时机。

敏捷开发时代,浅谈DevOps,你真的了解吗

图1-3

DevOps如何工作

虽然大家对DevOps的理解都不同,但是大多数人都统一认同以下几点:协作,自动化,持续集成,持续交付,持续测试,持续监控和快速修复。图1-4描述了DevOps持续方法的全部过程:

敏捷开发时代,浅谈DevOps,你真的了解吗

图1-4

协作

开发和运维一起工作,而不是互相指责。虽然这两个角色之间的脱节是DevOps创建的推动力,但DevOps远远超出了这两个角色之外,因为对协作的需求扩展到与软件交付有关的每个人(包括产品、测试等其他人员)。

自动化

DevOps在很大程度上依赖于自动化,自动化又依赖工具。DevOps依靠工具链来自动化大部分端到端软件开发和部署过程,虽说工具对于DevOps很重要,但是DevOps远不止如此。

持续集成

引用卡内基梅隆的一句话:DevOps的基石是持续集成(CI),这是Grady Booch设计并命名的技术,它不断将团队中所有开发人员的源代码更新合并到主干中。这种持续的合并可以防止开发人员的软件项目本地副本在其他人添加新代码时差异太大,从而避免了灾难性的合并冲突。

持续交付

亚马逊服务团队定义:持续交付是一种软件开发实践经验,采用持续交付时,系统会对代码变更自动进行构建和测试,并为发布到生产环境做好准备。持续交付可以在构建阶段后将所有代码变更都部署到测试环境和生产环境中,从而实现对持续集成的扩展。当持续交付得以正确实施时,开发人员将始终能够获得一个已通过标准化测试流程的部署就绪型构建工件。

公司不同,发布频率及发布内容也会不同,但是目标都是相同的,那就是将任何一次更新导致故障的可能性大大降低。

持续测试

Parasoft提出:持续测试创建了一个中央决策系统,可帮助您评估每个应用程序为您的组织带来的业务风险。应用一致,它指导开发团队满足业务期望,并为管理人员提供可见性,以做出明智的权衡决策,以优化候选发布候选者的业务价值。

持续测试带来的回报非常值得。DevOps环境中的测试可帮助开发人员平衡质量和速度。使用自动化工具可降低测试成本,并使测试工程师能够更有效地利用时间。最重要的是,持续测试通过在流程早期进行集成测试来缩短减肥测试周期。

持续部署

想要得到持续交付的好处,应该尽早将版本部署到生产环境,以确保可以小批次发布,在发生问题时可以轻松排除故障。这就是持续部署。持续部署是在持续交付的基础上,把部署到生产环境的过程自动化。

持续监控

由于持续交付导致发布量很大,因此无法实现严格的预发布测试阶段,这就导致在DevOps环境中,必须实时找到并修复故障,这个步骤很大一部分是持续监控做到的。

通过持续监控,团队可以衡量软件的性能和可用性,从而提高稳定性。持续监控有助于快速确定问题的根本原因,从而主动防止业务中断并最大限度地减少用户问题。

DevOps需要两种监控:服务器监控和应用程序性能(APM)监控。

如何实现DevOps

工具

工具是必要条件,但是工具又不是最重要的因素,因为无论我们使用哪一种技术,目标都是一样的,都必须要实现持续集成、配置管理、持续交付、持续部署、持续监控等。

图1-5列出一些工具,可供参考:

敏捷开发时代,浅谈DevOps,你真的了解吗

图1-5

不同工作的不同阶段使用的工具不同,可能根据不同组织中的环境数量或者DevOps实践数量而变化,如图1-6所示:

敏捷开发时代,浅谈DevOps,你真的了解吗

图1-6

DevOps能不能成功,优秀的人才是关键。人是任何文化的重要组成部分,只有人能够驱动文化的改变,或者改变自己以适应新过程、定义新过程、学习新工具或者技术。

开发人员和运维人员应该互相沟通互相学习,从而提高生产力,并且协作也应该存在于业务人员与开发人员之间。

说白了,在企业中,其实不需要一个专门的DevOps团队,需要的是开发人员、测试人员、自动化实现人员和云或基础设施团队之间的更多沟通和协作。

结论

DevOps不是一个目标,而是一个永无止境的持续改进过程。-Jez Humble,DevOps研究和评估的创始人兼首席技术官

DevOps是一场革命,并且DevOps将持续存在,DevOps已经成功地将业务用户,开发人员,测试人员,系统管理员集成到一个专注于满足客户需求的工作流程中。开发人员和系统管理员停止争论并开始相互支持。业务经理很高兴,因为他们获得了销售产品和服务所需的软件产品。客户满意度,系统可靠性也在稳步向前进。

DevOps是向着大规模敏捷(Scaling Agility)迈出的另一步!

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP