近年来,得益于容器技术与微服务架构的蓬勃发展,在敏捷模型基础之上,开发和运维协同工作的 DevOps 模式应运而生。
事实上,DevOps 这个理念并不是凭空出现的,它来自于传统制造业的 “精益” 思想,最早出自丰田汽车企业文化中的 “精益制造” 理念。早于 DevOps 出现的敏捷开发,也借鉴了这种精益制造的思想。
虽然二者都来源于精益思想,但敏捷开发和 DevOps 的侧重点各有不同。敏捷开发更偏向于解决开发侧,即研发过程中的问题;而 DevOps 则在敏捷开发的基础上延伸到了运维的领域,且随着行业理解的加深,DevOps 覆盖的范围在不断扩展。
DevOps 是一系列软件开发实践,强调开发人员(Dev)和运维人员(Ops)之间的沟通合作,通过自动化流程,使软件构建、测试、交付更加快捷、频繁和可靠。这种开发模式的特点是可以把产品的每个迭代,或者每修复一个线上缺陷就立即部署到生产环境,这样一来,开发者就能够迅速从用户处获得反馈并且快速做出响应。
持续集成、持续交付和持续运营
DevOps 强调持续集成和持续交付,也就是我们常说的 CI/CD。近年来还兴起了持续运营 CO 的概念。
持续集成早在 DevOps 概念诞生之前就已经存在。当时人们所说的持续集成主要是指代码的集成,因为在多人开发的场景下,每个人对代码的改动都会对主线产生影响,解决代码集成问题成为了很多代码版本管理工具关注的重点。
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」中进行更多的测试,如果代码没有问题,则可以继续部署到生产环境中,实现持续部署。
持续运营则是 DevOps 理念进一步从研发、运维延伸到业务领域的概念。当我们给客户交付的价值需要衡量体现时,例如一款 ToC 的软件产品,衡量它的点击率、用户使用率、用户粘性等数据,将这些来自用户侧的反馈与研发、运维流程结合起来,就是 DevOps 延伸到运营阶段的体现。
变更管理和配置管理
通俗地说,DevOps 实际上是一种新的研发管理方法论。无论是在传统开发模式还是 DevOps 模式中,人们最关注的是变更管理和配置管理。
变更管理囊括了公司架构层面对整个 IT 部门的变更请求管理,例如员工的软件需要重新安装、域名指向变更、服务器配置变更、增加新的服务器等等,这些都属于变更管理需要考虑到的。在 DevOps 流程中,提倡将传统流程里需要人工处理的变更请求改为自助服务,即建立一套完整的自动化流程来处理这些变更请求。
配置管理则是对变更管理在技术层面的支撑。当变更管理涉及到配置项的变更时,在技术层面就涉及到配置项的识别,然后对配置项的版本进行管理,并在变更的过程中进行审查,确保整个系统配置版本的统一。
综上所述,我们也可以说 DevOps 是应对 “变化” 的艺术。如今的市场要求研发团队进行快速迭代、快速上线,这就涉及到软件版本的频繁变更,变更管理和配置管理在其中的重要作用不言而喻。这就引出了我们衡量一个 DevOps 实践是否成熟的四大核心度量指标,即部署频率、服务恢复时间、变更失败率和变更前置时间。
当我们在挑选合适的 DevOps 工具时,就要结合这些工具能否提升以上指标来做出选择。
如何选择合适的 DevOps 工具
面对如此之多的工具,研发团队在进行技术选型时往往会面临一些困扰。那么我们究竟应该如何选择这些琳琅满目的开发工具,从而组成一个高效的 DevOps 工具链呢?
根据企业的投入和研发实力,目前在业内部署 DevOps 工作流的方式可以分为两种类型。一种是 DIY DevOps,即企业自研或基于开源的 DevOps 基础设施工具进行私有化部署,再根据自身需求研发相应的扩展组件。
这种方式能够根据复杂的业务需要定制更符合企业自身需求的开发环境,但需要企业具备一定的研发实力,拥有熟悉 DevOps 建设方法论和实践经验的高端人才,投入的人力成本较高。
另一种是采用市面上较为成熟的一体化 DevOps 平台,适合研发资源不足、业务场景不那么复杂的企业用户。这种模式的好处是不需要企业从零自建 DevOps 团队,可以快速体验平台工具自带的优秀 DevOps 实践,降低人力成本的投入。
其中,由飞算自主研发的 SoFlu 软件机器人作为辅助开发工具,从后端、前端、测试到运维等环节帮助企业研发团队落地 DevOps,实现自动化开发,对于业务主要采用 Java 技术栈的团队来说具有极高的性价比。
SoFlu 软件机器人首发于 2020 年 11 月,通过后端全自动开发平台,率先实现了 Java 后端的全自动开发。用户只需输入流程图,平台就能够自动生成通过实践验证的微服务打包文件,并可直接部署到服务器上,大大降低微服务部署运维的门槛,由此节省大量时间和人力。工具的属性也意味着用户可以将 SoFlu 软件机器人生成的代码部署在任何平台。
产品发布后,为了更全面地满足软件自动化开发需求,SoFlu 软件机器人还上线了前端全自动开发平台,提供可视化开发模式,通过丰富的页面控件和对后端接口联调的简化,极大地提高了前端开发效率。
除了为开发者提供前后端自动化开发工具外, SoFlu 软件机器人还推出了全自动测试平台和全自动运维平台,为企业研发团队提供覆盖软件研发全流程的自动化工具,更高效地应对频繁迭代、频繁部署的 DevOps 研发模式。
当然,以上两种类型的 DevOps 部署方式并没有好坏之分,不同企业还是应该根据自身的业务场景和需求采用适合自己的 DevOps 部署方式。
最后值得一提的是,技术没有银弹。DevOps 并不是解决所有问题的万能钥匙。总而言之,为了 DevOps 而 DevOps 并不可取,大而全的框架不一定适合每一个团队,贴合自身需求的工具和模式才是最好的。
(免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。 )