日前,基础设施自动化服务商Puppet发布了2021年DevOps调查报告。这已经是该系列报告发布的第十年,报告显示,在超过2,650 名 IT、开发和信息安全专业人士之中,有83%的IT决策者表示,他们的组织正在进行DevOps实践,以通过更优质的软件、更快的交付、更安全的系统以及系统的理论体系,来释放更高的业务价值。
DevOps,即Development(开发人员) 和Operations(运维人员)的组合词。
这是一种重视软件开发人员和运维人员之间沟通合作的开发模式,是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。关于对DevOps的理解,有许多不同答案。亚马逊云科技曾总结称,DevOps集文化理念、实践和工具于一身,可以提高组织高速交付应用程序和服务的能力,与使用传统软件开发和基础设施管理流程相比,能够帮助组织更快地发展和改进产品。
DevOps模式
传统的软件开发流程被称为瀑布模型,分为开发、测试、部署三个阶段。软件开发人员先是用数周或数月的时间编程,然后将代码交给测试团队,最后将发布版本交给运维团队部署维护。
现在,随着软件交付周期的缩短,同时为了应对频繁的更改需求,迟缓的瀑布式开发已不能满足各方要求。通常来说,伴随着DevOps和敏捷开发,对应的还有CI和CD两个词。CI是Continuous Integration(持续集成),CD对应两个词语,Continuous Delivery(持续交付)和Continuous Deployment(持续部署)。DevOps模式下可大幅提高开发团队的工作效率,加快版本更新。不仅如此,产品被更快地交到用户受众,业务团队也能更快得到反馈、进行响应。
在对应用程序发布的影响上,DevOps有几点突出优势。
一是减少变更范围。与传统的瀑布式开发模型相比,采用敏捷或迭代式开发意味着更频繁的发布、每次发布包含的变化更少。由于部署经常进行,因此每次部署不会对生产系统造成巨大影响,应用程序会以平滑的速率逐渐生长。
二是增强发布协调。靠强有力的发布协调来弥合开发与运维之间的技能鸿沟和沟通鸿沟,采用电子数据表、电话会议、即时消息、企业门户(wiki、sharepoint)等协作工具来确保所有相关人员理解变更的内容并全力合作。
三是自动化。强大的部署自动化手段确保部署任务的可重复性,减少部署出错的可能。
DevOps起源
DevOps是近十年才兴起的开发思潮,其思想萌芽于2007年。当时,Petrick Debois 参与了比利时一个大型数据中心迁移项目,负责测试和验证。他需要同时在开发团队(Dev)工作和运维团队(Ops)工作,两个团队截然不同的工作模式使他非常困扰,但同时也给了他新的启发。
2008 年,在多伦多敏捷会议上,Petrick Debois 提出“ DevOps”一词。2009 年,第一届DevOpsDays会议在比利时根特举行。从此,“DevOps”一词逐渐传开。2012 年, Puppet的Alanna Brown起草并发布DevOps调查报告,此后更多机构参与报告调查,到了2014年,他们发现,DevOps的采用正在加速。
现在,绝大多数的组织都正在引入DevOps以应对更复杂的开发需求和环境,DevOps已经被视为企业发展的关键。最新的DevOps报告发现,它所遇到的大多数团队都高度进化,成为交付代码最快、最频繁、为开发人员提供最紧密反馈循环的团队,这些团队通过使用内部平台来实现诸如用户和服务到服务的身份验证和容器编排等等。
DevOps工具
正如前文所说,DevOps集文化理念、实践和工具于一身。现在已经有许多工具可以帮助组织更快速落地DevOps,下面介绍几款流行工具和平台。
Jenkins是开源的CI/CD服务器,可帮助用户自动化交付流水线的不同阶段。Jenkins流行的主要原因是其巨大的插件生态系统,它提供1000多个插件,因此几乎可以和所有DevOps工具(从Docker到Puppet)集成。
Git,最流行的DevOps工具之一,它是一种分布式SCM(源码管理)工具。Git让用户可以跟踪自己开发工作的进度。用户可以保存自己源码的不同版本,并且在需要的时候切回之前的版本。要将Git和DevOps工作流集成起来,需要维护repository,团队成员可以向其中push各自的工作。
容器平台Docker也可以一种重要的DevOps。使用Docker容器,可以在这些自定义环境中开发和部署应用程序,从而不必担心兼容性问题。它将应用程序隔离成单独的容器,因此应用变得更加便携也更为安全。Docker应用程序也独立于OS以及平台,用户可以使用Docker容器代替虚拟机,比如VirtualBox。
Kubernetes,容器编排工具。使用Kubernetes,无需将容器化的应用程序绑定到某个单独的机器里。相反,将它部署到一个机器集群里,Kubernetes会自动化分发并在整个集群里调度容器。
一种开发模式从出现到壮大,究其根本终究会落脚至 “降本增效”,而近期出现在大家视野的,称可实现“十人可抵百人用”的“飞算SoFlu全自动软件工程平台”,则实现了通过可视化编程的方式实现全自动开发、测试、运维,即使用平台的一个ID相当于一个10人科技团队,输入流程图即可实现自动开发、自动测试、自动运维,人力成本被大大降低,程序员从“重复造轮子”中解放出来,去关注更多的架构设计的事情,而企业用户在降本增效的同时,则可更多地关注自身业务。
据了解,飞算SoFlu全自动软件工程平台有三大核心技术,包括:
可视化开发,改变传统开发方法,业务逻辑有可视化展示,降低开发门槛,无需编写代码,在设计业务逻辑时就形成微服务应用;
平台组件,可视化平台组件是一类通用的技术功能模块,平台支持循环条件判断、函数调用,通过拖拽方式以及参数配置实现等同于编写复杂代码的业务逻辑,有别于通过组件排列组合;
管理方式,主要通过管理平台来管理需求、研发、测试、部署、上线、运维等整个软件生命周期,沉淀经验、积累知识,将管理制度真正的落地。
研究下来,飞算SoFlu全自动软件工程平台可称得上是近期比较有亮点的DevOps工具了,而可以帮助构建DevOps实践的工具还有许多,随着DevOps的实施及相应工具的普及,已经有越来越多的团队受益。
Liberty Mutual Insurance的DevOps平台高级总监曾表示,从根本上说,DevOps使开发人员能够拥有、运行和管理应用程序或软件的端到端交付。其团队部署代码的速度加快了200倍,创造了更高的稳定性,使其能够进行更多的实验,在更短的时间内推出新产品和功能。