在甲骨文主导 DevOps 的变革是一种什么体验?

前言

刚结束的深圳 GOPS 2017 全球运大会上,来自 JFrog 的全球研 Jagan Subramanian 表了演

Jagan 之前在甲骨文供16年,担任高发总监。由于之前甲骨文收购了很多公司,这些新的团队使用不同的语言开发,不同的仓库存储自研件,并且各种维护不同的上线流程,导致公司内部的软件交付流程非常混乱。同时随着软件微服务架构的落地,团队产生的包越来越多,团队之间很难协作。

为了解决这些痛点,在2013年,Jagan 开始负责开发甲骨文内部持续交付的 PaaS 平台,名叫 Carson,目的是为公司内部所有的开发团队提供统一的,自助式的持续交付平台。

在底层 DevOps 工具的选择上,为了满足团队开发语言多样化,需要统一,自助式软件交付流水线的管理,跨团队之间协同构建,发布等需求, Jagan 比较了很很多工具,最终选择了 Artifactory 和 Jenkins/Hudson 作为底层的工具,在上层开发了 Carson,实现了统一,自助式持续交付的平台。目前这个平台已经为甲骨文内部几万个开发者使用,为公司管理了1亿多个软件包。

Jagan 成功主了甲骨文中件,数据线 DevOps 变革。如果您也想成为公司内部推DevOps的领袖,就来参考下 Jagan 经验

1、甲骨文的痛点

  1. Stack Build 构建耗长。

    Stack Build 是指的 A 构建 BB 构建 C致在重复 Stack Build ,需要花大量的时间

  2. 同一个依包有多个版本被引用。

    例:团队 A 了一个共用包,比如是解析 MQ 消息通用服 common.jar V1.0B C 团队都引用了,一个月后 A 团队了,B 引用了common.jar V1.1,但 C 没有升,在集成 ABC 的服务时个通用服被引入了common.jar 的两个版本。

  3. 用内部接口。

    例:当团队A,急需团队 B的数据, A 然知道不应该直接 B 的内部方法,但 A是会要求 B 提供一个内部方法,等 B 好了外部接口,A 再来改代码调用外部接口。但实际情况是 A 完成了功能交付了代之后,再也不会做重构。这样致了 A B 直接的耦合。

  4. 关系混乱。

    当某个中件需要重构,他并不知道公司内部哪些品会被影响到,因每个人看起来都会被影响。

  5. 者的境通常和生产环境不一致。

    例:开者在本地测试问题,放到客户环境或者线境就出问题

  6. 缺乏透明度,可化。

    团队中每个人都看不到当前的流程,没法估当前流程有什么可以改的地方。例如缺乏每次构建的时间测试覆盖率,测试率,上线成功率,布周期等指统计致。

  7. 传统的工具以适配新的技

    例如 C/C++ 的依管理就是个很大的痛点,由于 C/C++ 编译不能跨平台,它依编译工具 cmake 或者 gcc,也依与芯片架构,所有缺少一个似于 Maven 的依管理工具来管理所有的包。

  8. 实现云化。

    在申请计算,存,网络资,依于硬件,没有实现化,按需建,消费资源。

2、Jagan在甲骨文推DevOps的方法


  1. 定位问题

    公司内部 DevOps 袖,你应该让测试,运 Leader 坐在一起,从公司的角度来思考面问题,确保三个团队朝相同的方向努力。

  2. 实验方案。

    三个团队 Leader 一起讨论如何改公司的流程,讨论每个团队需要改什么。在段,要尽量行足多的 POC,找个合适的方案解决公司问题

  3. 实现方案。

    和上一步 POC 的人一起行方案的实现。此你需要解决基础设施的问题,保础设施能支持些方案。

    测试要注意元数据的收集,例如每次构建的时间测试覆盖率,测试率,上线成功率,布周期。些数据将来是行持度量的重要数据来源。

  4. 采用方案。

    采用方案,你需要其他团队好文档,技方面的支持,准好工具。但并不意味着你准好了文档,工具,公司团队就会配合你。公司可能有10-15%团队坚定的支持你,并且他会需要更先的工具和方案。

    另一部分人30%会相保守,他知道型有什么用,并且会需要你来指们进 DevOps 转变

    有一部分人会拒,你要经实 DevOps 团队示范目,所有人看到基于数据的可表,看到他的成果。

  5. 续评估,持度量。

    估,度量,一定要用可化的工具度量,不能凭感觉说话,必依靠数据说话

    就可以利用第三,四步中累的元数据行基于数据的度量,个度量不仅仅团队内部的,可以是跨线的度量。当然估之后会有发现新的问题继续环继续下去。

3、落地DevOps最佳

1. 协作。

团队做到真正的互相听,你需要作那个中人提供沟通的渠道。肯定会有人有疑,但愿意沟通就是好事,因最后你会和大家一起定出来团队间协作的流程。

2. 透明化,可化。

有人会问为什么在持交付的流程里需要收集么多元数据,些元数据是估交付流程好坏的唯一准,些元数据将来会公司的型代理巨大的价 

你需要作为团队交付流程透明化,可化的领导者。Jagan 在甲骨文内部搭建了 CI/CD 平台叫 Carson个平台者提供可化的构建流程,自定构建流程排,源申,数据统计等等很多功能。

化的 CI 流水线

化的表:

些可化的数据,来度量 DevOps 得的收益,包括测试率,构建成功率,构建速度,布周期,源分配情况,基于数据做成正确的决策,才是 DevOps 来的价

3. 团队独立自主。

每个团队应该有自己的 CICD 流水线Oracle 践,他们为每个团队提供自助式的构建服器的使用。从 QA 团队,每个团队也自助式的消费测试集群。

自助式CI务编:

4. 础设施即代

团队应该应该将所有的源用代来描述,因维团队更是没有记录的,也没有被测试过境容易生不一致性。所以基础设应该 checkin,然后测试 

5. 化。

了提高效率,我应该容忍在布流程里有任何人工批的操作。通大量的自测试 Case 来保证软件的量,并且将测试结果与布的包关实现基于元数据的包布。 

6. 高目

之前甲骨文的堆构建布流程要经过2-3周的时间,最近已达到每天多次的布。 

今天,整个布周期从一年半,减到3个月。整个件架构转变为微服架构,每天多次布服

Jagan 认为为团队设置一个高的目让团队兴奋团队会全力全完成它,通常,最后的果是团队证明了他达到个目

7. 度量。

流程以及出物使用数据可化工具可化。

甲骨文中团队一个数据中心的存量是80TB,每天的求达到3千万次,下的数据量达到 85TB,全球有6个数据中心。

从 Artifactory 量的角度看甲骨文 DevOps 落地的速度。2013 DevOps 开始落地,开始从中件的某几个团队开始点,到14年后,团队的成功案例影响到了其他团队,从 Artifactory 量可以看到,容量明,其他的团队都来复制个模式。15年开始,Artifactory 开始持续进行自化的工件清理,省了大量存

化的度量,可以清楚知道品的构建速度,布成功率,布周期等等,些度量指将作下一个开周期目的参考基准,为团队指定合理的目

元数据也可以用来估某个线占用的源,投入出比,做跨团队直接的效考

8. 快速失
上游构建的测试用例里要包含下游构建的测试用例,这样让测试在上游测试阶段失,而不是要等到下游测试,才发现测试

9. 保持疑。

在每一境都保持疑,问问自己,团队能否做得更好,更快,更加自化?

10. 并不是工具的问题

你是否真的相信 DevOps 提高生效率?如何更有快速,更自化的交付件,而不是仅仅工具的事情,而是公司文化的转变

4、总结

你要作公司内部主推 DevOps 袖,解决各种困

  1. 建立跨团队的沟通机制,实现 CI/CD 流程的可化。

  2. 收集元数据做自布,并且基于元数据做持估,目的是减构建时间减上线时间,用自测试工具提供量,提高率。

  3. 利用估的体系,将最好的源投入到最好的品。


关于JFrog

世界领先 DevOps 平台

公司成立于2008年,在美国、以色列、法国、西班牙,以及中国北京市拥有超过200名员工。

JFrog 拥有3000多个付费客户,其中知名公司包括如腾讯、谷歌、思科、Netflix、亚马逊、苹果等。连续两年,JFrog 被德勤评选为50家发展最快的技术公司之一,并被评为硅谷增长最快的私营企业之一。

请扫二维码

 关注“JFrog”

感受原汁原味的硅谷技术


点击“阅读原文”,前往 JFrog官网

标签

发表评论