别再自欺欺人了。我们所谓的 CI/CD 实际上只是 CI。
但 CI 工具还不够吗?
云原生 CD 是可能的
封面照片由Yan从 Pexels拍摄
是的——这篇文章最初只是一条推文。后来它迅速走红。它触动了我们内心深处那根赤裸裸、悸动不已的神经。而这根神经是我们大多数人都不愿触碰的。
我们中的一些人假装它不是什么真正的麻烦,另一些人只是忙于解决生产问题。还有一些人——这可能是这个行业的大多数——在面对它时,还没有意识到它有多么令人困扰。
精英与普通人之间的差距只会越来越大
但事实摆在眼前。普通人无法拥有持续交付,更无法拥有持续部署。持续交付已经成为DORA那些人毫不意外地称之为“精英”的群体的特权。而精英与普通人之间的差距只会越来越大。
欺骗自己
我们合作的大多数组织都说:“我们当然有 CI/CD 流水线!”
但深入挖掘后,通常会发现有一些 CI,却看不到 CD。或者,正如@itaysk所说,“它甚至不是 CI,而是持续构建……”
当被问及是什么阻碍了他们安全、定期地将每个变更部署到生产环境中时,每个人似乎都有自己的理由。组织、文化、历史、技术、合同……有些人甚至否认:“哦,我们不需要持续交付。事实上,大多数公司并不真的需要它。” 但根本原因当然是缺乏信心。没有人愿意成为系统中断的罪魁祸首。根据一些行业调查,一小时的停机平均成本约为 75,000 美元。风险很大!
因此,我们选择放慢脚步,添加受控切换并构建自主的防护措施。雇佣更多的运维工程师,并称他们为 SRE,以获得更安全的感觉。我们很少讨论建立和维护所有这些的成本。
但为什么我们不能有 CD?
持续交付是一种社会技术实践。正如许多 Twitter 评论员正确指出的那样,实现持续交付的障碍是双重的。与 DevOps 中的任何事物一样,它始于文化和共识,即持续小幅增量交付能够让一切变得更好。真正体验过持续交付的工程师无法真正理解任何其他软件交付方式。正如@giltayar所说:“持续交付……彻底改变了游戏规则。它改变了你对软件开发和功能交付的认知……我使用了持续交付,我的开发方式的一切都发生了改变。这真是太神奇了。”
社交困境
但我们人类害怕改变。新的交付模式挑战着我们的认知:所有权、可靠性和层级。如果你的SRE团队负责生产站点的正常运行——那么他们又有什么动力去支持那些持续不断的变化,而这些变化又不断威胁着他们所负责的事情呢?如果你的团队负责控制什么发布、什么时间发布——当这种控制权失效时,他们会怎么做?现有的组织壁垒使得互相指责变得更容易——从而给我们带来了一种虚假的自信。因为我们现有的工具无法保证真正的自信——这让我们……
技术困境
社会文化障碍确实是最难消除的。但正如阿基米德曾经说过的:“给我一个足够长的杠杆和一个支点,我就能撬动地球。” 技术本身虽然毫无意义,但却可以成为社会创新的强大推动力。
问题在于——持续交付/部署的工具仍然匮乏。而对于我们眼前正在迅速展开的崭新而勇敢的云/边缘原生世界来说,尤其如此。
但 CI 工具还不够吗?
这时有些读者可能会问:“为什么你说没有持续交付 (CD) 工具?我们已经有了 Jenkins/CircleCI/Github Actions……为什么我们不能使用它们?然后还有 Spinnaker,不是吗?”
当然,这是一个严重的错误。没错,任何 CI 服务器,甚至通用的工作流自动化工具,理论上都可以编排你的部署——部署机制其实很简单。但这种部署方式与引发 DevOps 革命的“把变更扔到墙上”的做法如出一辙。
因为 CI 工具忽略了变更的语义。它们提供的唯一反馈是确定性的——在预定义条件下验证预定义的功能。而生产环境本身就具有不确定性,导致其行为往往难以预测。因此,在现代复杂系统中,任何变更在投入生产之前都不会得到验证。正如人们所说——直到车轮撞上路面。
这正是大多数组织无法实现持续交付 (CD) 的原因。因为盲目地投入生产环境令人恐惧、压力重重,最终责任落在了人手不足的 SRE 团队身上。
这正是大多数组织无法实现持续交付 (CD) 的原因。因为盲目地投入生产环境令人恐惧、压力重重,最终责任落在了人手不足的 SRE 团队身上。
云原生 CD 是可能的
当然,这并非全是坏事。我们采访过的一些团队,通过投入数个工月的时间自行开发解决方案,成功建立了真正的云原生持续交付 (CD)。这成本高昂,大多数组织都无法承受,但那些承受得起的人却为自己的成就感到非常自豪——直到平台发生改变,他们需要重新发明自主开发的解决方案。
近几年出现了一些非常有趣的开源软件项目,试图解决这个问题。ArgoCD和Argo Rollouts、Flux和Flagger、Shipper和Keptn都值得关注。
仍然没有一个全面、可靠、可用的平台可以帮助我们自信地持续部署到生产中,而无需复杂、不可持续的内部黑客攻击。
这就是为什么我们加那利群岛决定迎接挑战。
我们正在构建一个平台,使您能够充满信心地持续部署、实现完全可观察性和自动恢复。
在下一篇文章中,我将描述我们认为是此类平台的最小可行主张的功能集以及我们如何构建它。
听起来很有趣?给我们发邮件,在网站上注册测试版,或者直接关注我们的博客。
我们会持续向您通报最新情况;)
继续交付!
文章来源:https://dev.to/canarian/let-s-stop-fooling-ourselves-what-we-call-ci-cd-is-actually-only-ci-13c