OK,让我开始吧欢迎来到KubukonChannel2021这是现场议员,我分享的题目是Intersource and Dialogue, they are soulmatesIntersource和Dialogue,他们是灵魂伴侣这是我的agenda,首先我会讲什么是Intersource以及好处然后我会讲什么是Dialogue以及好处之后我会详细分析两者之间的关系他们具备有相同的目的,相同的价值观以及互相促进最后我给一些建议,对于一个企业如何同时采纳两者OK,我们开始首先我介绍一下我自己,我是谭忠义我是一个20年工作经验的工程师我是Mozella Glome Apartment Committer我也是Intersource Commerce国际内援基金会和App Attrum中国开援基金会的会员在国内我是Intersource Invasionist我在百度和腾讯都主导或实施过Intersource的事件至上我的talk是inspired by this talk这是一次国际内部开援基金会的community talk是Common Cast的废王和BBC的Stefan和Tom主主讲他们分析了Intersource和Dialogue的一些关系然后并且讲出一些具体的实验被这个talk激发之后我更详细的分析两者之间的关系然后有了这个talk为什么说他们是SoMates简单来说Intersource和Dialogue他们是基于相同的目标都是improve efficiency都是为了提升效能他们两者之间的关系也可以互相促进Multiproversy最后他们俩都是基于相同的价值观开放透明协作opentransparentand collaborate什么是Intersource从Wikipedia的经验来说Intersource是一个利用Opposource Software发展出最佳的计划和发展成为Opposource Network Controlwithinorganization用中文的话来说就是说从开源社区软件的研发中吸取经验教训并将吸引用于公司内部软件研发团队的一种困在开放模式简单来说就是在公司内部开放原码并接受别的部门的贡献用国际著名开源活动家Intersource Commerce国际内员基金会主席Dance Cooper女士的话来说即在公司内部采用在ApacheWe待会我对ApacheWe会有些简短的解释Intersource的好处有很多种它首先可以有助于提升代码质量Leaks and Law就是有更多人看到代码内的代码质量会提升这个法则不仅在开源社区使用对于实行内部开源的内部开源项目也同样使用第二点就是说它真正能把代码Review弄到实处这点呢我很少以前有人说过我这里也强调一下代码Review在工程能力实验中是一个非常好的有助于提升代码质量的一个实验活动但是在很多公司即使他们把代码Review已经做成的强制规范就说没有进入代码Review是不容许计较但往往代码Review也容易流于形式只有在实行内部开源的项目中这种Internal的代码Review才会真正的起到非常好的作用因为其实也很简单就说如果一个代码的贡献Patch是其他团队提交给我的而我要长迅的维护这个代码那么我在Review的时候自然会特别的仔细这是第一个好处第二好处有助于代码复用记得之前有一个很厉害的CTO说过我们工程师写代码很重要但在写代码之前要知道自己写什么更重要所以说Search Before You Code如果在公司内你能发现比较好的代码可以直接来用这样你就不用去自己从头照轮子而且如果你有些功能你可以把它需要它需要它来实现你可以自己来看着代码来实现它所以Search Before You Code是有助于代码复用当然还有助于打破不门墙减少重复照轮子还有助于提升人员能力有助于提高员工的满意度这些都是Inner Source的好处然后接下来说Search DiOpsWikipedia这个定义我就不说了我简单说一下它的中文的意思DiOps简单来说就是一组结合的软件研发DiOps和IT运为Opps的一些实践它的目标是缩短系统的开发周期提供高质量的持续交付DiOps的好处它有更短的交付周期更高的上限成功率更频繁的交付次数更快的错误恢复时间这里是来自这是国际DiOps领域一个非常有名的报告是一个DORA就是一个非常有名的DiOps调研机构它在2019年发布的State of DiOps这个研究机构基本上每年都会发布一个State of Report在2019年的时候他说到了对于DiOps有常见的他发布了四个指标然后根据各个公司实行DiOps的情况分为了四个等级对于Innet及U做的特别好的团队他们在四个指标上都优于其他团队比如说对DiOps就是部署频率的话经营团队能做到undimount就说按需的进行部署也就是说一天可以部署无数次而对Need Time for Changes是代码提交到上天完成他们控制在一个小时以内这都是非常好的好 我们接着来说Innet和DiOps他们之间的表象关系同样来自DORA Report2019年State of DiOps在从这个report上说high performance failure strategythat create community structure at both no and high level in the organization意思是说经营团队更加认可内部开源社区就是在DiOps领域做的好的团队他们非常非常认同内部开源的这种理念为什么呢下面我有一些更详细的分析因为他们俩是基于相同的目标他们是有共同的价值观最后他们是相互促进首先我们看一下他们的相同的目标他们的目标都是为了提升效率Input source的出发点是提升附用减少重复轮子无论从事最底层的代码级别的附用还是组建级别的附用平台级别的附用开发原码是能大大提升附用的程度和附用的强低难度能提升附用程度而DiOps的出发点是DiOps和Obs紧密结合它依靠大量的自动化这个是有名的DiOps双环从左边的DiOps从Plan制定需求开发计划到Code编码再到Build编译最后到Test测试生成Release包右边的是IT运维所做的工作它从Deploy部署到Operate运维再到Monitor监控监控完了之后线上产生大量数据然后做统计分析然后产品经理从这些数据里得到Inside有新的idea产生新的Plan这个就是著名的DiOps双环这个环在保证质量的情况下转得越快越好而要转得快依靠大量的自动化而附用和自动化正式提升效率的基本做法InnoSource提上附用DiOps依靠自动化所以说我认为InnoSource和DiOps它们的目标都是相同的都是为了提升研发效率说完它们的目标接着说它们的价值观价值观都是开放透明协作的价值观InnoSource是在企业内部实现的AparateWay而AparateWay最核心的部分即开放透明的价值观好 这里是我对AparateWay的截图当然了在AparateWay几乎AparateWay的同学每个同学对AparateWay什么是AparateWay都有自着截图这里是我对它的截图我的截图是AparateWay是适合AparateWay即基金会软件操作和传统的一种模式它从上到下分成了好几层最上层是使用的规范和惯例包括Mail List使用邮件列表包括Voting投票的规则中间那一层是原则包括协作的软件开发包括Commercial Friendly Standard包括商业油耗的Lessons包括持续提交高质量的代码等等然后再一层就是核心的价值观Values开放透明协作的价值观也有就很有名的SloggerCommercial Overcode说的就是这个价值观当最里层是AparateWay的使命和愿景Provided Software for the public good这个是AparateWay的解读大家能看到非常核心的部分是它的价值观开放透明协作而这个也是在其他开源社区能够被推崇的一个东西在内部开源社区AparateWay开放透明协度的价值观也是它非常核心的部分好了 讲完了Inner Source的价值观我们来看一下DevOps的价值观同样也是开放透明协作我们来看看DevOps常见的一些工程实践包括持续集成 持续部署不责备的事故复盘不够的Quality In等等这些实践都是DevOps同学在长期的工程实践总结出了非常好的工程实践但要把这些工程实践真的做得好是离不开开放透明协作的价值观的我举两个例子第一个例子 持续集成持续集成其实说的是说代码从提交到马上出发的自动化测试然后再到再到编译 再到代码提交 到编译 再到自动化测试再到工程化测试再到打成二级织包这个过程它需要开发和测试紧密的配合在这种情况下一般我们需要开放开发和测试相关的一些环节 包括代码包括编译配置包括测试脚本 等等如果不给予测开放透明协作价值观而是把人为的把持续集成的环节割裂成就说开发了值管 开发了环节测试了值管 测试了环节那么这个环节的运作会非常的不顺畅也达不到持续集成的目的这是第一个例子第二例子是不责备的事故副盘这个在国内其实是很多企业是做得不好因为线上事故在发生时候我们需要做副盘但采用什么样的态度来进行副盘这是事故副盘的关键我们能看到很多团队在做事故副盘的时候干了定个活 是定责任然后一定责任要追责然后事故副盘会就成为一个疯狂的甩锅会大家急于撇清自己的责任把责任推到别人身上但撇到别人身上最后被勉强承担责任他只会迅速把这个事情做掉而不会对事故的每个过程进行详细的分析然后看看如何能够去快速发现快速止损然后系统能否自动容错从这角度来进行分析所以说如果没有这种开放透明协作的态度价值观是很难在团队内建立起这种信任感而没有信任感这种事故副盘是很难做下去的即使做了也都是一些表面功夫而那些所谓的措施也是执行不到位的就说如果这么做那么事故一定会再次发生所以说我觉得大家毫不死掉执行的好这些工程实践都是非常好的但是没有基于开放透明协作的价值观去进行这些工程实践执行立会走位执行一定会变形好我们接着说两者之间的直接关系是互相促进的表现在Inner Source可以帮助DiabosDiabos相关的CLCV工具可以采用Inner Source方式来贡建来自Inner Source社区的各种要求可以帮助Diabos工具进行更好的迭代这里我举一个例子同时反过来Diabos可以帮助Inner Source因为有了代码Reviewer的工具的支持跨部门贡献也会更容易有了测试用力自动化测试用力测试环境等的支持跨部门做贡献也会更有信心对于代码Reviewer来说他的工作也会更轻松一些我讲讲企业内部的例子首先这个例子是来自于Comcast也是来自于那次社区分享里面非王同学提到的Comcast内部有一个持续部署的软件它的作用是把业务部署到Adiabos上来并连接Adiabos上来各个服务一个团队做了这套脚本这个脚本的主要功能是满足这个业务团队的一些需求当然这个团队它只使用了Adiabos的34个服务所以这个脚本只能做类似的功能这个团队把这个脚本部署到在内部开源然后让其他人也可以来做贡献其他团队看这个脚本之后觉得很有意思然后纷纷根据他们自身的需求对于这个软件进行丰富加入自己的场景加入更多Adiabos的服务向运行一段时间之后发现这个脚本这个持续部署软件的内容得到极大的丰富然后覆盖了更多Adiabos的服务然后也覆盖了更多的业务场景通过内部开源的实践结果证明该软件帮助了多个业务的Adiabos也大大提升了多个业务的部署项目大家可以想象一下如果这个CD的工具仅仅是在该内部来使用那么基本上每个团队要做上Adiabos云然后使用各种服务都要写自己相关的一些部署软件部署脚本这会是一个其他的一个人力浪费好了我简讨腾讯内部开源的一个例子这是国内的一个内部开源的一个例子难论CI是由IEG 蓝金团队开发的一个持续集成的一个工具这个工具它也是采用内部开源的方式进行协统开发其他使用到该工具的团队根据自身的需要来贡献自己的相关的功能经过一段时间的这种协作难论CI在腾讯内部成为事实上的摸入标准这个工具它的内核和核心插件是由难论CI团队围护的但周围将近有1万个插件都是由各个其他团队来自己贡献的该工具的功能得到丰富然后也在各个业务线被管贩的高频的使用我记得有一个统计数据一开始他们的难论CI的调用次数每天大概是在1万次但经过了一年半左右他们的每天的调用次数已经到了将近有50万次每天调用50万次被上万个业务线广泛高频的使用解决了很多业务线的关键的持续继承的问题大大提升了各个团队的研发效率这是一个就是内援和代表机密结合了一个例子说到两者的相同地方也要说一下两者不同的地方英诺索斯的出发点在于附用Reuse而Diabos的出发点在于Automation自动化这是两者的不同地方但其他地方我觉得很多地方互相促进互相借鉴的好了最后我们来说一下对于一个企业来说它如何同时采纳两者既然这两个这么好那么又互相促进如果同时采纳两个这里我给出一些建议首先在战略上它需要把相对提升作为技术战略的一部分其次在工具上需要支持跨团队更好的协作CIS和CD完整的支持最后需要在组织和文化上要鼓励开放透明协作的文化下面我会根据这三点来展开来说首先战略上要重视提升效率是一把手工程领导要重视需要把提升效率是作为战略因为提升效率是基础企业最重要的事情之一要放最好的人力坚持不断的推进因为有句话叫磨刀不误砍柴工提升这种效率其实就是磨刀要放最好的工程师坚持不断的推进因为提升效率是可以永无止境的一个工程其实在工具上Devo所使用的工具能用Inner Source的方式来进行贡献因为Devo工具所负责的团队它是没办法覆盖公司内各种各样的场景的而要他们去重现这种环境代码也非常非常高这个代价非常非常高而各个业团队如果如果要用要上DiOS还要自己来写工具的话这是会造成其他的人命浪费的所谓DiOS工具一定要用Inner Source的方式来进行贡献其实每个内部开源Inner Source的项目都应该提供CNH-CD的工具而且可以贡献着很方便的使用就是说我看到别人我在使用别人的项目的时候我不方便了我要给他提需求起Patch这时候他原用的CNH-CD工具我应该可以很方便的使用我可以使用他的测试我可以使用他的回归这些系统我都可以使用使用完之后并且用正常的代码维护流程进到这个团队的代码维护者的共同流程中它能很方便的一样的进行代码维护然后代码维护之后进入到CNH-CD的流程中就说不要为Inertos单独再造一趟流程而是应该和他现有很好的结合最后在组织和文化上需要通过技巧考评PL Review等方式从上到下鼓励协统和合作因为这种Inertos和Diabos的事情它不仅仅是项目内部开发和运萎团队的协奏还包括了项目上下游的协奏最后还包括公司内部各个产品限制性的协奏只要是通过Inertos和Diabos都是可以大大提升这种协奏的效率而提升协奏效率最后会提升在产品研发效率提升最后会提升在产品功能上的快速迭代快速抢占市场机会最后还有一点时间大家有什么问题吗我留在这里大家可以通过官方的反馈渠道来提问题我会一一解答当然如果大家希望通过线下这里是我的Linking大家可以点击这个加我的Linking当然这个是我的微信号大家可以在微信里面搜索这个可以加到我的微信号我们的分享就到这里感谢大家拜拜