ci cd cd_功能发布是未来,并且需要CI,CD和功能标志

ci cd cd

今天让我们谈论软件开发的未来,以及从发布软件到发布功能的转变。 但是,为了谈论这个未来,让我们首先进行一次诱人的旅行。

预先连续的任何事情:一次发布软件就可以了

如果您在软件行业工作了足够长的时间,您会记住一些今天会违背信念的事情。 回顾20年,软件开发就这样。 一月份,该团队以需求和设计文档的形式接收其功能和功能分配。 至此,他们都回到了实施阶段的隔间。 这个阶段将持续到八月。

功能发布

在八月,每个人都匆匆忙忙完成功能开发。 完成了吧? 好吧,不,不完全是。 现在该是人们过去所谓的“合并聚会”了。 在这里,每个人都需要花费几个月的时间对代码进行的所有更改,然后将所有更改一起放入某种Franken代码库中。

合并工作会持续数天或数周,而团队需要努力进行正确的变更组合。 经过一些努力,代码得以编译。 再过几天,它可能会运行。 最终,它完成了每个人期望进入测试阶段的工作。 在这一点上,团队宣布冻结代码数月,仅修复出现的缺陷。

一年后,该团队通过持续交付(CD)发行了此发行版,并准备进行补丁修补。

功能发布的兴起是过去和现在的故事

这幅画怎么了? 好吧,如果您今天向软件开发人员咨询,几乎所有内容。

  • 那是瀑布,现在每个人都敏捷。
  • 合并方? 听说过持续集成吗?
  • 每年发布? 每季度,每周甚至每天尝试。

然后,问题是多方面的,并且涉及方法,哲学和工具方面的缺陷。 从那时起,我们已经走了很长一段路。 持续集成(CI)阻止了合并方的实践。 敏捷软件开发与良好的工具相结合,缩短了发布周期,使您更具竞争力。 使用微服务等技术可以更好地分离关注点。

所有这些都使我们朝着一个共同的目标迈进:以更高的自动化程度,更频繁的方式以及更低的风险交付软件。

但是,只要我们根据软件发行版对软件进行推理,那么我们只能走得那么远。 我们需要谈论功能发布。 而且,只有战略性地将持续集成,持续交付和功能标记的使用相结合,您才能实现功能发布的竞争优势。

什么是持续集成?

要了解我的主张的论点,您需要首先了解所涉及的组件。 因此,让我们依次定义它们。

首先,什么是持续集成?

嗯,CI最初是一个非常简单但功能强大的概念,用“如果有伤痛,那就做得更多”这句话可以很好地描述。 还记得我刚才提到的合并方吗? 聪明的人来了,建议您通过更频繁地集成代码来避免这种情况。 尝试每月进行一次。 好的,现在每周一次。 让我们连续拍摄。

因此,按照最初的构想,CI实际上只是一种解决方案和实践:尽可能频繁地将代码集成到源代码管理中。

然而,从最初的谦逊开始,该概念在实践和工具方面都得到了显着发展。

  • 大多数团队每天至少一次将代码合并到主分支中。
  • 在每次这样的提交之后,团队在构建机器上运行一套自动化的测试和检查。
  • 构建中的任何故障都将成为立即解决的优先事项。

由于我们在软件开发行业中喜欢自动化,因此出现了一个工具生态系统,以帮助这些流程和实践自动化,同时通过良好的实践和效率来提供帮助。

因此,今天,CI不仅意味着持续集成的实践,而且还意味着实现该集成的技术。

什么是连续交付?

这种自动化的想法使我们紧接连续交付部署(CD)。 现在,我们正在CI之上构建,这是一个更容易解释的概念。

假设每当开发人员提交一些代码时,提交都会进入服务器。 服务器触发代码的构建,在其上运行一堆测试,然后通常将其打包。

这使事情几乎处于实际可部署状态,不是吗? 那么,为什么不再稍微增加距离并将其打包为实际上可部署的状态呢? 然后为什么不采用该软件包并以自动化方式实际部署它呢? 这些可能包括测试和登台环境以及生产。

CD的兴起也是如此。 创建和自动化部署是进行持续集成的必然结果。 这就是为什么您如此频繁地看到CI和CD在一起提到的原因,以及为什么它们之间的界线如此模糊的原因。

什么是功能标志?

现在,让我们稍微切换一下齿轮并谈论功能标志 。 像CI一样,这是一个看似简单的概念,并且在过去的几年中有了长足的发展。

首先,功能标志意味着将if条件放在新功能周围,并使if条件与代码外部的内容有关。 这可能意味着数据库字段或配置文件设置。

通过这种方式,您可以在代码中带有功能标记的地方部署代码。 然后,一旦它在该环境中运行,您就可以随意打开或关闭该功能。

但这真的只是开始。

当人们开始使用功能标记时,他们喜欢这个想法。 这可能会使他们陷入困境。 一个功能标记变成了几十个,后来变成了数百个。 并且标志本身从简单的切换演变为具有实际值的变量。

人们在这种情况下正在做的事情是朝着发布功能而不是软件的强大概念迭代。 但是他们却一团糟。

因此,今天,功能标记源自简单的起点,实际上涉及两件事: 功能标记管理和以产品为中心的功能启用。 没人再需要功能标记-人们需要功能标记框架,该框架允许他们以高度精细的方式部署软件。

一起使用CI,CD和功能标志:交付和发布的粒度分离

现在以示例的形式一起看所有这些。 假设您有一个会员网站,并且想要添加一些新功能。 当用户将鼠标悬停在另一个用户的个人资料图像上时,它会弹出带有该人当前位置的工具提示。

在二十年前的开发世界中,这将经历年度发布周期,并与数百个其他功能合并。 但是,这就是今天的样子。

开发功能无人问津

将此功能推向市场的开发人员为此添加了最严格的框架,包括使用功能标记管理系统将其关闭(除了本地环境以外)。 她之所以提交此代码是因为她一直在进行集成。 反过来,由于CI / CD的设置,触发了部署到除生产之外的所有更高环境的部署,并且团队中的其他开发人员撤消了她的更改。

由于该功能在她的机器以外的所有地方都不可用,因此即使他们获得了更新的代码,也没有人注意到或关心。

质量检查人员和其他开发人员可以根据需要获得此功能

完成后,她将进行最终更改,并在测试环境中打开该功能以进行质量检查。 它仍然不影响其他开发人员,因此对他们和阶段性都没有影响。

经过质量检查的祝福后,每个人都应该在本地拥有此功能,以便习惯使用它。 定位功能现已在生产环境以外的所有地方启用,如果出于任何原因要避免使用该功能,则必须将其关闭。

部署风险低且平稳

分段看起来不错,因此产品所有者订购了将其部署到生产中。 这并非偶然,因为CD使这一切变得非常容易,并且该功能仍处于生产中。 它只是安静地挂在那儿,直到产品所有者想要将其推广给一小部分用户进行测试为止。

这种区别非常有效,因为它将IT方面的部署与业务方面的发布分开了。

发布功能并管理部署是一项业务决策

一旦产品负责人觉得时间合适,并且团队可以花时间监视发布并提供一些支持,产品负责人就会在生产中为一小部分用户打开该功能。

那很好,因此他们为更多用户打开了它。 他们重复此过程,直到几天后,每个人都具有定位功能。

当然,如果发生任何错误,则无需打补丁或加扰。 他们只是简单地再次关闭了该功能,报告了问题,然后等待该功能的下一个版本再次尝试。

CI / CD /功能标志:这应该是您的故事

今天,将CI,CD和功能标志结合在一起的故事可能就是您的故事。 我并不是在描述一些遥不可及的梦境,而是描述当今存在的一系列选择。 您的商店可能尚未在所有工具上都放弃实践,但是您可以。

但是,我认为您需要忘记可能,并开始考虑必须。

软件产品竞争激烈,您的竞争对手不会等着看您在发布周期中所做的事情。 他们希望以最快的速度将产品推向市场,以取悦用户。

因此,如果您的竞争对手听说了位置功能,并在一周内实施了该功能,并在将其发布到下一个3月版本的路线图上成功推出时,您认为它将如何呢? 当他们从现在到3月在数十个功能中重复该过程时,您认为会如何?

在当今的环境中,可以在功能级别上计划,实施和部署软件,但是在明天的情况下,这将是至关重要的。 因此,请确保相应地更新您的工具和流程,以免您的竞争对手以我们回头看合并方和邮寄CD的人的方式看待您。

额外资源

翻译自: https://www.javacodegeeks.com/2018/11/feature-releases-future-require-feature.html

ci cd cd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值