译者|在过去十年中,许多大中型企业实施了数字化转型计划,这些计划对这些企业开发和部署软件以实现业务价值的方式产生了深远影响。过去,应用程序通常是单体式的,部署在本地裸机或虚拟机上,更新次数少、数量大且不频繁。如今,新的应用程序模型利用微服务、容器化和持续交付,导致Kubernetes、虚拟机和多云环境中出现大量更新版本。这种演变催生了新型业务流程和业务模型,从“即服务”到全渠道客户参与,再到由实时物联网数据驱动的业务流程。在云原生环境中成功实施这些新的软件交付策略需要另一个转变——软件开发。企业必须在不牺牲软件安全性或忽视法规和业务合规性需求的情况下,以速度、频率和准确性交付更多软件版本。这种演变增加了复杂性。而开发、运维、DevOps、安全和合规团队,这些团队可能在地理上分布广泛,他们必须更快、更准确地工作,并具有更高的协调度。同样,复杂的分布式工作流必须高度协调以避免错误和延迟,同时提高软件交付团队成员的生产力。多样化的持续集成(CI)/持续交付(CD)工具链、日益增加的安全问题、不断发展的隐私法规以及合格技术人员的短缺进一步使这一演变复杂化。面对所有这些挑战,企业如何才能提高其软件交付团队的生产力并最大限度地发挥其发布的商业价值?首先,企业必须采用允许其工具和流程随着时间发展的内部系统。其次,他们必须集中控制DevOps、安全性和合规性管理,同时在流程和工具方面为开发团队提供最大的灵活性。第三,他们必须智能地自动化软件交付管道。1.持续交付新模式持续交付是指以可重复和可持续的方式将软件变更快速、安全地部署到生产中。这门学科并不新鲜,但一种新的持续交付范式正在出现,它可以作为改进DevOps管理、提高开发生产力以及确保治理和安全性的基础。这种新模式基于三个原则:开放平台、智能自动化和集中控制的自治团队。(1)开放平台开放平台支持与现有的持续集成(CI)/持续交付(CD)工具和工作流无缝集成。这允许企业在不中断现有工具链和流程的情况下进行开发,并且不会冒开发生产力急剧下降的风险,更不用说让开发人员和管理人员感到沮丧。例如,使用原生API实现通用持续集成(CI)/持续交付(CD)工具的开放式集成层可以让开发团队继续使用同类最佳的工具。为了最大限度地提高生产力和控制力,与现有持续集成(CI)/持续交付(CD)工具的深度集成可以在软件交付过程的每个阶段提供对出站发布的可见性和控制,使系统能够识别风险并控制整个工作流交货过程。此外,带有用于Argo和Spinnaker等常用编排工具的本机API的开放式集成层可以允许修改以更改编排工具,而无需拆除和更换持续交付平台。(2)智能自动化智能自动化解决了成功软件交付的许多核心需求。基本流程自动化可以通过代码自动执行日常人工任务,从而提高Devops人员的工作效率。例如,开发人员可以在Jenkins中运行构建,然后它会触发一个自动化任务,将构建推送到Artifactory并启动交付管道。但是,将自动化与人工智能相结合可以推进流程并改善业务成果。智能自动化可自动执行日常任务,然后随着发布在交付生命周期中的移动不断改进自动化决策。应用于发布流程的智能——与深度工具集成相结合,不仅可以访问事件,还可以访问所有流程数据,自动检测软件风险,并在发布候选版本投入生产之前自动标记以进行补救。除了提高开发效率和更快、更准确的软件发布之外,智能自动化还提供了对合规性和安全性实施集中、自动化控制的方法。通过在软件交付过程中实施安全策略和自动化,企业可以实施DevSecOps,使安全成为开发过程的一个组成部分,而不是开发过程结束时的审查阶段。(3)具有集中控制的自治团队建立集中控制对于支持组织范围内的开发、安全和合规团队以确保所有软件发布的合规性、一致性和可审计性至关重要。为了取得成功,集中控制需要一个中央策略引擎,该引擎可以在企业和个人团队级别实施安全性、合规性和业务规则。基于角色的访问控制(RBAC)可以在不影响控制的情况下为团队和个人提供细粒度的权限。为了让团队独立运作,团队必须在安全、部署目标和类似因素方面与其他团队隔离。智能自动化与策略引擎相结合,可以自动化并持续改进安全和合规策略的实施,减少对开发人员、安全和合规团队的需求。为了进一步提高软件开发管道的性能,可以实施企业范围的最佳实践和可重复使用的部署模式,以提高开发团队的生产力和准确性。2.持续交付的发展现在,持续交付的这些新的基本要素开始通过以下方式进入到产品中。(1)开源项目开源持续集成(CI)/持续交付(CD)项目不断发展。例如,为了满足不断发展的安全问题,开源云原生持续交付解决方案Spinnaker现在包括多个身份验证(身份管理)和授权(访问管理)选项。为了支持集中控制,Spinnaker还对这些关键安全功能采用了智能方法。Spinnaker没有编写新的专有登录解决方案,而是利用现代安全协议,包括OAuth2.0、SAML和LDAP,使Spinnaker能够与大多数企业已经使用的身份和访问管理解决方案集成。Spinnaker还集成了常见的授权解决方案,例如Google群组、GitHub团队、SAML角色和LDAP群组。(2)基础流程自动化常规流程的自动化在商业解决方案中越来越普遍,包括专有解决方案和基于开源持续交付解决方案的产品。例如,CodeFresh、Armory和OpsMx等商业解决方案构建在Argo和Spinnaker等开源持续交付项目之上。Digital.ai、Harness和Broadcom等公司也提供专有的商业解决方案。(3)基础人工智能和机器学习人工智能和机器学习正在商业解决方案中兴起,例如Harness和OpsMx。这方面的一个例子是机器学习驱动的持续验证过程,它从以前的部署中学习并创建良好部署的基线,从而实现异常检测。同样,来自NewRelic、Datadog、Honeycomb和Splunk的持续集成(CI)/持续交付(CD)工具使用人工智能/机器学习来提供对软件性能和质量的额外洞察。(4)智能自动化智能自动化结合了人工智能和机器人过程自动化(RPA)技术,以简化和扩展组织间的流程和决策。智能自动化正在OpsMx等少数业务持续交付解决方案中出现,使企业能够超越常规流程和工作流的自动化。智能自动化可以对软件发布进行风险分析,自动确定发布是否符合交付到下一个管道阶段的要求,而不会有不可接受的生产失败风险。这种智能水平还可以自动执行策略合规性,确保遵守所有治理规则和最佳实践。在行业领先的企业中走得更远,将智能自动化与高级部署策略(例如蓝绿测试、金丝雀测试和渐进式交付)相结合,以前所未有的速度和更低的风险部署软件。软件交付过程必须跟上企业级数字化转型的要求,这一点至关重要。如果不这样做会导致软件交付挑战,从而导致发布缓慢、发布错误率高、安全性和合规性失败以及用户和客户感到沮丧。好消息是,DevOps开发人员现在可以为其持续交付流程实施新的基础,以确保更快、更高质量的软件发布。随着智能自动化功能变得越来越普遍,DevOps开发人员可以将自己定位为加速数字化转型的主要驱动力,从而在更紧迫的时间范围内更快、更频繁、更安全地交付新的软件功能。原文链接:https://img.ydisp.cn/news/20230220/jsizbnw4okl
