Atlassian是怎样进行持续交付的?(下)

早前,Atlassian系统管理员Steve Smith在某会议上为听众展示了Atlassian是如何进行持续交付的?本文将其演讲内容进行了更为深入地探讨。具体演讲内容请点击此处查看!


使用特性分支是整个方法的核心 VS 将所有代码都放在master分支的策略


如果你的多个特性之间存在着联结性,它们就会变得非常复杂。同时,如果他们之间存在相互依赖,或是需要对方进行某种改变,问题就会出现。不过,一旦发生这种问题,这很可能意味着他们实际上是一个特性,因此这两个问题应当被合并在一起。


有时,这种互依赖性更多地是由技术方面导致的。如果公开暴露的API没有足够的封装性,使用者就可能会对其它系统的内部工作进行某些假设,导致了人为的互依赖性。因此遵循优秀的编程实践是关键,并且要确保技术依赖性不可进一步变为业务方面的依赖性,这将妨碍你在并行的分支中开发并行的功能。


最后,你需要时刻牢记,当你创建某个特性分支时,就是对主线的一次转移。因此你需要经常进行rebase,或从master分支进行pull操作,以确保你的特性分支的经常更新。否则,最后的合并工作可能会面临极大的挑战。


实现持续交付,并在特性分支中运行测试会带来额外的成本,团队应该如何声明对于必须的基础设施进行投入的必要性?


这一点又回到了测试的基本思想:测试是一组被编写的代码,但不会部署到生产环境中。在某些人一眼看来这似乎是一种浪费。然而,随着时间的推移,已经有大量的研究证实了测试的价值。


对于持续交付来说也存在着同样的争议:对于任何一个有一定复杂度的软件项目来说,开发的成本都是最高的。因此,为了保证软件能够正常工作,这就是对于进行测试所必须的基础设施投入成本的理由。运行测试的资源成本往往低于开发者的时间,以及未能及时找到bug所带来的影响,这就意味着测试资源是值得投入的。这也是为什么许多CI系统都支持按需进行纵向扩展,以使用云端的资源。为了应对峰值时的请求而进行临时性的纵向扩展,通常来说都是值得的。


最终,这些额外的成本会将敏捷理念带到下一级别:提供更小的反馈循环,以及尽快交付。


在持续交付这一领域,我们接下来还会遇到哪些挑战呢?


目前在实施持续交付的人可以说在站点了科技的前沿,因为CD的理念才刚刚得到普及。最大的困难或许在于如何在内部进行推销:搭建这一整套过程可能要花上很长时间,而要向那些保守的管理人员灌输CD的价值也是非常困难的。关键在于向人们传授知识,告诉他们CD能够带来的益处,并将信息传递给所有角色(系统管理员、项目干系人、风险管理员等等),让他们认可这一点是大家共同的思想。你无法强行推行这一举措,或者只是因为别人这么做而跟风。


大型组织需要理解每种CD系统都是不同的。要在其中找到一个共性,使整个过程成为可重复的,这一点或许并不容易。此外,其中的某些权衡之处可能使它未必对于每个人都有好处,因此对于每种特定的情况都需要进行分析。它还对组织的文化有所要求,要做到对变更进行积极地反应,而不是一开始就设计好所有的计划。


容器技术或许能够对整个搭建流程有所帮助,虽然它自身也必须克服一些挑战。其中主要的问题在于安全性,尤其是如何对容器中的软件进行管理,并保证它的实时更新。传统情况下,这一过程是由系统管理员负责的。但由于现在开发者也能够创建容器,因此这一责任也延伸到其它团队了。我们要对所有权进行重新定义,可以采取共同所有权的形式。


另一方面,像Puppet和Chef这样用于创建大量机器的技术,它们的管理是通过配置实现的。而这种配置如今看上去越来越像代码了,这也意味着系统管理员不得不应用一些软件开发的实践。此外,如果业务分析师也希望参与持续交付的流程,对哪些特性在何时部署到生产环境进行校验,那他们也必须熟悉开发者所使用的工具。


这也意味着组织中的每个人不得不成为某种通才,公司必须鼓励进行跨职能的培训,才能够实现这一点。Pull请求对这一点能够有所帮助,每个部门或角色都可以请求其它部门对变更进行审查和批准,然后再继续下一流程。


Steve Smith在Atlassian任职已超过8年时间,同时担任系统管理员与开发者的角色。他目前身处Atlassian的阿姆斯特丹办公室,专注于高可用性、持续交付以及平台迁移方面的问题。他还经常在公开场合进行演讲并定期更新博客,他还喜欢在 Atlassian的开发博客中讨论有关持续交付的话题。


CSDN开发服务为企业提供ALM(应用全生命周期管理)解决方案,致力于打造基于研发管理前沿、开放的工具产品集群(如Atlassian、Sonar、Jenkins等),结合CSDN CODE等研发工具的高效率、高质量和高可靠性企业级研发管理平台,为企业软件开发生命周期内各阶段、各部门、各角色提供全流程、全方位的跟踪和综合管理。截止目前,CSDN ALM解决方案已服务于包括华为、中国移动通信研究院、嘀嘀打车、广联达、招商银行、南粤银行等在内的数百家行业企业及互联网企业。

你可能感兴趣的:(最新消息)