关于研发:特别呈现腾讯云-X-K-峰会共同打造软件工程新生态

近日,K+ 寰球软件研发行业翻新峰会在上海胜利举办。会上,峰会钻石合作伙伴腾讯云倍受注目。其参会展台人潮涌动,演讲内容也深受关注和好评。 腾讯云是腾讯团体倾力打造的云计算品牌。作为腾讯云的重要产品线之一,腾讯云 CODING 涵盖一站式研发治理平台及云原生工具,为互联网、金融、政企、批发等不同行业客户提供成熟的研发治理数字化转型、云原生转型、研发治理标准、麻利开发及 DevOps 等解决方案,帮忙企业升高研发工具建设老本,进步产品交付效率,实现研发效力降级。在此次 K+ 峰会中腾讯云 CODING 作为云原生工具领跑者,与峰会外延贴合,展台打卡火爆、演讲内容优质,单方首次单干获得共赢,之后也将持续深入单干,为用户带来更优质的行业内容。 01 硬核对话近几年,AI 技术在软件工程行业热度越来越高,作为多数据和高技术的行业,软件工程成为了 AI 技术将来最佳利用场景之一。在全球化大 背景下,国内市场需求微小, 智能化数据的时代曾经到来, 软件工程的业务一直地拓展,软件工程与 AI 的联合是当前软件开发须要面对的一个重要问题。为此,峰会特设对话环节,主题为《软件工程是否迎来 iphone 时刻》。腾讯云 CODING 高级解决方案架构师何文强携手其余行业大咖就此话题,进行了激情探讨,分享了在软件工程上的前沿技术观点与实际摸索教训。 针对《软件工程是否迎来 iPhone 时刻》话题,何文强老师认为软件工程畛域的 iPhone 时刻并没有到来。首先软件工程之所以称为工程,它肯定是一个简单的零碎和方法论,而这外面它所强调的是一个整体的、零碎的、全局的能力。明天在探讨 LLM 的时候,现阶段 LLM 大模型,在软件工程外面,它依然是聚焦在单点的能力,比如说对开发者敌对,然而它面对软件工程这样简单的生态系统的时候,要进行一个团队的合作,高密度的信息交换,要去做一些简单的面对软件工程的特点,例如易变性、脆弱性、不一致性。那么面向这些能力的时候,在当初的 LLM 这个模型上面,这种简单畛域外面的冲破是比拟艰难的。因而我认为当初 LLM 对于软件工程个体而言,它所可能开释的能量,或者说可能带来的一些价值和收益并没有太大的改善。 CODING 当初在尝试把 LLM 的能力植入到整个链条里边去,当初最看重两点能力。第一个能力,它实质还是要解决单个能力晋升的问题,当初依然在做这样相似的一些大模型的一些能力,晋升单点的效率。第二个能力点是流程自动化,而这个流程自动化可能跟当初熟知的 ChatOps、 RPA 以及各种自动化的集成,它会造成一个可能基于上下文,可能在同一个 Context 下进行高效的、严密的合作,在这个根底之上的自动化的能力。 02 云端开发环境新基建腾讯云实际分享 技术创新分论坛上,腾讯云 Cloud Studio 产品总监汪晟杰进行了《云端开发环境新基建-腾讯云实际分享》主题演讲。汪晟杰老师负责推动云端开发环境建设,历任阿里高级技术专家,从事钉钉云效外围业务线、Teambition 合伙人、Autodesk 首席软件架构师、十多年 SAP 云平台、 SuccessFactors HCM、Sybase 数据库 PowerDesigner 等产品的开发经理,在软件架构设计、产品治理和我的项目工程治理、团队麻利提效等方面领有逾 18 年的教训。 针对云端开发环境 CDE 的新基建的产品思考,对云端开发与云原生开发调试联合的实际与分享以及腾讯云 Cloud Studio 与 DevOps 云端开发最佳实际案例分享,AI 与云端开发环境的将来契机在哪里 ...

June 30, 2023 · 1 min · jiezi

关于研发:研发效能平台的双流模型

本文摘于《软件研发效力权威指南》——第 9 章 外围观点开发人员在多个“单点式”工具平台之间的来回切换是很消耗工夫和精力的。“一站式”是指把研发各个环节的软件工程能力集成在一个对立的平台上,对新人敌对,对老人提效。“一键式”是指让研发工程师只关怀具备创造性价值的工作,而不须要解决可能由研效平台主动实现的事件。“双流”模型能够实现需求价值流和研发工程流双向主动联动。传统单点研发效力工具平台面临的挑战一个残缺的研发效力工具平台,须要包含需要合作、代码治理、构建能力、测试能力、环境部署能力、制品治理、配置管理、监控告警、高效运维等性能。能够说,效力工具平台是研发工作发展的载体,涵盖了软件研发全生命周期的各个环节,其设计与应用体验做得好,整体研发过程的晦涩度就高,工程师的无效价值就能更好地被施展。 软件研发全生命周期中的各个环节都有各自畛域的单点工具,比方需要管理工具罕用的是 Jira、代码管理工具罕用的是 GitHub 和 GitLab 等,这些垂直畛域的单点工具平台不论是商业化产品,还是企业自研,根本都是以 SaaS 的模式在企业内为宽广工程师提供服务。 开发工程师要实现一个需要开发工作,往往须要在多个单点垂直工具间来回重复切换。当咱们的软件工程纪律和流程管控越严格时,工具来回切换的次数就会越多,而且每次切换都可能须要以人工的形式在各个工具平台间传递信息,甚至是“翻译”信息。 比方,在一个典型的开发工作场景中,开发工程师首先要拜访需要管理工具,从中找到对应的工作项,而后将其状态从“待开发”转变为“开发中”,接着到代码管理工具中找到对应的代码仓库并下载代码。同时,先应用需要管理工具中的开发工作 ID 作为分支名字来创立性能分支,而后在该性能分支上实现本地的开发与测试工作。在此期间,为了做到品质左移,往往会在开发过程中应用近程动态代码扫描工具中的代码规定,在本地执行动态代码查看,同时也会应用 Mock 能力来实现本地的单元测试。当本地开发和测试达到品质要求时,就会先通过代码工具提交代码评审,而后在工具平台的反对下实现代码评审的交互,之后代码合流过程中会应用 CI 平台来执行流水线,流水线实现一系列的步骤(如单元测试、动态代码扫描、平安扫描和编译等),并且达到品质门禁的要求后,会将产生的制品存入制品库。最初,开发工程师还须要再次拜访需要治理平台,找到之前的工作,并将工作的状态从“开发中”设置为“待测试”。 我置信,很多开发人员对以上过程曾经很相熟了。在这个过程中,除了业务代码开发和测试,你须要和各种工具平台频繁打交道,须要拜访需要治理平台支付工作,须要拜访代码管理工具拉取代码并创立分支,须要调用动态代码扫描平台的能力,还须要应用 CI 平台和制品库的能力,最初还要再次拜访需要治理平台更新工作状态。 在这个过程中,有屡次工具切换,要花费大量工夫在流程性的事务上,造成工夫和精力的节约,还须要你对各个工具平台的应用办法和流程都很分明。 更蹩脚的是,各个工具平台的概念模型可能还不完全一致。比方代码治理平台上的“我的项目”概念和测试平台上的“我的项目”可能就不是雷同逻辑下的概念;再比方“利用”的概念在不同的工具平台上可能不是一个意思,这就使研发过程的流畅性大打折扣,工程师的了解和学习老本很高。同时,各个工具平台之间还会造成研发数据孤岛,很难进行对立的研发过程数据收集和度量。因而,咱们迫切需要“一站式”和“一键式”的对立研发效力平台对各个工具平台进行横向整合和拉通,以此来晋升研发过程的整体效力。 “一站式”和“一键式”“一站式”的概念“一站式”是指把研发各个环节的软件工程能力集成在一个对立的平台上,研发工程师在研发过程中不再须要来回拜访多个工具平台,也不须要人工记住并恪守研发流程,更不须要记住多个工具平台的拜访入口,这样的设计对新人敌对,对老人提效。 具体来讲,就是研发工程师不须要记住每个单点工具平台(比方,需要管理系统、CI 零碎、自动化测试零碎等)的域名,在一个对立的研效平台上实现所有的研发工作,而且各个阶段的产出物也能更加顺畅地在各个工具平台间流动。这样,不仅能对立各个工具的权限管理体系,还能让研发过程的度量数据收集实现自动化,不须要任何人为干涉,而且各个工具中的概念名词也能在一站式的理念下失去对立,研发的各个阶段可能实现无缝链接与合作,实现真正意义上的研发全流程流水线。 “一键式”的概念有“一站式”作为根底,就能在此基础上进一步实现“一键式”。“一键式”是真正晋升研发效率的利器。 “一键式”是指让研发工程师只关怀发明价值的工作内容,比方聚焦于架构设计、编写代码、编写单元测试用例、发展代码评审等流动;而不须要解决可能由工具平台主动实现的事务性工作,比方需要状态流转、代码分支创立、动态代码查看、测试环境搭建、利用部署、测试用例执行等。 “一键式”最现实的成果是用户在提交代码后,能够不须要人工来实现后续的事务性工作,也不须要再盯着整个流程期待下一步,而是能够转向解决其余事件,研效平台会主动执行动态代码扫描和单元测试、判断品质门禁、构建制品、将制品部署到测试环境且执行接口测试,接着将制品部署到预公布环境,通过自动化的零碎测试后,最终实现生产环境的正式公布,在此过程中会使用灰度公布等机制来升高危险。在整个过程中,只有呈现谬误时才须要研发工程师染指解决,真正意义上实现了“一把梭”。 研发效力平台的“双流”模型本书提出的研发效力“双流”模型是“一站式”和“一键式”概念的最好诠释。“双流”模型蕴含需要价值流和研发工程流,其中需要价值流是产品经理和项目经理关注的视角,反映了各个需要的实现状态和我的项目整体的实现状况;研发工程流是研发工程师关注的视角,反映了开发工作在工程维度上的实现状态,更多是从代码、测试和 CI/CD 等工程视角来看工作的停顿。 研发效力“双流”模型实现需求价值流和研发工程流双向主动联动 需要价值流和研发工程流双向主动联动在“双流”模型中,能够实现需求价值流和研发工程流双向主动联动,不须要研发工程师在实现开发和测试工作后独自到需要管理系统中去更新工作状态,需要的状态更新(比方,需要状态从“开发中”转到“待测试”)由代码分支合并进骨干后主动流转,不须要人工参加,这样就能让研发工程师更好地聚焦在发明价值的工作上。 “双流”模型是实现研发效力平台的一个参考根据,值得借鉴。以下就通过具体例子介绍“双流”模型的工作原理和实现形式。 首先,在一个研发迭代周期开始之前,咱们会从 Backlog 中抉择迭代须要实现的需要工作列表,并将每个需要分解成开发工作。在现实的状况下,咱们尽可能把每个开发工作的颗粒度都管制在一个代码仓库的范畴内,如果某个业务需要的实现须要波及多个服务模块(如多个微服务模块)的改变,则倡议为每个模块创立一个开发工作。也就是说,倡议创立多个独立的开发工作,以开发工作为单位进行迭代打算的安顿,并且每个开发工作都会当时确定好开发工程师的人选。 在传统模式下,在一个迭代开始后,被分配任务的开发工程师就会收到零碎邮件告诉,再依据邮件中的链接到需要管理工具中浏览并了解该需要,并且手动设置工作的状态为“开发中”,而后去代码平台拉取相应的代码,创立开发分支,之后在 IDE 中开始开发和测试工作。然而以“双流”模型实现的效力工具平台就会简略很多,齐全不须要在需要管理工具、代码平台工具和 IDE 之间切换,只须要在 IDE 中即可实现全副工作。具体的过程如下: 在一个开发工作被调配给某个开发工程师后,该工程师所应用的 IDE 中就会通过研效平台的 IDE 插件收到任务分配告诉,工程师能够间接在 IDE 中浏览需要详情并一键支付工作,这一支付行为首先会主动把对应代码仓库的代码拉取到 IDE 工作区,而后会主动以需要工作 ID 为名字创立代码的性能分支,并确保 IDE 曾经切换到该分支。同时,会主动调用需要治理平台的 API 接口,将该需要工作的状态从“待开发”转为“开发中”。这一系列的行为都间接由研效平台 IDE 插件主动发动,对开发人员来说做到了齐全通明,其要做的只是简略地在 IDE 中一键支付工作,就能够目不转睛地在本地进行开发和测试工作了。 在本地开发和测试工作实现后,以后的性能分支达到可交付状态时,由开发工程师在 IDE 中间接发动代码合流申请,该代码合流申请会先被研效平台中的 CI 子系统接管,而后 CI 子系统主动发动代码评审流程,代码评审的交互过程能够间接集成在 IDE 中实现。同时,研效平台工具能主动依据代码变更的 Code Diff 主动举荐最佳的评审人。比方,将最近这段时间改过雷同逻辑的工程师作为评审人是一个很经济的抉择,因为其认知老本是最低的。更进一步,研效平台工具还会对此次代码评审变更的大小进行标识,以便评审人能够依据其闲暇工夫片段的大小来抉择适合的评审内容。代码评审实现后,CI 子系统会主动触发 CI 流水线实现惯例的单元测试、动态代码扫描,并且判断品质门禁的达成状况,最初生成制品并上传至制品库。接下来,研效平台工具会再次主动调用需要治理平台的 API 接口,将该需要工作的状态从“开发中”转为“待测试”。 ...

June 21, 2023 · 1 min · jiezi

关于研发:从-DevOps-到平台工程软件开发的新范式

DevOps 是一种将开发和经营联合起来的办法,在利用布局、开发、交付和经营方面将人员、流程和技术联合起来。DevOps 使以前孤立的角色(如开发、IT经营、品质工程和平安)之间进行协调和单干。始终以来,DevOps 的采纳都是以帮忙企业更快地向客户提供价值,更好地适应市场和竞争,并放弃零碎的稳定性和可靠性为指标。  然而,近两年对于“DevOps 已死”的探讨越来越多。该观点持有者认为 DevOps 模糊性,施行起来的复杂性及高老本等问题,未能达到帮忙企业实现其放慢交付、提高质量和降低成本的指标。  在这篇文章中,咱们将理性分析一些拥护 DevOps 的常见论点,并一起探讨在当下 DevOps 施行时所面临的挑战,以及 DevOps 将来演变与平台工程的关联。  拥护 DevOps 的三大观点DevOps 的定义过于含糊对于 DevOps 的批评之一是它过于含糊,不足一个明确的定义。DevOps 对不同企业和团队来说意味着不同的货色,而且对 DevOps 的理论内容也没有达成共识。甚至有舆论示意 DevOps 只是一个被供应商和行业参谋适度应用的风行词。  DevOps 实际上并不是一套生硬的框架或规定,而更是一种文化和思维形式,可能适应不同的环境和指标。DevOps 并没有规定团队应该如何工作,而是提供了能够帮忙团队更好地单干的准则和实际;也没有规定团队应该应用什么工具,而是激励团队应用最适宜他们须要的工具。因而 DevOps 的模糊性咱们能够视为它的灵活性。DevOps 容许团队依据他们的具体挑战和机会来定制他们的办法,还容许团队进行试验并从教训中学习。  DevOps 给企业造成老本累赘拥护 DevOps 的另一次要观点就是,DevOps 的施行和保护老本过高。因为 DevOps 须要对企业的文化、组织架构和技术进行大幅度的扭转,同时,还须要企业在工夫、老本以及基础设施方面进行大量投资。因而有局部企业中的 IT 主管或领导并不违心在此破费过多,因为他们无奈保障 DevOps 施行后的实际效果。  不可否认,企业施行 DevOps 确实是个不小的工程。但主观来说,DevOps 并不一定是一个全有或全无的主张。企业能够逐渐和有选择地采纳 DevOps,依据本身需要和商业指标来抉择适合的工具和施行形式,企业中现有的资源和基础设施也能够被利用起来。这样企业能够将采纳 DevOps 的后期老本和危险降到最低。  对于施行成果,DevOps 并不是一套即时的解决方案,须要从长期利益来看。DevOps 能够帮忙企业缩小交付过程中的节约、谬误、提早和失败,同时进步软件交付的品质、效率、团队间的合作以及客户满意度。从久远来看,这些成绩能够转化为更低的老本、更高的支出和更好的竞争劣势。  DevOps 过于简单第三个拥护 DevOps 的声音来自于对其复杂程度的质疑,认为 DevOps 难以施行和治理。DevOps 通常波及多项技术挑战和较高的复杂性,因而导致开发团队和经营团队难以上手。同时还波及跨多个团队的大量协调和沟通,这在大型或分布式组织中可能是个极大的挑战。  实际上 DevOps 是为了简化和精简软件开发生命周期,而不是使其复杂化。DevOps 依赖自动化、标准化和集成,以缩小人工工作、谬误和依赖性。此外,DevOps 并不是一个实用于所有状况的万能解决方案。企业须要依据他们的具体环境和要求来定制 DevOps 办法,并利用各种工具和技术来促成 DevOps 的施行和治理。例如,应用版本控制来跟踪和记录变动;或应用告警治理来对立和优先解决紧急状况。  ...

May 19, 2023 · 1 min · jiezi

关于研发:我在京东做研发-揭秘支撑京东万人规模技术人员协作的行云DevOps平台

随着业务变动的速度越来越快各类IT零碎的建设也越来越简单大规模研发团队的治理问题日益突出如何晋升研发效力成为时下各类技术团队面临的重要挑战 京东云DevOps专家将带您深刻研发一线揭秘撑持京东团体万人级研发治理的行云DevOps平台分享企业应该如何布局DevOps落地与演进 嘉宾介绍 孙长虹京东云DevOps解决方案架构师 复旦大学计算机系毕业,并领有人民大学心理学硕士学位。曾任职于Alcatel-Lucent,IBM和惠普,具备丰盛的大型简单产品研发及项目管理教训,善于组织级麻利和DevOps转型,并领有EXIN Agile Coach, 业务麻利,DevOps Master,以及SPC认证,也是EXIN受权麻利和DevOps讲师。他负责京东云DevOps解决方案,也为批发、金融、交通等多个行业的大型企业客户提供过麻利和DevOps咨询服务。 

February 1, 2023 · 1 min · jiezi

关于研发:得物染色环境落地实践

1. 背景测试环境治理始终是各大公司十分重要的一个课题,测试环境稳定性很大水平影响迭代开发&测试效率。 综合来看,测试环境不稳固的起因次要有以下几点: 测试环境的变更非终态变更,常常会有代码公布/配置公布导致服务无奈启动或者链路有问题的状况。变更频繁,开发须要联调、测试须要迭代测试,代码须要变更,配置也须要变更,权限管制就比拟难做,减少了测试环境不稳定性。并行需要,同一时间单个利用须要多个分支同时反对多个需要的测试,测试环境资源的抢占和抵触比拟显著。得物测试环境稳定性治理也经验了几个阶段: 2020~2021:多套物理环境隔离计划(基于ECS) T0、T1、T2三套测试环境,每套环境物理隔离,无资源抵触和共享。 布局T1用于迭代测试、T0用于集成回归、T2用于独立我的项目调配应用,但在理论应用过程中,业务测试并行太多,抵触比拟显著,环境就开始乱用了,谁有需要就轻易占用一套环境应用了。后果就是没有一套稳固的环境,测试有效性无奈保障,并行我的项目环境抵触也无奈解决。 2021~2022:MF全链路容器环境计划(基于容器) 随着业务增长,3套测试环境已显著不能满足业务需要,因而去年得物基于容器疾速搭建了10套MF环境用于撑持独立我的项目的测试。 MF环境基于T0搭建,DB和T0共享,其余所有资源均独立,目标是做到业务只需保障T0的稳定性,所有MF环境可疾速基于T0同步最新服务和最新配置,做到环境随用随取,解决并行我的项目环境抵触问题。 理论施行过程中,我的项目环境抵触的问题解决了,然而MF环境的稳定性问题仍旧比较严重,保护老本微小,次要起因集中在: T0环境稳定性,并非所有域都在T0集成回归,导致T0稳定性无奈保障 MF同步了T0之后会因为各种各样的起因须要二次调试验收(新增服务失落、配置不全/错乱等) MF环境应用过程中,根底服务(sso、网关、中间件)等相干变更无奈及时更新到MF环境,影响业务测试 因而在2022年下半年,开始尝试用染色环境解决环境稳定性问题。 2022年:染色环境计划(基于流量隔离) 染色环境是基于流量隔离的计划,通过流量标透传的形式,把基准环境流量和染色环境流量隔离开,实现多环境的计划,反对并行测试互不影响。 相较于MF环境而言,不须要保护多套全链路环境,保护老本升高了。所有变更的服务都在染色环境部署的话,基准环境稳定性就会晋升,相当于所有环境的稳定性都晋升了。 上面次要介绍得物染色环境是如何做的 2.染色环境计划2.1 基本思路 如下图所示,最后的构想是: 服务能够依照流量标把流量路由到相应染色服务上如果染色标对应染色环境没有此服务,则流量会走到基准环境如果染色环境服务增加了,没有部署,或者部署了服务过程挂了,则流量会报错而并非走到基准环境(防止一些服务异样问题没有裸露)DB、MQ、Redis等中间件冀望用同一套,避免浪费基于此构想,须要从哪些地方动手去革新以反对染色环境呢?能够从构想拆解去解决: 流量标如何透传?流量路由如何路由到染色节点?rpc接口如何路由到染色节点?MQ音讯如何让染色环境consumer生产?解决完流量标透传问题,以及染色路由问题后,须要思考流量发起方如何把染色标带上?2.2 实现计划以下计划只做流量隔离,DB数据层不做隔离1.流量标如何透传? 首先流量标在流量入口层会放到http header外面的x-infr-flowtype字段: x-infr-flowtype:<CE_ColoringEnv> ##CE_是固定前缀,为了和压测标做辨别从流量到网关后,服务链路下面流量标往下透传的形式是通过OpenTracing标准中的baggage能力,从header外面获取染色标,并塞到trace外面向下透传。 这样整个链路外面就都能拿到染色标了 2.流量路由如何路由到染色节点? 这里分两块思考: (1)rpc调用,拿到染色标之后,如何找到染色节点?这里要解决的是怎么辨认染色节点 (2)MQ音讯,producer如何发送带染色标的音讯,consumer如何解决带染色标的音讯 服务注册--辨认染色节点 首先染色环境创立的时候,会定义好染色标: 在此染色环境增加服务部署的时候,默认会把染色标注入到环境变量COLORING_ENV 容器公布配置页面会主动减少COLORING_ENV变量 至此,服务启动时已能够读到COLORING_ENV环境标变量了,下一步就看注册核心怎么去辨别染色节点了. 首先服务在增加到染色环境的时候,服务会在注册核心染色场减少一个节点,表明该服务在此染色环境是有服务节点存在的。 染色场次要解决的问题是:如果染色节点挂了,染色环境流量应该判断该染色环境是否应该有染色节点,有的话就报错,没有的话才会走到基准环境。防止测试问题未裸露。 染色场:CE_< ServiceName> 染色场服务节点:<COLORING_ENV>:80 其次在服务注册时候,服务节点信息和办法注册会携带染色标<coloring_env>: 至此,注册核心就能够基于染色标识别染色节点,业务服务(基于fusion框架)能够依据Trace中的染色标联合注册核心染色节点做染色流量路由。 MQ革新--辨认和解决MQ音讯MQ次要解决的是,染色环境的音讯生产者producer发送的音讯,只被染色环境的消费者生产,染色环境如果没有生产节点,则由基准环境消费者生产。 这里之前探讨了两种做法: 第一种是基于Topic隔离的计划,每套染色环境应用不同的topic进行通信,这样隔离性比拟好,音讯不容易串掉。 第二种是Topic不隔离,所有染色环境共用一个topic,生产者Producer在生产音讯时候把染色标带上,consumer每套染色环境有一个,consumer在做生产时候会判断音讯外面的染色标和本地染色标是否统一,如果统一则生产,如果不统一则间接返回ACK不走具体生产逻辑。 目前抉择的是第二种计划,上面基于第二种计划做具体介绍: 根本流程 如图所示: ServiceB_Color1会主动注册GID_Color1_Topic生产组,监听Topic_A。Color2和Color3环境一样。带Color1的音讯由ServiceA_Color1生产,ServiceB_Color1生产。带Color2的音讯由ServiceA_Color2生产,ServiceB生产,因为ServiceB在Color2染色环境没有节点带Color3的音讯因为染色环境Color3没有ServiceA_Color3节点,则带Color3的流量会打到基准环境ServiceA,此时ServiceA会生产带Color3的音讯,此音讯由ServiceB_Color3生产配合业务阐明: 染色环境在启动时候,带染色标的GID会主动创立,eg:原GID是GID_AAA,染色主动创立的GID为GID_<coloring_env>_AAA 上面看音讯的内容和解决逻辑: 如上图:染色音讯属性外面会减少DMQ_ENV_TAG字段,增加染色标,而后对应染色环境订阅组才会生产。 看下面这张图,会发现“貌似”所有染色环境都生产了,其实是其余环境间接返回了ACK,未走具体的生产逻辑,具体能够看日志。代码阐明:基于Message外面染色标msgTag和本地服务染色标envTag进行判断做生产逻辑辨别。 3.染色流量入口携带染色标 解决完染色标透传,以及染色标逻辑解决后,剩下就是如何在流量发起方把染色标给带上了,其实就是把染色标塞到header外面的x-infr-flowtype字段。 其中染色环境列表的获取由公布平台提供接口给到各流量入口方去抉择。 目前业务推广过程中,次要遇到的入口方大抵有以下几种: ...

January 4, 2023 · 1 min · jiezi

关于研发:案例分享研发效能提升之第一性原理

作者:樊思国 一、引言被埃隆·马斯克屡次提及的第一性原理First principle thinking,是计算物理学畛域的一个专业术语,在商业畛域仍然具备鲜活的生命力。读过《硅谷钢铁侠》这本书的晓得,正是因为利用了第一性原理对问题进行剖析,才使得马斯克在跨航天、汽车、能源和软件畛域翻新硕果累累,比方SpaceX的胜利,就是从根本上找到运载火箭的老本重头在推动零碎上并解决该问题,从而发明了可回收利用的火箭推进器,从根本上解决老本问题,对行业来说是颠覆性的翻新模式。 第一性原理的转义是指在进行计算的时候除了通知程序你所应用的原子和他们的地位外,没有其它的试验的,教训的或者半教训的参量,且具备很好的移植性。艰深了解,第一性原理就是基于客观事实进行的推导,其中不退出本人猜想和类比等经验性的货色。 在翻新和研发效力晋升的行业大背景下,作者认为在咱们的日常研发工作中,也能够利用第一性原理思维帮忙咱们晋升效力甚至是晋升创新能力。比方,线上问题排查和剖析解决,就能够很好的利用第一性原理领导咱们实际。 下文将通过一个实在的线上问题排查经验,提炼出一种利用第一性原理进行问题排查和解决的通用流程框架,并剖析案例中的第一性原理利用要害,最初总结了第一性原理利用须要具备的根本步骤,旨在为晋升咱们研发效力找到一个理论的结合点。 二、一次线上问题排查过程咱们常常会遇到排查解决线上问题的场景,每次如果都能使用第一性原理定位问题,将会失去不一样的成果。上面咱们来看一个实在的线上问题排查场景: 11月5日晚上6:10,咱们敬爱的运维同学从睡梦中被Flink作业重启的告警电话吵醒,通过排查发现redis内存满了,于是告知大家一起排查。排查过程中发现三类景象,并一步步剖析得出结论,作者通过深入分析和整合大家排查状况和景象,总结如下图: 上图能够看到,从收到Flink重启的告警登程,发现三个景象(或者说三个为什么),始终沿着这三个景象往下剖析,逐渐剥开问题表象,推导出导致问题的根本原因,最初收敛成了三个论断(标记地位),并进一步针对收敛进去的论断深刻开掘实质,从而导出咱们下一步的todo项。 三、第一性原理剖析下面的问题排查过程的思路梳理,其实是一种第一性原理的使用,也就是通过不退出任何教训、猜想,只看景象和发现(日志与监控),提出假如并证实的过程。因为只有这样,能力保障咱们每一步都是靠近问题实质的,最终收敛进去的论断才是实在牢靠的,咱们针对论断再提出解决方案,才是从根本上解决问题的一种形式。 反之,如果咱们退出本人教训或类比,则违反了第一性原理的出发点,使得前面所有建设起来的推导或是论断都是站不住脚的,兴许某些状况下,猜想和粗犷的重启流动可能暂时性地解决问题,但长期来看,相似问题还是会存在。就比方咱们去网吧上网发现机器坏了,网管个别会让你重启一下机器一样,因为网管这个时候退出了本人的教训判断,那就是重启就能解决问题,尽管大多数时候也很管用,但这很多时候其实并不是一种从根本上解决问题的方法,我想咱们作为研发人员,该当具备一种刨根问底,切入实质的思维模式,这种思维模式就是利用好第一性原理。 四、利用第一性原理那么,咱们怎样才能真正的应用第一性原理呢?有三点,一是具备丰盛的畛域常识。二是从客观规律登程。三是从根本上提出解决方案。 4.1 丰盛畛域常识就如下面问题排查过程,须要把握的常识包含了flink、redis缓存、音讯队列、日志排查能力、源码浏览能力和计算机根底等,如果不具备这些业余的常识功底,是不可能深刻基本地剖析和解决问题的,就像网吧管理员一样,不懂硬件和软件常识,当然就只能通过重启来解决问题。因而,作为研发人员,在工作中很好的利用第一性原理,前提条件是对相干畛域常识有深刻原理级别的了解,对利用的技术组件可能了解外围的技术原理和架构,对业务可能了解背地的基本动机和运行规定。 4.2 从客观规律登程这一点尤其重要,有时候咱们具备了丰盛的畛域常识,然而却没法扎实的去剖析问题,去做到只看客观规律、而后提出假如、而后找证据来证实或是证伪,那么也是没法做到从实质上解决问题的。因为,只看景象是第一性原理的出发点,提出假如是在问题的答案空间外面做剪枝排除,最初找证据则要求咱们具备相对的感性来看待。只有这样,离假相能力更进一步,直至找到根因为止。 比方咱们看到线上告警,第一步该当是去寻找和这个告警相干的原始日志,而不应该是通过景象进行教训判断或是猜想而不看日志,因为日志才是记录整个程序运行的过程,属于客观规律的领域,而教训判断和猜想则是基于观点的偏见,是意识畛域的领域。在必要的时候,咱们通过日志找到了主观景象和法则,咱们还须要通过源码的剖析来进一步把握更多的客观规律,因为把握的客观规律越多,越利于咱们做出正确的判断,也就越靠近事物本质。 4.3 从根本原因上提出解决方案利用第一性原理失去根因后,最初一步也是最要害的一步则是解决问题,这个时候提出的计划要么就是从根本上解决已有问题,要么就是翻新的解决方案,犹如足球运动中的临门一脚。 五、研发效力之第一性原理除了线上问题排查,第一性原理亦可利用于咱们整个研发过程中。 比方,需要阶段利用第一性原理能够帮忙咱们挖掘出客户实在需要而不是停留在表象层面;设计和研发阶段,利用第一性原理,在深刻了解好咱们研发工具箱中各类技术和组建的实现原理的根底上,针对需要阶段提炼进去的最为实在的问题点进行逐个剖析,揭示问题域中外围复杂度,最终产生的架构设计和实现必然是最为适合的;测试阶段,利用第一性原理去了解零碎实现的外围逻辑,针对外围逻辑设计测试用例笼罩性能点。针对零碎上线后呈现的问题,利用第二章的问题剖析框架,能够一步步帮忙咱们找到问题实质,并针对该实质采取改良措施,反馈回咱们的产品,这样就能做到从零碎层面解决问题,而不是停留在点对点的问题应急上。 在整个研发周期中,充分利用第一性原理剖析每个环节,提炼出每个环节的首要问题,并针对问题提出解决方案,各个过程之间相互迭代反馈,造成加强回路,长此以往,我置信咱们的研发效力定会有一个大的晋升。 五、总结本文通过一个实在的线上问题排查案例,展现了第一性原理在工作中的落地,通过剖析第一性原理的利用关键点,提出了三种可行的利用第一性原理的办法。然而,因为作者满腹经纶,在行文过程中难免会存在一些考虑不周的中央,也欢送提出您贵重的倡议一起学习提高。

November 23, 2022 · 1 min · jiezi

关于研发:幂等设计详解

导读本文次要从研发人员的角度,联合研发人员日常常见的各类业务场景,从经典零碎框架的每一层动手剖析幂等解决的机会。心愿通过这篇文章的剖析,让开发者在日常开发中对幂等的解决不再生疏。抓住导致申请、接口不幂等的实质,在工作中防止再陷入这个陷阱中。 幂等、幂等性这词,作为一个研发人员是再相熟不过的,那是否有深刻思考过幂等产生的背景、为什么须要幂等,如何做才是幂等的?明天将联合业务场景及申请的过程来剖析解决幂等(性)的办法。 1 概念幂等这个概念,是一个数学上的概念,即:f……(f(f(x))) = f(x)。用在计算机领域,指的是零碎里的接口或办法对外的一种承诺,应用雷同参数对同一资源重复调用某个接口或办法的后果与调用一次的后果雷同。 2 业务场景从业务场景上来说,如:当初互联网电商的下单服务,同一个用户在短时间内调用某一个下单服务,只能下单胜利一次;银行账户之间的转账,A账户给B账户转账,无论零碎呈现什么问题或故障,也只能转账胜利一次;前端页面对雷同表单的内容屡次向后端发动提交申请,后端只能给出一个雷同的后果等都属于幂等的领域。 试想一下,如果提供的这些服务不是幂等的,客户在下单时因为网络不稳固或是间断点了几次下单按钮,理论客户只下了一单,后果零碎里给客户生成了多单,那平台/商家将是无奈接受的,如果被“羊毛党”盯上,损失是无可估计的;银行之间的转账,A账户原本理论给B账户只转了一百万,后果B账户收到了几百万,这在业务上是不可承受的。剖析这些业务场景,开发者发现,无论是下单服务、转账服务还是表单提交都是一个个业务申请,提供这些业务服务的接口或办法都应该保障无论服务是超时、重试或有故障等异常情况,都要满足业务上的处理结果是正确的。业务上的一次或屡次申请,最终的处理结果是统一的,即:在肯定工夫内,服务的幂等其实就是申请的幂等。 3 架构剖析从零碎架构上进行剖析,幂等该在哪一层去做,怎么做? 图1 经典零碎框架图 上图为一个最常见的经典零碎框架图,Web端发动一个申请到后端,幂等该在哪一层来解决呢?无妨一层一层地剖析。 Nginx是否须要做幂等,Nginx的次要性能是做Web服务器、反向代理、负载平衡等,把申请转发到后端的服务器上,自身不参加具体的业务,所以Nginx是不须要做幂等解决的;Gateway是负责权限校验、平安进攻、认证鉴权、流量管制、协定转换、日志审计、监控等,自身也不含对任何业务的解决,所以其也不须要做幂等解决;Service层通常是对业务逻辑进行解决、编排,可能会扭转数据,但对于数据的扭转后果,最终也还是须要通过数据拜访层,写入到数据库,所以Service层也不须要做数据幂等;DAO层次要是和数据库交互,把Service层的后果写入数据库,对Service层提供读取、写入数据库的性能。 在写入数据库的时候,针对每一次的写入,可能返回不同的后果,此时就须要按场景进行具体的剖析看待;DataBase层,次要提供数据的存储,并不参加具体的业务逻辑计算。所以,通过对该架构的每一层的功能分析,得出对于申请的幂等解决,须要在DAO层做解决,以便保障屡次申请和一次申请的后果是统一的。 4 数据库操作剖析通过下面的剖析,得出幂等须要在DAO层来解决,再进一步剖析,得出DAO层的操作次要就是CRUD。上面逐个对每一种操作剖析是否须要做幂等,以及怎么做。 R(read):对应的操作SQL语句为select。只有查问条件不变,在肯定的工夫内,执行一次和执行屡次返回的后果必定是雷同的,所以其自身是幂等的,不须要再做解决。 select * from user where id = 1;查问一次或屡次后果是统一的,所以是幂等的。 C(create):对应的操作SQL语句为insert。此时,须要分状况,如果用到的数据库主键为数据库自增,不思考业务主键防重的状况下,每一次写入数据库就不是幂等的,所以为了保障幂等,须要在数据insert前做业务防重或是在数据库表上对业务主键加惟一索引。如果数据库主键不是自增,是由业务零碎写入的,须要在业务零碎里把数据库主键和业务主键做一对一映射,或是由独立服务提供数据库主键和业务主键的映射关系,保障屡次申请获取到的数据库主键和业务主键是统一的,确保写入数据库操作是幂等的。综合来说,就是雷同的数据屡次写入数据库后,是否保障只有一条数据。 insert into user (id,age,sex,ts) values(1,10,‘male’,2021-07-20 10:22:23);U(update):对应的操作SQL语句为update。更新操作时,肯定是要用绝对值进行更新操作,而不要用相对值进行更新,相对值更新可能导致更新操作不幂等。 幂等:update user set age = 10 where id = 1; 非幂等:update user set age++ where id = 1; D(delete):对应的操作SQL语句为delete。删除操作时,如果删除的是一个范畴,生产上最好是禁止该类操作;比拟举荐的做法是把按范畴操作删除转换为先按范畴查问,再按查问的主键进行删除。而且按范畴删除的操作不是幂等的。 幂等:delete from user where id = 1; 非幂等:该类操作要禁止。 delete from user where id in (select id from user order by id desc limit 10);5 常见业务场景保障幂等的实现形式有多种,此处例举几类常见的业务场景,在理论利用中,依据业务场景进行选用。 ...

September 26, 2022 · 1 min · jiezi

关于研发:用好这28个工具开发效率爆涨

大家好,我是秦世成,我在云效负责制品仓库Packages的开发工作。作为一个有多年教训的资深CRUD后端工程师,应用过很多日常开发所需的工具软件,其中不少能堪称为「神器」,这些「神器」能极大的晋升日常开发的效率;小到一个复制粘贴操作,大到开发运维,咱们都能够应用适合的工具来进行效率晋升,减速日常开发流程,让开发效率蹭蹭蹭。本文我将次要从Terminal 和 Desktop 2个大类、8个外围开发场景介绍一下我最常应用的效率工具,及如何通过这些工具来晋升程序员「幸福感」的实际。 Terminal终端治理在咱们日常开发运维的过程中,常常会和终端打交道,比方服务的部署,文件的浏览查看等;然而咱们在和终端打交道的过程中,常常会遇到上面的问题: 须要在多个终端之间切换,来回操作麻烦,容易出错,效率低下终端输出效率低下,无智能主动提醒,输出高亮显示等终端显示操作不晦涩,乱码频发,苦不堪言通过上面的终端神器,就能够打造一个高颜值,高效率的终端。 iTerm2负责颜值和根本的Shell出现托管,Tmux负责Shell的多窗口治理,而Zsh负责对Shell性能的拓展晋升。 iTerm2:高颜值终端工具 链接:https://iterm2.com/ 举荐指数:⭐⭐⭐⭐⭐ iTerm2 是一款功能强大的终端工具,也能够说是 Terminal 的替代品,也能够说是 iTerm 的后继产品。它实用于 macOS 10.12 或更高版本的 macOS。它反对分窗口操作、主动补齐、粘贴历史、回放性能、全屏等性能,是一款十分弱小、十分值得举荐的终端工具。 Tmux:终端复用软件 链接:https://github.com/tmux/tmux 举荐指数:⭐⭐⭐⭐⭐ Tmux 是一个用于在终端窗口中运行多个终端会话的工具,即终端复用软件(terminal multiplexer)。在 Tmux 中能够依据不同的工作工作创立不同的会话,每个会话又能够创立多个窗口来实现不同的工作,每个窗口又能够宰割成很多小窗口。这些性能都是十分实用的。 Tmux能够无差别的优化咱们应用终端的体验,特地是分屏+多窗口的性能能够极大的进步应用效率,就如下图所示,能够将本人关注的所有要害信息都展现在一个屏幕上,很极客有没有。不仅如此,tmux还提供了session治理性能,能够同时开启多个session,将相干的多个窗口集中在一个session进行治理,如果搭配上tmux-continuum 插件,还能够主动保留和复原session,不必再放心重启当前session失落的问题了。 Tmux的细节和技巧有很多,这里就不再一一介绍了,更多奇技淫巧能够看阮一峰老师的文章《Tmux应用教程》 Tmux社区也提供了许多的插件,满足不同的定制化需要,这里举荐几个比拟罕用的,更多的插件能够到官网摸索: tmux-plugin-manager: tmux插件管理器tmux-powerline:tmux状态栏,颜控必备tmux-continuum: 主动复原和间断保留tmux envtmux-yank:容许将突出显示的文本复制到零碎剪贴板 Zsh & Oh-my-zsh:能抗能打强大Shell zsh 链接:https://github.com/zsh-users/zsh oh-my-zsh链接:https://github.com/ohmyzsh/oh... 举荐指数:⭐⭐⭐⭐⭐ Zsh同bash一样,是一款功能强大的终端(shell)软件,提供的弱小的自定制的能力,并且其99% 的 Bash 操作 和 Zsh 是雷同的。 而oh-my-zsh则是zsh的配置管理工具,其提供了弱小的性能,插件,主题等,可能最大效率的晋升应用shell的效率。 大家可能比拟好奇,我都有Bash了,为了还要用Zsh呀?Bash尽管可能满足咱们应用Shell的根本要求,然而咱们不仅要能用,而且还要用的好,用的难受。作者在接触Zsh之前,始终应用的是Bash,就在那个黑乎乎的界面上敲着陌生的命令,不仅效率低下,而且容易出错,极其干燥。起初接触了Zsh+oh-my-zsh当前,原来Shell能够这么乏味,Zsh不仅能够兼容Bash 99%的操作,并且提供了高颜值的交互界面及高效率的插件,这种感觉就像以前就用notepad敲代码,起初切换到了IDE上,Shell应用体验大大晋升。 就如下图所示:高颜值交互界面,Git信息主动提醒,命令行高亮,输入内容更加敌对等等。 我敲的不是命令行,而是艺术品。 oh-my-zsh同样提供了诸多实用的插件: git: 提供了以后的workspace下的git提醒,比方分支信息,commit信息等zsh-autosuggestion:主动从history中,举荐输出的shell命令zsh-syntax-highlighting:提供了shell命令的高亮显示zsh-z: 提供了在你拜访的目录间疾速跳转的能力zsh-vim-mode:将shell中的操作键映射为vim,减速shell输入速度开发调试作为一个合格的CRUD工程师,在日常开发(mō yú)过程中,进行最多的操作就是 调接口->看响应->改代码->调接口->看响应->改代码... ...

March 1, 2022 · 2 min · jiezi

关于研发:2018202160篇阿里研发效能提升干货都在这里了

往年,研发效力特地火,不少企业的CTO都把研发效力晋升作为部门的年度重点。然而,大家都心愿晋升研发效力,很多却不晓得从何开始。 事实上,从2018年开始,云效曾经在系统地向业界输入阿里的研发效力晋升办法,有文章、直播、视频课程、年度峰会、还有电子书等,多达60多篇内容。这些内容放到明天来看,仍然无效。 明天,正值2021的最初1天,咱们精心盘点了2018-2021间断3年来,云效团队在研发效力晋升方面输入的所有干货,心愿对大家有所帮忙。 以下为内容盘点,倡议珍藏。 1、建设研发效力晋升的零碎框架编者按:研发效力晋升是一个系统工程,只有理解了零碎的框架,在真正改良的时候,能力既见树木,又见森林。所以,在学习具体实际前,强烈建议先学习这部分内容。 01、《从DevOps到BizDevOps,研发效力晋升的零碎办法》视频版:https://yunqi.aliyun.com/2021... 文字版:https://developer.aliyun.com/... 2、设定北极星指标,度量驱动研发效力改良编者按:晋升研发效力,度量往往都是最受关注的。上面这篇《阿里如何定义团队的研发效力》,全网累计浏览量超10W+,值得你的关注。另外,云效视频号将在1月份开始对研发效力度量进行系列分享,欢送关注。 01、《阿里如何定义团队的研发效力》文字版:https://developer.aliyun.com/... 3、精益合作与需要实际,让部分效率转化为高效交付【3.1业务驱动的合作和产品导向的交付】编者按:产品研发的源头是业务指标,研发效率的晋升不仅仅是产品和研发外部的效率,更应该把业务团队纳进来、作为整体来看。这也是云效提出BizDevOps主张的起因。本章的4篇内容将带你从深层认知需要的层次结构,并理解如何以业务驱动的合作模式、产品导向的交付模式,让业务、产品、技术真正造成有机整体,实现高效协同。 01、当咱们谈合作时,咱们在合作什么文字版:https://developer.aliyun.com/... 02、业务驱动的合作模式,让业务、产品、技术高效协同文字版:https://developer.aliyun.com/... 03、产品导向的交付模式,让IT团队从老本核心到利润核心文字版:https://developer.aliyun.com/... 04、DevOps规模化施行准则与门路文字版:https://developer.aliyun.com/... 【3.2精益合作实际】编者按:如果你还不晓得研发效力晋升要从哪里开始,看这个系列的内容就对了。你将理解如何借助看板办法,可视化需要端到端的交付过程,找到研发效力瓶颈所在。 01、照亮问题,效力晋升从可视化交付过程开始视频版:https://developer.aliyun.com/... 02、束水攻沙,继续放慢产品交付速度视频版:https://developer.aliyun.com/... 拓展浏览:站会6+1,阿里是如何开站会的文字版:https://developer.aliyun.com/... 04、设定北极星指标,数据驱动效力改良视频版:https://developer.aliyun.com/... 05、小结:研发效力晋升,从天文学的演进说起视频版:https://developer.aliyun.com/... 【3.3精益需要实际】编者按:Garbage in,garbage out。产品交付的绝大多数问题都是因为需要不清晰。解决需要问题的外围思路是以终为始。本系列将介绍以终为始的需要设计办法中外围实际,如实例化需要、故事地图等。 01、为什么「雇佣」奶昔,从用户问题登程设计需要视频版:https://developer.aliyun.com/... 02、如何找准指标,开掘带来业务胜利的产品需要视频版:https://developer.aliyun.com/... 03、以终为始,高效地剖析和廓清需要视频版:https://developer.aliyun.com/... 04、以「廓清需要」为始,以「落地精益麻利」为终视频版:https://developer.aliyun.com/... 05、小结:建设需要摸索与继续交付的莫比乌斯环,促成业务胜利视频版:https://developer.aliyun.com/... 拓展浏览1:基于事件风暴的需要剖析文字版:https://developer.aliyun.com/... 拓展浏览2:实例化需要——不可或缺的精益、麻利需要实际文字版:https://developer.aliyun.com/... 4、畛域为外围的技术与云原生工程实际,让高效交付转化为继续高效【4.1畛域驱动设计(DDD)精髓12讲】编者按:随着微服务架构的遍及,畛域驱动设计真的是异样火爆。市面上讲DDD的课程十分之多,然而把DDD讲的深入浅出的并不多,本课程就是其中之一。这门课程来自阿里外部的培训课程,在阿里外部受到了十分多工程师的追捧。直到明天,仍然一直地有同学在退出课程学习。 01、畛域模型的实质是业务认知02、案例剖析:高质量畛域模型晋升业务灵活性03、高质量畛域模型源自继续演进04、案例剖析:梳理业务概念,发现畛域模型05、从模型到代码:畛域驱动设计的结构块06、聚合:保障业务完整性的单元07、畛域驱动设计的业务模型和代码组织08、外围域、通用域和撑持域09、基于业务能力和业务场景拆分域10、守护畛域边界,构建自治服务11、限界上下文映射的模式12、应用微服务构建畛域资产 视频课程:https://developer.aliyun.com/... 【4.2云原生继续交付工程实际6讲】编者按:云原生下的继续交付应该是怎么的?本章是云效推出的云原生继续交付系列课程,课程通过6节课、每节1小时的工夫,帮你建设云原生下的继续交付常识体系。 01开篇:云原生时代,软件交付的挑战与计划02开发:无差别的开发和运行环境03部署:构建可继续部署的利用公布体系04协同:建设团队协同交付的流程05品质:晋升利用公布的品质06平安:打造可信交付的保障体系 视频课程:https://edu.aliyun.com/course... 【4.3 阿里巴巴DevOps实际】编者按:本章从DevOps文化以及软件研发中的多个阶段如开发、构建、测试、部署、运维,介绍了阿里巴巴的具体实际,大家能够按需学习。 →文化 1、阿里巴巴DevOps文化浅谈文字版:https://developer.aliyun.com/... →开发 1、阿里巴巴如何进行代码治理文字版:在阿里,咱们如何治理代码分支? 2、如何晋升本地开发联调效率文字版:https://developer.aliyun.com/... 3、云端开发在阿里巴巴的利用实际文字版:https://developer.aliyun.com/... 4、新一代高效Git协同模型详解https://developer.aliyun.com/... 5、代码评审https://developer.aliyun.com/... 6、5种阿里罕用代码检测举荐https://developer.aliyun.com/... →测试 1、云原生下的开发测试视频版:https://developer.aliyun.com/... 2、阿里巴巴如何进行测试治理文字版:在阿里,咱们如何治理测试环境 3、阿里巴巴如何进行测试提效文字版:https://developer.aliyun.com/... 4、测试环境与路由文字版:https://developer.aliyun.com/... 5、应用环境能力文字版:https://developer.aliyun.com/... →构建 1、阿里巴巴如何晋升构建的效率文字版:https://developer.aliyun.com/... 2、阿里巴巴如何基于制品元数据晋升交付效率文字版:https://developer.aliyun.com/... →继续交付 1、企业如何规模化落地CICD文字版:https://developer.aliyun.com/... 2、以个性为外围的继续交付文字版:https://developer.aliyun.com/... 3、基于利用和变更的交付模式文字版:https://developer.aliyun.com/... →运维 1、阿里监管控一体化运维实际文字版:https://developer.aliyun.com/... 2、业务系统安全工程在阿里的实际文字版:https://developer.aliyun.com/... 3、业务驱动的全景监控体系在阿里的利用文字版:https://developer.aliyun.com/... 4、阿里巴巴公布最佳实际文字版:https://developer.aliyun.com/... 5、面向编排的运维在阿里的利用文字版:https://developer.aliyun.com/... 6、阿里智能运维实际文字版:https://developer.aliyun.com/... 【4.4 B站最全的Git指南】编者按:B站最透彻的Git教程系列!阿里云程序员深度分享:Git操作全指南 ...

December 31, 2021 · 1 min · jiezi

关于研发:如何加强企业研发管理阿里云效硬盘式管理实践揭秘

摘要:在云效继续集成继续交付专场直播中,阿里云效产品专家代平为大家带来了《硬盘式研发治理实际》分享,深入浅出地分享了互联网的研发治理理念,解析了企业研发治理面临的挑战和艰难,揭密了如何联合云效产品进行业务技术协同线上化的硬盘式研发治理实际。 以下内容依据演讲嘉宾视频以及PPT整顿而成。 嘉宾介绍 代平:阿里产品专家。从事多年互联网零碎的研发测试和项目管理。当初专一于研发协同治理产品设计。 本次分享次要和大家探讨研发综合产品治理效力平台应该如何实现,以及如何买通需要、开发、测试、公布这样的产品研发全过程,心愿可能给大家带来播种。本次分享的内容次要分为以下四个局部: 一、互联网研发治理背景 二、常见的研发提效策略及其问题 三、云效撑持的研发治理实际 四、实际最佳门路和成果 一、互联网研发治理背景 互联网研发特点 随着互联网的倒退,不仅仅是互联网公司的研发,就连传统企业的研发模式也开始受到互联网的影响,各行各业都在向“互联网+”模式转型,这就导致互联网的研发有如下的这些特点: 1.变动:市场需求变动的速度十分快,导致研发须要疾速适应市场需求的变动。 2.体验:给用户带来的体验要好,当初用户获取信息非常便捷,用户会有十分多的抉择,所以产品在性能、平安或者体验上稍稍落后就会被用户摒弃。 3.速度:互联网市场竞争十分强烈,产品的研发速度关乎生死,也会影响最终成绩。 互联网研发问题 由以上互联网研发特点,导致了在研发过程中会呈现上图所示的常见问题。比方业务迭代速度十分快,间接导致我的项目的并行量十分大;因为业务倒退速度快,所以利用的增长也十分迅速,导致无论是开发同学还是测试同学在搭建环境时的工作都会变得非常复杂;除此之外因为研发同学在研发过程中须要与各个角色进行一些协调,所以这带来的研发老本也会十分高;与此同时,测试的老本也在急剧增长,而且应用的人肉测试也会比拟多,这样导致最终的后果是业务很难疾速地交付到客户手中。 面对这些问题应该如何应答呢?天下文治唯快不破,提高效率兴许就是互联网研发的要害。 二、常见的研发提效策略及其问题 通常状况下,工作时会应用一些通信工具进行即时沟通,沟通的形式次要有三种:同步型:比方电话或者会议;异步型:如钉钉、微信等通信工具;邮件:能够看做异步通信的形式,但个别用于公布告诉。这些通信工具的弊病在于整体沟通合作效率比拟低下,同时还有两个更深层次的问题。 第一个问题是如果一个公司没有对立的工作解决机制,不同团队就可能采纳不同的工作解决形式,那么会呈现甲团队应用邮件作为沟通形式,乙团队采纳散会的形式,丙团队合作靠刷脸进行,这样的效率就会非常低。这样的形式很容易让大家联想到农村小路,农村小路的特点就是不平、不直、不通并且不统一。 “要想富,先修路”,只有对立并且宽敞的信息高速公路能力放慢研发工作的处理速度。 第二个问题就是工作内容没有积淀。如果想要查看后面积淀下来的教训,只能到处找人问。 如果整个研发过程的数据就如同在一个硬盘上一样全副存储下来,那么对于公司而言将会是微小的财产,即便有同学到职了,新来的同学也能够通过积淀下来的数据,参考查证以前的工作门路和工作记录。所以不仅仅须要将本来不平、不直、不通并且不统一的沟通门路用信息高速公路取代,并且须要将公司的一些我的项目的数据资产包含过程、文档、后果以及代码,对立用于建造公司的相似于数据资产金字塔的硬盘中,将这些数据全副保留下来,这就是云效平台硬盘式研发治理的主体思路,也就是从各种门路独立转变到建设一条整体相通的信息小道,并将数据进行汇总进而做对立的展现、记录和存储的构想。当初有不少公司意识到了这一点,并开始建设公司的研发信息高速公路。他们的做法往往是通过引入一些平台产品来建设本人的信息高速公路,并且通过这样的形式积淀出本人公司的硬盘式金字塔,将数据存储下来。如下图所示。 三、云效撑持的研发治理实际 下图是云效平台整体的架构图,这就是云效的研发信息高速公路,它能够让研发同学以及包含产品、测试和运维同学将本人的日常工作放在这个平台上。需要、做我的项目、设计技术计划、编码、代码的审阅、测试、公布以及所有工作项的评论等全副记录在云效平台上。 因为云效平台的外围准则就是平台化、流程化和自动化,也就是说心愿制订一套标准化的流程,例如继续部署流程、代码流程、代码治理流程等,之后将这些流程通过自动化的形式以及自动化的工具实现进去,这就是云效平台的根本准则。有了这些准则之后就在平台之上建设了配置管理、继续集成、继续交付、环境自动化、分层自动化以及集成自动化这些相干的子系统。有了这些子系统之后就创立了一个牢靠可反复的交付流水线。比如说在提交与编译阶段的并行研发、编译构建和单元测试,在测试与验证阶段的环境部署、零碎测试和集成测试,以及在公布与运维阶段的生产交付、公布回滚和生产监控等都是能够通过云效平台的相干产品进行效率晋升的。 在牢靠可反复的交付流水线建设实现之后,云效团队又将之前所做的研发综合效力治理方面的货色,包含业务模型分层、业务布局、研发资源管理以及ROI复盘等,全副在云效平台上进行出现。而将包含需要跟踪矩阵、迭代打算、工作合成流转以及度量与改良在内的这些,构建成了协同工作流,每一个人都能够在平台上评论所有的工作项并提出计划或者进行顶踩,这样就保障了开发的品质、效率以及评论和文档等所有相干的数据都存储在平台之上。 我的项目维度的互动和多角色之间的沟通合作全部都是在云效平台上进行,参加我的项目的人员应用雷同的零碎进行相互协作,这样对组织效率和业务也可能起到很好的促进作用。 除此之外,云效平台还反对公有云部署,对于Docker等开发框架以及最简略的J2EE工程项目等也可能提供良好的反对。 硬盘式研发治理的总体流程 上图所示的就是研发流程的示意,从下层的业务方进行业务布局开始,之后须要进行组织人员的安顿,再到立项之后的需要确立。 对于需要的确立而言,须要通过需要跟踪矩阵将需要横向化、标准化。需要是能够合成和拆解的,也是能够配置的,需要的变更记录、评审记录包含对于需要的评论、顶踩全副会在这个平台上记录下来,在平台之上还能够实现责任人以及状态的流转和变更来记录需要到了什么样状态,这样就可能晋升需要的品质,管制需要的范畴,这是从横向上来看这条线。 而从纵向上来看,需要是和前面的整个我的项目串联起来的,因为需要确定之后就能够进行迭代拆分、评估工作项的资源以及进行工作合成、测试用例的设计实现以及与Bug相干的一些货色都是能够通过需要串接起来的,这样就保障了需要与后续工作的关系都能够透视进去,这样有利于对于整体危险的把控。在整个我的项目过程完结之后,能够将我的项目的全副代码公布到代码库中,而后通过云效平台指挥部这个产品对于整个我的项目进行复盘并评估出我的项目的投入和产出。 这里大家可能会产生一个疑难,看上去整个研发过程的工作都是记录在这个平台下面的,那么有没有一些研发相干工作是没有记录在云效平台上的呢?这个问题的答复是:没有!云效平台提倡硬盘式记录,如果工作没有在平台上记录,那就相当于没有工作的产出。能够构想一下:如果一名员工在公司做了很多年,既没有留下一行代码,也没有留下任何对于技术计划或者需要的变更、评审进行探讨的货色,对于公司而言这名员工给公司留下了什么呢?所以,站在公司的角度,心愿每一位员工都可能积攒下属于本人的工作记录,并且全副都记录在公司的平台之上,固化成公司的数字资产。 对于一些比拟高级的技术专家能够在云效平台上做些什么呢?兴许他们不必本人去写代码,然而能够在平台上Review一些技术计划并给出一些评论和领导,甚至还能够进行代码的审阅。这些可能十分好的帮忙开发同学防止很多坑,节俭大量工夫。对于管理者而言,他们所须要做的事件就是促使团队在这个平台上产出有价值的货色并记录在硬盘下面,从而积淀出整个公司的数字金字塔。管理者也能够看到本人团队所有成员的全副产出。 云效我的项目页面 下图所示的是我的项目详情页面,蕴含了我的项目的整体进度、概要、里程碑信息、危险信息、负责人以及我的项目成员、相干的子项目、及时滚动显示的我的项目动静、告诉信息等。除此之外,我的项目中各角色所须要做的工作项等内容也是通过一些服务出现的,比方需要页、工作页、迭代、测试用例缺点、自动化、单测集成、环境搭建以及整个零碎数据的报表还有公布等,这些内容都会以我的项目的维度进行展现。 云效需要页面 一个我的项目的管理者或者我的项目成员,在云效平台上能够看到与我的项目相干的所有内容。 以产品为例,能够看到整个需要跟踪矩阵的列表,这里提供了看板和数表这两种模式来显示我的项目需要的优先级、是否上线、迭代状况、创建者以及以后的负责人等状态信息,点击每个需要条目之后能够看到这条需要的详细情况,包含需要的具体内容、相关联的需要状态和相干的一些工作状态,还蕴含一些相干评论,激励大家剖析需要,对需要进行评论或者顶踩,提出更好的计划。 除此之外,需要的具体内容页面还会显示需要各个版本的订正记录、变更记录、评审记录以及操作记录等信息,对于每一个工作项都有这样相似硬盘式的记录,包含这个需要所蕴含的工作、用例、缺点、分支等工作项也会在详细信息中进行展现。上图页面中最左边展现的是需要属性以及附件,蕴含了优先级信息、迭代信息、所属我的项目、关联我的项目、模块信息、版本信息、进度信息以及通过技术同学评估之后计算出的大略的工作量,还有就是一些自定义的标签、产生变更之后须要告诉的对象信息,以及与该需要相干的附件等。 这些就是需要页面的大抵状况,因为这部分是我的项目的源头,蕴含的信息量十分大,所以须要以硬盘的模式全副存储下来。一言以蔽之,云效平台在横向上会将需要所有相干的信息全副记录下来;对于纵向而言,像工作拆分、用例、缺点以及开发分支等所有我的项目相干的内容都能够在这里记录,以此串联起整个需要的过程,直到产品公布上线。 云效集成自动化 下图所展现的就是某一个我的项目的集成自动化的状况。云效平台善于UI自动化、接口自动化以及单元测试,这些能够全副集成在一个平台上执行,而且历史的执行后果会全副展现在页面上,集成的通过率如何、有多少胜利和失败、测试件在执行时候绑定的环境状况、我的项目中各个局部所执行的测试件状况等,这些我的项目相干的自动化状况也都会在页面上失去展现。这样大家对于硬盘数据的治理就会有一个间接的概念,我的项目中所有的信息都能够在一个对立的平台上出现进去。 四、实际最佳门路和成果 对于云效平台而言,实际之路也不是一帆风顺的,在刚开始起步阶段也不是十分标准,从最后的简略的Bug零碎再到我的项目和工作、再到探讨以及文档治理,都是一步步实现的。 实际并非一步到位 在实际过程中,咱们也发现了与其余公司一样的问题。这些工具都是比拟零散的,咱们一边将这些零碎进行集成,一边进行零碎重构,让这些子系统的数据可能互通,这样才得以对立,造成了阿里巴巴对立的信息高速公路。只有这个信息高速公路建成之后才有可能构建出阿里研发资产的金字塔,将数据全副像硬盘一样存储下来。在实际的过程中有一个根本的准则就是对立高于好用。比方刚开始的时候,各个团队想要应用的工具往往会是不同的,如果不同团队沟通形式不同或者应用的工具不同,那么对于整个公司而言,效率就会比拟低下。所以在云效平台的实际中,保持的根本准则是对立高于好用,公司是须要一个对立的研发治理平台,而不是各种好用的工具的简略重叠。 实际中遇到的挑战 云效平台在实际过程中遇到了很多挑战。引入一整套的研发管理工具平台,无论对于阿里巴巴本人还是客户而言,都会须要转变工作习惯,须要从线下的各种不同的形式疏导到线上并且应用对立的形式,使得业务同学、研发同学都是依照这一套标准的门路实现工作。 总结下来有这样三个比拟好的措施: 1.宣导:通知大家为什么要做这件事件,疏导大家进行思维的转变; 2.由易到难:从简略的事件登程,从易到难的推动这件事件; 3.专人负责:常见的负责组织就是PMO组织,也就是项目管理专员。如果有专人去负责、宣导、施行和复盘,并且从零碎中拿到一些数据并发现问题或者可预见性的瓶颈,并进行汇报,再通过管理层的资源解决问题,如此就可能减速硬盘式研发治理实际的落地。 实际成果 如何增强企业研发治理?阿里云效硬盘式治理实际揭秘!硬盘式研发治理实际的最终成果:一方面是把员工脑海中的信息都数据化成为公司的研发资产,员工的工作也都会固化成为数据存储在公司的平台上;另一方面对立的研发效力平台就如同信息高速公路一样,因为其是通明的,所以能够营造出一种在意工作过程并且在意互相帮忙的工作气氛,团队成员之间也会激励踊跃共享代码并且参加探讨。最终会使得研发的效率更高,并且带来高效的横向协同。

October 18, 2021 · 1 min · jiezi

关于研发:阿里云-云效一站式研发平台

阿里云 云效,云原生时代一站式DevOps平台,10万企业都在用。反对公共云、专有云和混合云多种部署状态,通过云原生新技术和研发新模式,助力翻新守业和数字化转型企业疾速实现研发麻利和组织麻利,打造“双敏”组织,实现多倍效力晋升。 咱们的工作充斥着大大小小的【我的项目】、【工作】:流动策动,工程施行、IT研发、风险投资等等,应用云效做【我的项目化】治理,团队布局工作时指标更清晰,执行更到位,而且实现过程也非常轻松,成员将有全新的合作体验。 云效我的项目合作是什么? 每一个市场都在赛跑, 应用云效我的项目合作打造一体化研发合作流程,借助业余工具,让团队体现更优异,产品更快响应需要变动。 全面反对「看板」和「Scrum」麻利办法,你能够围绕产品指标灵便布局每个迭代冲刺。实时数据反馈,让打算调整更及时,团队成员踊跃应答变动,继续交付价值。你的产品交付,能够远超预期。 立刻体验 理解更多信息 云效测试治理是什么? 「测试治理」蕴含对测试计划与执行用例的创立、编辑、布局与关联等性能,让测试人员能够间接在云效的我的项目中进行测试工作的布局和执行停顿反馈,并将「测试计划」与「需要」和「缺点」一起进行治理。 立刻体验 理解更多信息 云效代码治理 Codeup 是什么? 云效代码治理 Codeup 是阿里云出品的一款企业级代码治理平台,提供代码托管、代码评审、代码扫描、品质检测等性能,全方位爱护企业代码资产,帮忙企业实现平安、稳固、高效的研发治理。立刻体验 理解更多信息 云效流水线Flow是什么? 「流水线」,又名「Flow」,是「云效」产品矩阵中一款企业级、自动化的研发交付流水线, 提供灵便易用的继续集成、继续验证、 继续公布性能,帮忙企业高质量、高效率的交付业务。流水线是继续交付的载体,通过构建自动化、集成自动化、验证自动化、部署自动化,实现从开发到上线过程的继续交付。通过继续向团队提供及时反馈,让交付过程高效顺畅。 立刻体验 理解更多信息 云效制品仓库是什么? 制品库顾名思义是制品的仓库,制品是软件交付的成绩性产物,通常是可运行的二进制模式,因而制品库通常也被称之为二进制制品仓库。云效制品库致力于帮忙开发者对立治理各种开发语言在开发、构建过程中的依赖,构建成绩(二进制制品)以及交付过程要害信息的重要组件。制品库连接继续集成和继续部署,是继续集成的成绩治理仓库,也是继续部署的物料起源,同时也为研发的动态平安提供保障。现阶段云效的制品仓库反对 Maven 、NPM类型仓库,后续还将提供一下的仓库类型,敬请期待:HelmDocker镜像一般构建产物 立刻体验 理解更多信息 云效知识库是什么? 云效知识库是一款企业 常识治理 工具,通过独立的知识库空间,结构化地组织在线合作文档,实现企业常识的积攒和积淀,促成常识的高度复用和流通。 立刻体验 理解更多信息 阿里云 云效一站式研发平台云原生时代一站式DevOps平台,10万企业都在用。反对公共云、专有云和混合云多种部署状态,通过云原生新技术和研发新模式,助力翻新守业和数字化转型企业疾速实现研发麻利和组织麻利,打造“双敏”组织,实现多倍效力晋升。

October 13, 2021 · 1 min · jiezi

关于研发:阿里云-云效研发协同服务相关协议条款

在您申请试用阿里云研发协同服务之前,请您仔细阅读www.aliyun.com网站上颁布的相干标准、规定和应用流程以及阿里云研发协同收费试用服务条款的全部内容。如果您不批准本服务或本服务条款的任意内容,或者无奈精确了解阿里云的解释,请不要进行后续操作。一旦您抉择“收费开明”并进行后续操作,即示意您批准遵循本服务条款之所有约定以及www.aliyun.com网站上颁布的相干标准、规定和应用流程,如您有任何问题能够通过阿里云工单反馈咱们。届时您不应以未浏览本服务条款的内容或者未取得阿里云对您问询的解答等理由,主张本服务条款有效,或要求撤销本服务条款。>在您申请试用阿里云研发协同服务之前,请您仔细阅读www.aliyun.com网站上颁布的相干标准、规定和应用流程以及阿里云研发协同收费试用服务条款的全部内容。如果您不批准本服务或本服务条款的任意内容,或者无奈精确了解阿里云的解释,请不要进行后续操作。一旦您抉择“收费开明”并进行后续操作,即示意您批准遵循本服务条款之所有约定以及www.aliyun.com网站上颁布的相干标准、规定和应用流程,如您有任何问题能够通过阿里云工单反馈咱们。届时您不应以未浏览本服务条款的内容或者未取得阿里云对您问询的解答等理由,主张本服务条款有效,或要求撤销本服务条款。 1. 本服务条款是您因应用阿里云研发协同服务与阿里云所订立的无效合约。一旦您抉择“收费开明”并进行后续操作,即示意您批准遵循本服务条款之所有约定。2. 您了解并批准,应用阿里云研发协同服务是您自行独立审慎判断的后果(包含但不限于本服务与您的操作系统、云服务器等软件、硬件等产品或服务的适配性),您将自行对此负责。在您应用阿里云研发协同服务前,您应仔细阅读阿里云就该服务在阿里云网站上的服务阐明,按照相干操作指引审慎操作。3. 您了解并批准,就应用阿里云研发协同服务所所波及的您的业务数据,您应负责备份。4. 您了解并认可,您在应用阿里云提供的阿里云研发协同服务过程中:4.1. 您不应进行任何毁坏或试图毁坏网络安全的行为(包含但不限于钓鱼,黑客,网络欺骗,网站或空间中含有或涉嫌散播:病毒、木马、恶意代码,及通过虚构服务器对其余网站、服务器进行涉嫌攻击行为如扫描、嗅探、ARP坑骗、DDOS等); 4.2. 您不应进行任何扭转或试图扭转阿里云提供的系统配置或毁坏系统安全及网络安全的行为; 4.3. 您不应批改、翻译、改编、出租、转许可、在信息网络上流传或转让阿里云提供的软件或服务,也不得逆向工程、反编译或试图以其余形式发现阿里云提供的软件的源代码; 4.4. 非经阿里云当时书面批准,您不应复制、流传、转让、许可或提供别人应用阿里云提供的阿里云研发协同服务; 4.5. 您不应分布电子邮件广告、垃圾邮件(SPAM); 4.6. 您不应以任何将会违反国家、中央法律法规、行业常规和社会公共道德,及影响、侵害或可能影响、侵害阿里云、阿里巴巴团体利益的形式或目标应用阿里云研发协同服务。 5. 责任的限度及罢黜您应了解并批准,尽管阿里云研发协同服务会提供服务可用性和可靠性撑持,但在收费试用期间,阿里云将不对任何服务可用性、可靠性做出承诺。阿里云亦不对您应用阿里云研发协同服务工作或后果承当任何责任。 6. 变更和终止6.1. 您了解并认可,阿里云保留随时批改、勾销、加强阿里云研发协同服务一项或多项性能或全副服务的权力,如批改或加强性能的,阿里云有权要求您应用最新更新的版本;届时,阿里云将以提前通过在网站内适合版面发布公告或发送站内告诉等形式告诉您; 6.2. 如您有任何违反本服务条款的情景,或经阿里云依据本人的独立判断认为您对阿里云研发协同服务的应用行为不合乎阿里云的要求(包含因您网站遭逢计算机病毒、网络入侵和攻打毁坏(包含但不限于DDoS)等危害网络安全事项或行为(该等行为),该等行为而给阿里云带来危害,或影响阿里云与国内互联网或者阿里云与特定网络、服务器及阿里云外部的通顺分割),阿里云除有权随时中断或终止您应用该服务而无须告诉您外;如给阿里云造成损失的,阿里云有权要求您赔偿损失; 6.3. 根据第6.1和第6.2条服务条款终止的,阿里云有权不再保留您的数据,即开释您创立的我的项目或需要并清空数据。 7. 窃密您及阿里云都应答对方的窃密信息承当窃密责任,除非经国家行政、司法等有权机关要求披露或该信息已进入私有畛域。 8. 其余8.1. 您了解并批准,阿里云目前为您收费提供阿里云研发协同服务,即您开明或应用阿里云研发协同服务,并不需向阿里云领取费用;阿里云不排除日后收取费用的可能,届时阿里云将提前10个天然日通过在网站内适合版面发布公告或发送站内告诉等形式颁布免费政策及标准;如您仍应用阿里云研发协同服务的,应按届时无效的免费政策付费并应恪守届时阿里云颁布的无效的服务条款。如在免费后,您回绝领取服务费的,阿里云有权不再向您提供服务,并有权力不再持续保留您的业务数据。 8.2. 阿里云有权随时依据无关法律、法规的变动以及公司经营情况和经营策略的调整等批改本服务条款。批改后的服务条款会在阿里云网站(www.aliyun.com)上颁布。如果不批准批改的内容,您应停止使用阿里云研发协同服务;如果持续应用阿里云阿里云研发协同服务,则视为您承受本服务条款的变动。 8.3. 如果本服务条款中的任何条款无论因何种起因齐全或局部有效或不具备执行力,或违反任何实用的法律,则该条款被视为删除,但本服务条款的其余条款仍应无效并且有约束力。 8.4. 本服务条款受中华人民共和国法律管辖。在执行本服务条款过程中如产生纠纷,单方应及时协商解决。协商不成时,任何一方可间接向杭州市西湖区人民法院提起诉讼。

October 11, 2021 · 1 min · jiezi

关于研发:不同研发协作模式在云效中的应用

此栏目次要是给云上的铁杆用户们做一些产品个性以及实践经验技巧相干的一些分享。很多企业都在应用。然而随着企业产品线业务线的一直的倒退,团队规模一直的扩充,研发合作的关系也变得更加简单。那么咱们就须要对研发模式进行降级,找到更适宜的研发模式,这样能力让咱们的研发效率一直的晋升。 明天会给大家介绍一下目前业内比拟支流的几种研发模式,以及这几种研发模式在云效中是怎么利用起来的。 目前咱们业内。一种比拟支流的研发合作模。各研发合作模式在云效中的利用,更多的还是一些偏实际,相干的一些一些展现。因为当初咱们次要的这些很多模式,包含在咱们阿里外部都会都会用的比拟多。 所以很多可能很多的这种案例或者教训都是源自于咱们阿里自身的一些理论的研发场景的一些一些教训,所以也比拟比拟陈腐,比拟实在的一些一些教训。 内容简介Srcum、LeSS、ALPD等研发模式的利用场景云效我的项目模版如何抉择以及如何进行我的项目组合治理需要/工作如何跨我的项目进行合作治理阐明 疾速应用:Projex(新)内测申请Projex地址视频具体地址点击理解: https://cloud.video.taobao.co...

October 11, 2021 · 1 min · jiezi

关于研发:研发效能度量引发的血案

审校 | 蔡芳芳 作者 | 茹炳晟 腾讯 T4 级技术专家,腾讯研究院特约研究员,业界出名实战派研发效力和软件品质双领域专家。腾讯云、阿里云、华为云最具价值专家,Certified DevOps Enterprise Coach ,年度 IT 图书最具影响力作者,多本技术畅销书作者,极客工夫《软件测试 52 讲》作者,新书《软件研发效力晋升之美》也行将出版。屡次负责国内各大技术峰会的联席主席、出品人和主会场演讲嘉宾。 前段时间我写了一篇文章《如何用研发效力搞垮一个团队》引起了业界同行大量的探讨与关注,明天想持续聊聊研发效力晋升过程中另一个话题:“度量”。探讨度量的目标不是争执对错,而是心愿可能引发大家对这一话题的深刻思考。 1 度量失败的案例首先来看一个因为度量体系设计不当而引发“内卷”等不良行为的案例。 比方以“点击量”来度量自媒体经营的成绩,那么就有可能呈现点击量显著晋升,然而公众号的关注人数却降落的景象。起因就是应用“题目党”等伎俩诱骗读者关上链接,然而理论内容徒有虚名,几次之后读者就不会持续关注该公众号了。 2 时代变了,很多事物底层逻辑都变了明天的度量为什么容易失败呢?正如我在之前那篇文章中提到的,面对改革,最重要的并不是办法和技术的降级,而应该是思维模式的降级。咱们身处数字化的改革之中,须要将工业化时代科学管理的思维彻底转为字节经济时代的全新思维。 对于软件研发效力的度量,咱们绝大多数时候还在用工业化时代造成的治理理念来试图改良字节经济下的研发模式。但时代变了,很多事物底层逻辑都曾经变了,工业化时代造成的科学管理理念在字节经济的明天是否还仍然实用?值得沉思。 本文将站在软件研发效力的视角,来探讨字节经济时代下研发效力度量中几个必须要答复的问题: 研发效力到底要不要度量?研发效力到底能不能度量?研发效力到底如何来度量?研发效力的度量指标如何来选取?3 研发效力到底要不要度量?要。这个问题的答案不容质疑。 古代管理学之父 Peter Drucker 说过,“没有度量就没有改良”,这一底层逻辑从头至尾都没有变过,只是工业化时代的度量和字节经济时代的度量在理念和办法上会有很多不同的中央。 度量对于研发流程改良的意义十分明确。工业化时代的实体产品研发与生产,其中的危险是绝对显著的,比拟容易找到防备的办法,也分得清相干的责任。然而字节经济时代的软件产品研发(曾经没有了生产),是通过越来越多工程师的数字化合作来推动的。参加研发的人越多,人与人之间的沟通老本越高,产生随机偏差的概率也会越大,再加上软件研发过程自身的可视化水平很低,危险的可见性就容易被各个环节覆盖,但它最终会在看不见的中央积攒起来。如果没有适当的度量体系去显性化这些危险,后果可想而知,更不必谈什么继续改良和治理了。 度量对于人的公平性诉求也是必须的。“我尽管没有功绩,然而我也有苦劳。” 大部分人可能只关注本人的付出,但并不关怀付出所取得的实际效果。作为管理者应该为“苦劳鼓掌,为功绩付钱”。而功绩和苦劳的体现也须要借助主观的度量数据来体现,否则团队中的成员会逐步陷入碌碌无为的困境。 4 研发效力到底能不能度量?明确了研发效力必须度量之后,咱们再来看看一个更理论的问题:研发效力到底能不能度量?“要不要”和“能不能”是两个层面的问题,“要”不示意“能”,就像“我要赚钱”和“我能赚钱”是截然不同的两个问题一样。 对于这个问题,业界有两派截然不同的观点,一派是以古代管理学之父 Peter Drucker 的实践为根据,主张研发效力可能度量的;另一派是以世界级软件开发巨匠 Martin Fowler 为代表,主张研发效力不可度量的。 在这个问题上,我的观点比拟中庸,我认为可能度量,然而没有完满的度量。起因有以下几点: 4.1 度量自身的片面性无奈防止 事实事物简单而多面,度量正是为形容和比照这些具象事实而采取的形象和量化措施,从某种意义上来说,度量的后果肯定是全面的,只能反映局部事实。 管理者往往会把指标拆解为可度量的指标。然而,指标和指标经常并不是简略的全局与部分的关系。指标的拆解过程看起来很顺畅,是那么地天经地义,然而当把拆解完的指标合并起来的的时候,后果往往让人啼笑皆非。 有一个笑话说的是,“你问人工智能,我要找一个女朋友,像赵薇一样的大眼睛,像朱莉娅·罗伯茨一样的大嘴,青睐静止,陆上静止、水上运动都会。人工智能就依据这几个指标给出了母青蛙的答案”。所以,指标和指标经常并不是充沛必要的关系。 4.2 度量过程容易陷入部分思维 指标是为了实现目标的,然而在实际过程中,指标很多时候却是与指标为敌的。 管理者经常把指标拆解为指标,工夫久了当前,他就只晓得指标,而忘了背地更重要的指标。如果指标是林,那么指标就是木,工夫久了就是只见树木,不见森林。这个时候遗记了指标是什么的管理者就会变得十分短视。那些不懂数据的人很蹩脚,而最最蹩脚的人是那些只看数字的人。 在福特汽车的发展史上,有一段至暗期间。那些实践经验丰盛,然而没有上过商学院的的老一辈管理层被干掉,取而代之的名校治理背景的数据分析师,公司试图通过精细化的数字治理来实现业务的增长。因为这些数据分析师并不熟悉业务,所以就只能看度量数据,越是不懂业务就越依赖度量数据来做决策,最初使整个公司陷入了泥潭。 软件研发也有相似的难堪,为了更好地代码品质,所以就制订了严格的代码测试覆盖率要求。工夫一久,大家都机械性的谋求这个指标,而遗记了过后设立这个指标的初衷,于是就呈现了高覆盖率的大量单元测试中没有断言这样难堪的场面。 4.3 度量数据的解读具备很强的误导性 度量数据自身不会骗人,但数据的出现和解读却有很大的空间能够利用。很多时候,同样的数据,通过不同的解读会疏导出截然不同的后果,这点很容易被人为利用来达成各自的目标。 举个例子,有钻研人员问承受调查者一个问题:如果你得了绝症,有款新药能够治愈,然而会有危险,20% 的服用者可能因而而丧命,你吃吗?大多数人会抉择不吃。然而如果反过来问:如果你得了绝症,有款新药可治愈 80% 的患者,但此外的人会死,你吃吗?绝大多数人会抉择吃。实际上这两个问题的根本数据是一样的,然而失去的答案却相同。起因很简略,在后面的问题中,强调的是“失去”,在前面的问题中,强调的是“取得”。人的本能会更喜爱“取得”,而不是“失去”。 研发效力畛域也有很多相似的案例,雷同的数据到了不同的人的嘴里就有了截然不同的解读,由此做出的决策也会不同。 综上所述,我认为研发效力到底能不能度量是要基于场景的,脱离了场景去谈能不能度量没有太大意义。就像没有什么货色实质上就是脏的,是放错了地位的货色才是脏的。饭菜,在碗里就是洁净的,泼到了衣服上才是脏的。泥土,在花园里就是洁净的,抖落到了床上就是脏的。 5 研发效力到底如何度量?那么研发效力到底如何度量,以下是我的一些想法。 5.1 要聆听管理者的度量诉求,然而不要照着做 ...

October 11, 2021 · 2 min · jiezi

关于研发:从工具工具箱到数字化软件工厂DevOps-设计理念与工程实践专场-CIF-精彩看点

东方经典治理实践认为,组织效率能够归为劳动效率、组织效率和人的效率。美国管理学家泰勒所著的《科学管理原理》被德鲁克誉为“20 世纪最平凡的创造”,劳动效率说认为分工晋升生产效率,福特的流水线就是分工和工业化的典型代表。经济学家亚当斯密也在《国富论》里形容了螺丝制作的十八道工序,通过工具的合成能别离由十八个专门的工人负责实现,实现效率上的晋升。 让组织效率最大化的伎俩是专业化程度与等级制度的联合,意即让不同业余能力的人匹配适宜的岗位。在古代,数字化、平台化的企业强调翻新和协同,在经典治理实践的根底上又提出了新的挑战,仅仅分工曾经不能满足市场的须要,咱们发现: 以上是咱们认为的数字化协同的实践根基,治理逻辑正在从分工走向协同,好的工具须要遵循经典的分工实践,但更加须要重视数字经济时代的的协同需要。但在技术环境疾速变动的当下,围绕代码相干的工具层出不穷,一方面软件从业人员可能越来越长于应用工具,但另一方面也给研发团队带来了微小的学习老本与治理危险。更重要的是,咱们认为在这种工具集状态下,没有给开发者和管理者提供一个真正无效的、柔性边界协同的环境。 在此背景下,行将于 10 月 19 日线上召开的腾讯云 CIF 工程效力峰会 - DevOps 设计理念与工程实际分享论坛上,CODING 研发总监王振威将携手 6 位资深产品大牛,为你解答: 如何解决传统研发管理模式下的三大问题:产研矛盾、治理窘境、理念悖论?如何激发强个体,充分发挥技术人员的技能,晋升开发效率?如何度量和晋升团队发明价值的速度,及时发现和改良品质问题?在 DevOps 流程中,如何应答企业级制品治理面临的,诸如制品数量宏大、治理老本过低等简单问题?如何将平安工具和 DevOps 工具联合,实现自动化的流程管控,疾速修复破绽,限度平安问题的右移?…… 扫描海报二维码 立刻预约腾讯云 CIF 工程效力峰会! 你将会在这里取得思考与答案

October 9, 2021 · 1 min · jiezi

关于研发:阿里如何定义团队的研发效能

简介: 简介: 作者:何勉,阿里巴巴研发效力部资深技术专家。因为身处研发效力部,我接触了公司很多产品技术团队。他们简直都把研发效力晋升列为了本财年的重要指标,大部分还为此成立专项,如此咱们又如何去晋升它呢? 阿里云云效效力洞察产品正在灰度测试中,立刻测试体验 作者:何勉,阿里云云效资深技术专家 因为身处研发效力部,我接触了公司很多产品技术团队。他们简直都把研发效力晋升列为了本财年的重要指标,大部分还为此成立专项。然而,对于什么是好的研发效力,却很少能被清晰定义。如此,咱们又如何去晋升它呢? 针对这个问题,本文将明确定义研发效力,并提供度量它5个指标。为研发效力的晋升指明指标,并掂量晋升的成果。本文也是对于研发效力晋升及产品交付办法系列文章的开篇,为之后介绍的产品交付办法是否无效设立了规范。 效率竖井是研发效力改良的最大问题产品交付须要前后职能(如:产品、开发、测试等)和平行部门(如:前端、后端、算法等)的合作。传统办法更多关注各个职能和部门的独立改良。然而,适度局部优化,往往导致效率竖井,反而侵害整体效率。 什么是效率竖井呢?上图形容了传统开发方式下,产品交付面临的广泛窘境——各职能和部门局部优化带来一系列问题,如: 基于部分信息的工作优先级安顿,造成不同部门和职能间互相期待,让需要无奈顺畅流动。比方前、中、后盾对工作的优先解决不统一,进度无奈对齐,让曾经开始的需要不能及时交付。 批量式的工作移交,带来进一步期待。为了最大化单个环节的效率,各职能往往偏向于批量承受和移交工作,如批量的集成,批量的转测等。进一步造成需要在过程中的积压和期待。 跨部门的问题,常常得不到及时和无效的解决。公共环境的保护,就是一个典型的问题,是影响用户需要的顺畅交付。过程中需要跨部门的无效廓清、接口对齐、问题排查是另一些常见的公共问题,它们都会造成需要无奈顺畅停顿。 以上只是一部分问题,它们独特作用,后果是:站在各自的视角,每个部门都感觉本人忙碌且“高效”;然而,站在全局和业务的视角,零碎对外的反馈却十分缓慢。这就是所谓效率竖井。 效率竖井:由局部优化导致,体现为:各个环节和部门忙碌而“高效”,但总体的效率和响应速度却很低。它是研发效力晋升的广泛症结所在。 上图的折线反映了效率竖井下,单个需要的交付过程。绿色线示意需要正在被解决,红色线则示意需要在期待中。工作量不大的需要,交付周期却很长。因为大部分工夫需要都处于期待状态。各个部分一片忙碌,内部却埋怨连连,置信很多人会感同身受。 继续疾速交付价值的能力”是效力改良的外围指标要改良研发效力,咱们必须走出效率竖井。为此组织必须把改良的焦点从关注各个资源环节,转向关注整个零碎。 上图反映了效力改良的要害——从以部分资源效率为外围,转变为价值流动效率为外围的改良。 资源效率指的是,各环节的资源利用率和产出状况,如:资源的忙闲水平、使用率、代码产出和测试执行速度等。流动效率指的是,用户价值在零碎中的流动速度,如:用户需要从提出到交付的时长,它越短越好;或者是过程中等待时间的占比,它越小越好。 用户价值的流动是串起整个零碎,促成整体优化的不二抉择。为了进步价值的流动效率,组织就必须关注用户价值在零碎中端到端的流动过程,改良整个零碎,而不仅仅是部分环节。以此为根底,效力改良的指标是:继续疾速交付价值的能力。这也是对研发效力的根本定义。 继续疾速交付价值的能力,是研发效力的外围定义。为此咱们必须把改良的焦点从部分资源效率,转向价值流动效率,以保障全局和零碎的优化。 研发效力的度量——五组指标答复研发效力的基本问题以上定性的定义了研发效力。管理学之父德鲁克说:“如果你不能度量它,就无奈改良它”。度量帮忙咱们更粗浅意识研发效力,设定改良方向,并掂量改良成果。 产品开发过程中会产生大量的数据,但数据不是度量。好的度量的规范是:它要为答复一个基本的问题讲述残缺的故事。效力度量要答复的基本问题就是:一个组织“继续疾速交付价值的能力”怎么样? 为答复这个问题,应该提供怎么的一个残缺故事呢?基于在天猫新批发、闲鱼、优酷、阿里衰弱、研发中台、阿里云等部门继续实际和摸索,咱们倒退并验证了零碎的研发效力指标体系。如上图所示,它由5组指标形成,别离是: 第一:继续公布能力。具体蕴含两个细分指标,别离是: 公布频率。 团队对外响应的速度不会大于其交付频率,公布频率束缚团队对外响应和价值的流动速度。它的衡量标准是单位工夫内的无效公布次数。 公布前置工夫(也被称为变更前置工夫),也就是从代码提交到性能上线破费的工夫,它体现了团队公布的根本能力。如果工夫开销很大,就不适合加大发版频率。 第二:需要响应周期。具体蕴含两个细分的指标,别离是: 交付周期时间。指的是从确认用户提出的需要开始,到需要上线所经验的均匀时长。它反映团队(蕴含业务、开发、经营等职能)对客户问题或业务机会的响应速度; 开发周期工夫。指的是从开发团队了解需要开始,到需要能够上线所经验的均匀时长。它反映技术团队的响应能力。 辨别交付周期和开发周期,是为理解耦并明确问题,以做出针对性的改良。其中,交付周期是最终的指标和测验规范。 第三:交付吞吐率。指的是单位工夫内交付需要的数量。对于这一点,常见的问题是,个数能精确反映交付效率吗?这是个问题。所以,咱们更多强调单个团队的需要吞吐率的前后比照,统计意义上它足以反映趋势和问题。 第四:交付过程品质。它蕴含两个细分的指标,别离是: 开发过程中缺点的创立和修复工夫散布。咱们心愿缺点可能继续和及时地被发现,并且在发现后尽快修复; 缺点库存。咱们心愿在整个开发过程中管制缺点库存量,让产品始终处于靠近可公布状态,奠定继续交付的根底。 交付过程品质的外围是内建品质,也就是全过程和全时段的品质。而非依赖特定的阶段,如测试阶段;或特定的时段,如我的项目前期。内建品质是继续交付的根底,对于其具体度量办法,下文会给出具体实例。 第五:对外交付品质。 它蕴含两个细分的指标,别离是:1)单位工夫的故障(线上问题)数;2)故障均匀解决时长。这两者独特决定了零碎的可用性。 如上图所示,这5组指标,从流动效率、资源效率和品质三个方面讲述了一个残缺的故事,答复了组织继续交付价值的能力如何这个外围问题。其中,继续公布能力和需要响应周期这两组指标反映价值的流动效率;吞吐率反映资源效率;交付过程品质和对外交付品质这两组指标独特反映品质程度。 一度量指标实例:缺点趋势图针对这些指标,云效提供了丰盛的度量图表,后续云效产品团队还会进行场景化的梳理,进步其可用性。我会及时跟进,用专门的文章介绍云效的残缺度量计划。在这里我先介绍一个例子——对于过程品质的度量图表。 “缺点趋势图”是云效新设计的度量图表,它反映交付过程中缺点发现和移除的工夫散布,以及缺点的库存趋势。 如上图所示,图形的横坐标是日期,横坐标上方红色竖条代表这一天发现缺点数量;横坐标下方绿色竖条代表当天解决的缺点数量;橙色曲线代表缺点存量。图中左右两个局部比拟了两种交付模式。 左半局部,团队属于小瀑布的开发模式。“迭代”后期,团队集中设计、编码,引入缺点,但并未即时地集成和验证。缺点始终掩藏在零碎中,直到我的项目前期,团队才开始集成和测试,缺点集中暴发。 小瀑布模式下,过程品质差,带来大量的返工、延期和交付品质问题。该模式下,产品的交付工夫依赖于何时缺点能被充沛移除,当然不能做到继续交付,也无奈疾速响应内部的需要和变动。并且,这一模式通常都导致前期的赶工,埋下交付品质隐患。 右半局部,团队开始向继续交付模式演进。在整个迭代过程中,团队以小粒度的需要为单位开发,继续地集成和测试它们,即时发现和解决问题。缺点库存失去管制,零碎始终处于靠近可公布状态。这一模式更靠近继续公布状态,团队对外的响应能力随之加强。 缺点趋势图从一个侧面反映了团队的开发和交付模式。它疏导团队继续且尽早发现缺点并及时移除它们。管制缺点库存,让零碎始终处于靠近可公布状态,保障了继续交付能力和对外响应能力。 缺点趋势图是云效研发效力度量图表中的一个。前面,我会用专门的文章系统地解读这些图表的应用。 效力改良的指标设定:局部团队的2-1-1愿景以上,咱们介绍了研发效力度量。基于这样的度量体系,应该设定怎么的指标呢?咱们在多个团队的施行过程中,逐步积淀出了可供参考的指标体系,它能够总结为三个数字——“2-1-1”。 “2-1-1”最后来自天猫新批发,其后在闲鱼和研发中台、阿里云等团队欠缺和采纳。什么是“2-1-1”呢? “2"指的2周的交付周期,85%以上的需要能够在2周内交付; 第一个“1”指的是1周的开发周期,85%以上的需要能够在1周内开发实现; 第二个“1”指的是1小时的公布前置工夫 - -提交代码后能够在1小时内实现公布。 达成“2-1-1”的愿景并不容易。1小时的公布前置工夫,须要继续交付流水线,产品架构体系和自动测试、主动部署等能力的晋升。1周的开发周期,波及更多的能力和实际,如:需要的拆分和治理,开发团队的分工协作模式,以及继续集成和继续测试实际;最艰难的则是2周的交付周期,首先它要以另外两个指标为根底,同时还波及整个组织各职能和部门的协调一致和严密合作; “2-1-1”的指标都是对于流动效率的,你可能会问,那资源效率和品质呢?咱们专一于流动效率,是因为它是组织效力改良的抓手,可能触发深层次的和系统性的改良。就像下面剖析的,为达成“2-1-1”指标,团队须要技术、治理、合作等方面的全面实际降级,而这些实际的落地,必然会带来资源效率和品质的晋升,并体现到相应的度量指标上。 当然,“2-1-1”是源自特定的团队,并非所有团队都要应用同样的值,比方对于波及硬件开发的团队,两周的交付周期通常过于挑战。组织应依据本人的上下文设定失当的指标,重要的是,它要指明改良的方向。 总结本文定义了研发效力,它指的是一个组织继续疾速交付价值的能力,能够从流动效率、资源效率和品质三个方面来掂量。其中流动效率是改良研发效力的外围抓手,它带来零碎和全局的改良。 如上图所示,研发效力最终为组织效力服务,必须体现到利润、增长、客户满意度等组织效力上;同时,研发效力的晋升要落实到具体技术和治理的实际中,才可能产生。 定义和度量是晋升研发效力的根底。置信你更关怀晋升研发的具体实际和办法。后续我将综合多个团队的实际,介绍可操作的实际体系和落地办法。

September 27, 2021 · 1 min · jiezi

关于研发:什么是云效-Projex云效Projex企业级高效研发项目管理平台

云效我的项目合作Projects是一款企业级高效研发项目管理平台, 提供了疾速实际的麻利研发项目管理机制,提供对需要、迭代、缺点各个维度的协同治理以及相干的统计报告,让研发团队高效合作、践行麻利并继续交付产品价值。通过与云效「代码治理」和「流水线」的联合,可打造一站式、端到端、全栈麻利的软件研发DevOps我的项目。 云效我的项目合作 Projex 视频详情点击查看云效Projex是新一代企业级研发合作平台,集成了麻利研发项目管理的最佳实际,提供了针对我的项目、迭代、需要、缺点等多个维度的协同治理以及相干的统计报告,让研发团队高效合作、践行麻利并继续交付产品价值。 通过与云效「代码治理」和「流水线」的联合,可打造一站式、端到端、全栈麻利的软件研发DevOps我的项目。 项目管理模板化 从需要发动、产品设计到研发交付,云效Projex笼罩研发治理的全生命周期。Projex反对Scrum麻利研发治理、经典项目管理、缺点治理等多种项目管理模式,您能够通过我的项目模板一键开启研发治理最佳实际。 麻利研发治理反对如Scrum、Kanban等经典的麻利研发场景,涵盖从需要治理、迭代布局、工作合作及迭代复盘,助力企业继续、疾速、高效地交付产品需要,实现业务指标。 经典项目管理反对打算型项目管理场景,通过WBS工作拆解、里程碑布局、及工作甘特图、风险管理等能力,对我的项目执行过程进行无效跟踪治理,达成我的项目打算指标。 缺点治理提供标准的缺点记录、跟踪和灵便的流程定制性能,无效治理缺点修复过程。联合全面的品质剖析报表,帮忙您无效治理研发品质。 自动化规定 图像链接:https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5626724261/p285818.gif 通过配置自动化规定,能够实现: 需要状态的主动流转工作的主动调配告诉的主动催办缩小用户的反复手工操作,让信息更高效的触达研发团队。 千人千面工作台 提供丰盛的数据卡片供用户自在搭配,构建适宜本人的集体工作台。 研发效力数据洞察 通过对研发行为数据的精密剖析,为组织提供研发治理的决策辅助。云效我的项目合作 Projex,在咱们的工作充斥着大大小小的「我的项目」、「工作」:流动策动、工程施行、IT 研发、风险投资等等。应用云效我的项目合作做「我的项目化」治理,团队布局工作事指标更清晰,执行更到位,而且实现过程也非常轻松,成员将有全新的合作体验。立刻体验

September 23, 2021 · 1 min · jiezi

关于研发:云效研发效能度量体系如何展示和解读交付效能数据

云效研发效力度量体系,如何展现和解读交付效力数据,一个迭代或者一个周期完结后,团队须要回顾复盘驱动效力改良,在回顾复盘前须要展现团队以后的效力数据。通过研发效力度量来度量团队是否具备了交付价值的能力。 作者:舍卫|阿里巴巴团体技术专家 阿里巴巴研发效力度量体系(如下图),通过五个维度来度量团队是否具备了「顺畅、高质量交付价值的能力」,包含需要响应周期、继续公布能力、交付吞吐率、交付过程品质和交付品质,期待能又快又多又好地交付需要。 1. 需要响应周期具体蕴含两个细分的指标,别离是: 交付周期:指的是从确认用户提出的需要开始,到需要上线所经验的均匀时长。它反映团队(蕴含业务、开发、经营等职能)对客户问题或业务机会的响应速度;开发周期:指的是从开发团队了解需要开始,到需要能够上线所经验的均匀时长。它反映技术团队的响应能力。 辨别交付周期和开发周期,是为理解耦并明确问题,以做出针对性的改良。其中,交付周期是最终的指标和测验规范。 需要累计流图 云效有丰盛的报表统计性能,接下来,我将率领大家一起来学习如何在云效上配置下面的报表。 如下图所示,从「统计」进入,点击「新建报表」,能够看到云效的新建报表列表。 阐明 立刻体验:云效项目管理 抉择「效力剖析」,而后点击「需要累计流图」呈现如下图所示的报表: 每一个蓝色的点代表一个曾经公布的需要,横轴是日期,纵轴是天数。这些蓝色的点越朝下越好,代表需要的交付工夫越短,响应力也越好;散点的密度越高代表交付频率越高,散点横向上更均匀分布代表继续交付的稳定性越好。 交付周期趋势图 抉择「效力剖析」,而后点击「交付周期报表」如下图,抉择按月统计,工作抉择「需要」,开始状态选「已抉择」,完结状态选「已公布」,更新左上角的图表名称为「交付周期趋势图」后保留,即可展示 开发周期趋势图 抉择「效力剖析」,而后点击「交付周期报表」 如下图,抉择按周统计,工作抉择「需要」,开始状态选「就绪(待开发)」,完结状态选「待发布」,更新左上角的图表名称为「开发周期趋势图」后保留,即可展示。 下图是开发周期趋势图示例,横轴是工夫,依照天然周排列,纵轴是需要个数。每个柱子代表的是当周已到待发布状态需要的数量,各柱子由不同的色彩沉积而成,蓝色代表需要的开发周期时长小于1周,绿色代表需要的开发周期时长在1-2周之间,橙色代表需要的开发周期时长在2-4周之间,红色代表需要的开发周期时长大于4周。 从上图能够看出,需要开发周期在1周内的需要数量在持续增长,同时一周内的占比也在逐渐晋升,因为该数据是在8月15日取的,所以最初一周的数据还不全。 2. 继续公布能力具体蕴含两个细分指标,别离是: •公布频率:团队对外响应的速度不会大于其交付频率,公布频率束缚团队对外响应和价值的流动速度。它的衡量标准是单位工夫内的无效公布次数。 •公布前置工夫(也被称为变更前置工夫):也就是从代码提交到性能上线破费的工夫,它体现了团队公布的根本能力。如果工夫开销很大,就不适合加大发版频率 公布频率 从需要管制图上能够看出继续公布能力的变动,如果需要散点的密度越高,则交付频率越高,反之则越低。 公布前置工夫 公布前置工夫,与团队的工程能力有很大的关系,这和云效新品代码平台和流水线强相干,这里暂不做解说。 3. 交付吞吐率指的是单位工夫内交付需要的数量。对于这一点,常见的问题是,个数能精确反映交付效率吗?这是个问题。所以,咱们更多强调单个团队的需要吞吐率的前后比照,统计意义上它足以反映趋势和问题。 需要吞吐率趋势图(按周) 在需要响应周期的图表中,需要吞吐率的趋势也已出现,下图中纵轴代表这一周公布需要的数量,所以柱子越高代表这一周交付的需要越多。这里吞吐率的计算是依照需要的数量来统计的,在需要颗粒度大小差异很大的时候,吞吐率数据会呈现偏差,所以在统计这个之前,期待团队能对需要进行拆分,拆分到工作量在2周之内。 需要吞吐率趋势图(按迭代)在自定义图表中抉择按迭代和工作状态,而后增加两个筛选条件:迭代和状态。迭代抉择须要比拟的几个迭代,状态只选已公布的需要。呈现如下依照迭代进行比拟的吞吐率趋势图。 4. 交付过程品质它蕴含两个细分的指标,别离是: •开发过程中缺点的创立和修复工夫散布:咱们心愿缺点可能继续和及时地被发现,并且在发现后尽快修复; •缺点库存:咱们心愿在整个开发过程中管制缺点库存量,让产品始终处于靠近可公布状态,奠定继续交付的根底。 交付过程品质的外围是内建品质,也就是全过程和全时段的品质。而非依赖特定的阶段,如测试阶段;或特定的时段,如我的项目前期。内建品质是继续交付的根底,对于其具体度量办法,下文会给出具体实例。 缺点趋势图 如上图所示,图中的横坐标是日期,横坐标上方红色竖条代表这一天发现缺点数量;横坐标下方绿色竖条代表当天解决的缺点数量;橙色曲线代表缺点存量。图中左右两个局部比拟了两种交付模式。 左半局部,团队属于小瀑布的开发模式。“迭代”后期,团队集中设计、编码,引入缺点,但并未即时地集成和验证。缺点始终掩藏在零碎中,直到我的项目前期,团队才开始集成和测试,缺点集中暴发。 小瀑布模式下,过程品质差,带来大量的返工、延期和交付品质问题。该模式下,产品的交付工夫依赖于何时缺点能被充沛移除,当然不能做到继续交付,也无奈疾速响应内部的需要和变动。并且,这一模式通常都导致前期的赶工,埋下交付品质隐患。 右半局部,团队开始向继续交付模式演进。在整个迭代过程中,团队以小粒度的需要为单位开发,继续地集成和测试它们,即时发现和解决问题。缺点库存失去管制,零碎始终处于靠近可公布状态。这一模式更靠近继续公布状态,团队对外的响应能力随之加强。 缺点趋势图从一个侧面反映了团队的开发和交付模式。它疏导团队继续且尽早发现缺点并及时移除它们。管制缺点库存,让零碎始终处于靠近可公布状态,保障了继续交付能力和对外响应能力。 在我的项目「统计」中,抉择「缺点剖析」,而后点击「缺点变化趋势」呈现如下图所示。 5. 对外交付品质它蕴含两个细分的指标,别离是: 单位工夫的故障(线上问题)数;故障均匀解决时长 这两者独特决定了零碎的可用性。 加餐:理解研发效力度量详情,欢送学习阿里巴巴研发效力晋升36计第4课-设置北极星指标,数据驱动效力改良 小结阿里巴巴研发效力度量体系,通过五个维度来度量团队是否具备了「顺畅、高质量交付价值的能力」,通过以上五组指标,从流动效率、资源效率和品质三个方面讲述了一个残缺的故事,答复了目前组织继续交付价值的能力如何这个外围问题。其中,继续公布能力和需要响应周期这两组指标反映价值的流动效率;吞吐率反映资源效率;交付过程品质和对外交付品质这两组指标独特反映品质程度。

September 18, 2021 · 1 min · jiezi

关于研发:云效Insight效能洞察一款面向企业研发管理层的数字化助手

云效·Insight(效力洞察)是一款面向企业研发管理层的数字化助手。云效效力洞察 Insight,通过针对研发过程数据的剖析和提炼,云效 Insight服务 提供了跨我的项目、跨代码库、跨流水线、以及组织人员剖析能力,为研发流程优化提供牢靠根据。云效 效力洞察Insight 的数据来自开发者在 Flow、Codeup、Projex 等云效板块中的日常开发行为,可能直观的反映企业的整体研发停顿状况,最大化施展团队作战劣势。 目前次要提供三个维度的度量 代码洞察云效代码洞察页面提供了企业代码仓库的全局观测视角,在这里您能够从本身具备权限的代码仓库里,筛选并查看全副或局部代码仓库的各项指标,以便疾速理解这些仓库的整体情况。 范畴抉择 通过页面顶部右侧的代码库抉择和工夫范畴抉择栏,能够切换统计指标所蕴含的代码库范畴和工夫区间范畴。 指标剖析 代码总行数:所选仓库以后的代码行数总和代码平安问题存量:所选仓库以后的存量平安问题总数区间代码增减量:所选仓库在以后指定工夫范畴内删除和新增的代码行数区间代码提交次数:所选仓库在以后指定工夫范畴内提交代码次数总和区间代码平安问题增量:所选仓库在以后指定工夫范畴前后的平安问题数变动量,正值示意问题数目减少,负值示意问题数目缩小 在所选工夫范畴内,每天各时段的代码提交次数散布。反映我的项目开发者在各时段的理论工作强度状况,通常来说,代码提交应该比拟平均的散布在工作工夫内的各个区间里。 在所选工夫范畴内,每天的新增和删除的代码行数。可能从侧面反映出我的项目的停顿速度和复杂度增长状况,如果某些日期的代码量出现异常的大幅数据增减,则该当予以必要的关注和进一步剖析。 在所选工夫范畴内,按仓库或开发者的代码行增减总量排名,可辨认出企业中的"代码奉献小户"和"代码清洁小户"。 所有来自非以后企业成员注册邮箱的代码提交,都会被归属于未知用户。 在所选工夫范畴内,按仓库或开发者的代码提交次数排名,可辨认出企业中具备小步快跑开发习惯的"麻利示范户"。 所有来自非以后企业成员注册邮箱的代码提交,都会被归属于未知用户。 在所选工夫范畴内,各仓库的平安问题变化趋势,请警觉其中平安问题数量较大和继续出现回升趋势的代码库。 在所选工夫范畴内,从代码库、人员维度查看平安问题数量统计,能够切换代码库、人员查看,须要留神察看平安问题次要集中在哪些人、哪些代码库。 代码总行数:仓库以后的总代码量平安问题总数:仓库以后的总问题量区间提交次数:所选工夫范畴内的代码提交次数区间提交评审率:所选工夫范畴内的代码提交中有进行MR评审的比例区间代码增减量:所选工夫范畴内的代码量变动我的项目洞察云效我的项目洞察页面提供了跨我的项目的综合度量报表,在这里您能够从本身具备权限的我的项目里,筛选并查看全副或局部我的项目的各类指标,以便比照我的项目停顿和全面剖析工程进度状况。 范畴抉择 通过页面顶部右侧的项目选择和工夫范畴抉择栏,能够切换统计指标所蕴含的我的项目范畴和工夫区间范畴。 指标剖析 显示所选项目标需要、缺点、异样工作项,点击能够进一步查看相干的具体工作项,比方查看已阻滞的事项具体内容: 目前统计指标如下: 进行中的需要:在所选我的项目中以后已开始且尚未实现的需要总量区间交付周期时长:所选我的项目在指定工夫范畴内实现的事项,从开始到实现经验的均匀天数区间事项吞吐量:所选我的项目在指定工夫范畴内均匀每天实现的事项数量修复中的缺点:在所选我的项目中以后已开始且尚未修复的缺点总量再次关上的缺点:在所选我的项目中以后曾经修复后又从新关上的缺点总量已超期的事项:在所选我的项目中设置了”预期实现工夫“但未如期完成的所有事项总数已阻滞的事项:在所选我的项目中曾经间断14天无状态停顿的所有事项总数 每日需要增减数目以及尚未实现的存量数目,反映需要的累积状况。其中"需要存量"为当日未开始和进行中的需要总量。 每日缺点增减数目以及尚未实现的存量数目,反映缺点的累积状况。其中"缺点存量"为当日未开始和修复中的缺点总量。 所选我的项目中已开始且尚未实现的所有迭代,反映我的项目以后的工作进展。若存在已超期的工作项或迭代,请予以关注。 根据我的项目的以后成员数目或所选工夫区间内的理论工时填报量排名,反映企业在各我的项目上的资源投入散布状况。 根据员工以后被指派的进行中事项数目或所选工夫区间内的理论工时填报量排名,反映员工当前工作负载状况和近期工作饱和度。 所选我的项目在所选工夫区间内的交付状况,其中区间均匀交付周期是指单个事项从开始到实现的天数,当该数值超过14地利将以红色文字示意。当存在均匀交付周期较长或超期事项较多的我的项目时,请予以关注。 团队洞察以后团队洞察提供了成员排期统计性能,在这里您能够疾速筛选并查看企业成员在指定工夫范畴内的工作量排期状况,以便进行工作安顿和调整,找到最适宜承当新工作的成员或团队。团队洞察数据仅企业内增加为 Insight 利用的管理员可查看。 用户组治理 在云效团队洞察页面,您能够将本人的组员或者我的项目组成员创立创立用户组,以便能够依照团队、或者我的项目来查看相干成员的工作排期。 抉择成员时,反对抉择我的项目组成员来快捷创立用户组,同时也反对从所有企业成员中抉择来创立用户组,目前反对将 30 人增加至一个用户组。 范畴抉择 通过页面顶部右侧,您能够切换通过工时、事项来看用户组成员的工作量排期。同时还能够: 通过工作项状态、工作项类型(蕴含需要、工作、缺点)进行过滤;通过抉择依照天、依照周的模式来查看。 成员排期统计 统计的事项范畴为用户组内成员已排期的事项,在这里您能够: 查看成员将来 30 天已排期的工作饱和度(按工时)、或工作类型散布(按事项)! ...

September 16, 2021 · 1 min · jiezi

关于研发:高效研发流程

明天咱们将从从产品指标到产品路线图、从产品路线图到公布打算、从公布打算到迭代打算、从迭代打算到迭代的落地执行四个方面来全面解读高效研发流程,这也是一套残缺流程中的四个步骤。 筹备好小本本听课吧! 一、从产品指标到产品路线图满足用户诉求是产品的根底性能,在此之上还有一个更高的冀望,即产品的指标。通常状况下产品指标与产品的收益、市场份额、流水无关。在制订具体产品指标时,须要思考产品的商业模式以及产品所处的阶段。好的产品指标是具体的、可掂量的、绝对稳固的。 在进行产品指标阶段性地拆解时,须要思考拆解的维度与办法。除了依据阶段性的工夫维度进行拆分外,还能够依据产品的里程碑进行拆分。 二、从产品路线图到公布打算在理解如何制订产品公布打算之前,咱们须要先理解一个工具:用户故事地图。用户故事地图实际上是一个残缺的用户故事。它能够帮忙咱们加强团队合作、洞察实在需要、打磨低劣产品。 想要创立用户故事地图,首先要有用户故事地图的框架。它的外围是一条从左到右的工夫线,而后从上到下依照演绎构造分为三个层级。这一条工夫线上方的一级粒度的性能需要,在工作中,咱们称之为Epic,也就是橙色卡片。这条工夫线下方的第一行为二级粒度的性能需要,在工作中,称之为Feature,是黄色卡片。在二级粒度性能下,蓝色的卡片为三级粒度的需要,工作中,称之为Story,是蓝色卡片。 此处咱们提炼出了用户故事地图创立中五个重要的步骤: ① 一步一步写出你的故事 ② 组织情节 ③ 摸索代替故事 ④ 提取故事地图的骨干 ⑤ 切分出能帮你达成特定指标的工作 咱们通过一个“训练智能机器人小A从起床到出门”的简略例子来更分明的理解这五步骤。 首先咱们应用蓝色卡片依照步骤写出每个工作,每张卡片只写一个工作,工作以动词结尾,如“睁眼”、“关闹钟”、“穿拖鞋”、“叠被子”等等。而后依照工作的产生程序从左到右的组织卡片摆放。 接下来第二步,对所有的工作进行提取,失去概括性的行为,把这些行为放到黄色卡片上,也就是feature。如:“睁眼”、“关闹钟”这些行为能够归为“醒来”后要做的事件;“穿拖鞋”、“叠被子”这两个行为能够归为“起来”后要做的事件。 接下来进入第三步:摸索代替故事。细节、代替、变动和异样形成故事地图的主题。比方:工夫富余能够睡个回笼觉,楼上装修被提前吵醒等等可能产生的变动和异样。咱们须要将这些工作补充进地图。 而后进入第四步:将一系列相似的工作提取进去,造成更大的指标。在相似工作的上方,放一张橙色的卡片,也就是之前提到的Epic,卡片贴上一个动词短语,使其足以笼罩其下方所有工作卡片所要表白的意思。例如:“起床”能够概括“醒来”和“起来”;“如厕”能够概括“如厕”和“刷牙”。 目前曾经实现了较为残缺的故事地图。而后进入第五步,切分出能达成特定指标的工作。先确定本次迭代须要实现的个性/指标,应用切分来辨认和特定相干的所有工作和细节。 在“训练智能机器人小A从起床到出门”这个例子中,分为了三个版本。在第一个版本15分钟起床,回笼觉这张卡片显著是不须要放到其中的。在这些的story中选出满足15分钟起床的事务并将其放入都第一个版本中。至此咱们也就实现了一个简略的用户故事地图的创立。 下面这张图片是理论工作中对用户故事地图的利用,能够看到在理论工作中残缺的用户故事地图所蕴含的内容十分庞杂。 实现用户故事地图之后,就须要制订公布打算。在创立用户故事地图的第五步中,咱们切分出了达成特定性能的工作指标,每一个公布打算都对应着一个版本。具体的步骤如下: ①Big Story进行细化探讨 ②依照价值和重要水平进行版本布局 ③确定每个版本的冀望达成指标 ④确定每个版本的内容 ⑤团队达成共识 通过以上步骤,就根本确定了用户故事地图的公布打算。 三、从公布打算到迭代打算第三局部次要解说集中公布式模式这一罕用的模式,在集中公布式模式中,一次公布蕴含屡次迭代;在迭代公布模式中,一次公布等于一次迭代。 很多大型项目都在应用这一模式,通常是每月公布一次,一次公布蕴含四个迭代,四个迭代之后,公布一次版本。 从公布打算到迭代打算共包含四个内容。 1、用户故事拆分 用户故事的拆分对迭代速率有肯定影响。对用户故事的拆分要做到拆分出的故事尽量小,然而要适当,并不是越小越好。避免出现一个迭代内无奈实现的故事。 2、用户故事优先级 在实现用户故事拆分后,须要对用户故事的优先级进行排序。用户故事的排序其实是对需要的一个排序,优先级排序有许多办法,如高中低、数字排序、衣服尺码L、XL等形式。优先级决定排入迭代的程序。 以一个两周的迭代工夫为例,假如咱们有这样一个需要,后面的数字是需要卡片的序号,前面的数字从100到45,这是我的项目优先级排序的一个形式。每一次迭代能做4个卡片时,咱们就会把优先级最高的卡片放入迭代池。 而当第二次迭代时,需要产生了变动,呈现了x和y两个新的需要,x和y有着较高的优先级,那么咱们依然将优先级最高的四个卡片放入迭代池中。 第三次迭代中又插入了新需要z,需要z也有较高的优先级,那么当咱们进行迭代的时候,需要z就会顶替另一个需要被放入迭代池中。 通过以上的例子能够看到,在本来的迭代打算中,12张卡片会被按程序放入迭代池中,而真实情况是插入了更高优先级的需要,替换了低优先级的需要,把低优先级的需要放入了下一次迭代中。这就是优先级排序对迭代打算的影响。 3、用户故事估算 在迭代之前,须要对用户故事进行估算,用户故事估算实际上是对工作量的估算。这个工作量体现的是团队均值能力。 通常在公司内有不同级别的员工,高级别的员工和低级别的员工实现同一工作所需的工夫是不同的。所以在进行用户故事估算时就须要躲避掉技能的差别,依据团队的均值能力来进行估算。 用户故事估算通常参考是团队的历史数据,咱们能够从历史数据中进行正当的估算。而没有这种历史数据的团队,能够参考一下相似团队的数据。当这两者都不具备时,就只能采纳本能估算的形式了。 4、迭代打算制订 当后面三步全副实现后,能力开始指定迭代打算。 将已拆分好的用户故事依照优先级顺次放入迭代池中,对每个要进行迭代的用户故事进行估算,确定好迭代的工夫期限。所以咱们就制订出了迭代打算。 当需要变更,团队人员进行调整以及预估不精确时,咱们须要对迭代打算进行调整。调整形式有:范畴调整、需要置换;延期;加人、加班赶工三种形式。 咱们举荐采纳范畴调整、需要置换这一形式,也就是后面提到过的,插入高优先级用户故事,顺延低优先级故事到下一次迭代的形式。 四、从迭代打算到迭代的落地执行对于一个团队来说须要通过迭代打算会、站会、需要评审会、迭代回顾会等会议对打算进行剖析和迭代,而后进行开发和测试。在整个过程中无论是开发还是测试都是以story的力度进行的。剖析、开发与测试这三个步骤是并行的。 团队能够应用卡片墙标注实现的工作和未实现的工作以及遇到的bug等。通过这种形式,可能对执行状况有清晰的认知,对执行过程产生踊跃的影响。 点击进入理解更多技术资讯~~

September 15, 2021 · 1 min · jiezi

关于研发:云效研发测试如何进行缺陷管理

云效研发测试如何进行缺点治理,作为测试人员,是否会呈现缺点跟着跟着就丢了?缺点治理经验提交、解决、验证等不同环节,是否感觉停顿不通明?数据不直观?很想及时的发送缺点报告却消耗大量的工夫、人力?是否想改良却苦于没有具体的数据撑持?那么利用云效研发测试,如何进行缺点治理呢? 作者:红英|阿里巴巴团体技术专家 缺点治理是每个测试人员日常工作中很重要的一部分,关乎着产品的品质问题,治理好缺点对整个产品开发过程至关重要。「云效」能够很好地反对测试人员对缺点进行治理,包含缺点的创立、修复、解决、验证、从新关上等环节。应用「云效」将帮忙:•测试人员:不便创立缺点,并清晰明确地指派给开发人员,开发人员验证通过后及时验证并敞开缺点;不便获取缺点数据,主动生成数据报告,便于团队反对和工作汇报。•开发人员:高深莫测指派给本人的缺点,并及时的修复,通过把控缺点的过程品质,缩小返工,达到晋升产品的总体品质。•开发负责人:通过可视化看板直观理解缺点的整体停顿,过程数字化,合作透明化,基于数据统计及时调整改良。 1. 搭建缺点工作流 如下图所示,咱们先在云效上搭建缺点流转的整个工作流,展现缺点从创立到验证敞开的全流程。 阐明 立刻体验:云效项目管理 咱们举荐的缺点工作流是:待处理/从新关上->修复中->已解决/反复Bug/设计如此/无奈重现/延期解决/已回绝->已验证缺点的状态精简一下分为三类:待处理、已解决、已敞开缺点。咱们为了细化辨别这三大类,人为地减少了状态,如下的具体划分。•待处理缺点–待处理: 新减少的、须要解决的Bug。–从新关上:从新关上、激活,须要解决的Bug。–修复中: 正在定位问题,或正在解决中,或曾经解决但未部署失效。•已解决缺点–已解决: Bug曾经解决,并且批改后程序已部署失效。–延后解决: 此Bug不在本我的项目的工作范畴内,在后续版本中修复。–无奈重现: 不能在以后环境中重现。–反复Bug:和其它Bug形容景象反复。能够配置抉择此状态时必填关联的缺点ID–设计如此:属于依照产品设计实现,不是问题。–已回绝(不解决):问题的确呈现过,然而因为产品改变曾经修复或者性能废除,问题目前已不须要解决•已验证(已敞开)缺点–已验证(已敞开): 验证后,此Bug能够敞开。加餐 :需要工作流设置的规定:欢送学习「阿里巴巴研发效力晋升36计:照亮问题,效力晋升从可视化交付过程开始」。新建我的项目时,抉择「缺点治理」模板,将默认蕴含了该工作流。当然,你也能够依据你的企业理论工作流程来配置。 2. 测试人员创立缺点如下图所示,在「缺点」下切换到「看板视图」,点击「待处理」列底部的「+」增加新的缺点,就会有一张新的卡片。个别状况下,「待处理」列就是测试人员新创建的缺点。 阐明 立刻体验:云效缺点治理 标准缺点字段 在缺点收集的过程中,测试人员须要对缺点的内容进行编辑,包含设置缺点的字段和编写缺点说的重现步骤。 要设置的字段至多包含:备注(缺点公布和冀望)、重大水平、缺点分类、缺点类型、优先级。 开发人员解决(修复)缺点开发人员对缺点初步剖析,并与测试人员确认缺点的信息后,更新缺点负责人为本人,移入「修复中」列(如下图),进入缺点修复流程。 开发人员对缺点修复实现后,移入「已解决」列,并填写缺点的类型、重大水平。 开发人员对缺点剖析后,并与测试人员充沛沟通后,移入「延后解决/无奈重现/反复Bug/设计如此/已回绝」列,并填写缺点的类型、重大水平。 测试人员验证缺点当缺点被开发人员脱入「已解决/延后解决/无奈重现/反复Bug/设计如此/已回绝」后,测试人员验证缺点,能够把需要卡拖拽到「已验证」,如下图所示: 测试人员通过自定义报表治理和监控缺点停顿一个我的项目、迭代、或是通过一段时间后,测试人员依据须要,在我的项目统计中创立缺点报表。 说了这么多,接下来咱们筹备了一份 Checklist 帮你疾速开始:•配置缺点的工作流(可间接应用「缺点治理」模板)•配置缺点的自定义字段•下一季的缺点治理试着用云效来跟进吧 更多相干内容 系列课程:麻利研发与效力晋升36计 利用云效研发测试如何进行缺点治理,云效我的项目合作 Projex是新一代企业级研发合作平台,集成了麻利研发项目管理的最佳实际,提供了针对我的项目、迭代、需要、缺点等多个维度的协同治理以及相干的统计报告,让研发团队高效合作、践行麻利并继续交付产品价值。

September 7, 2021 · 1 min · jiezi

关于研发:什么是分支模式如何在云效流水线Flow中高效落地分支模式的

什么是分支模式?如何在云效流水线Flow中高效落地分支模式?在应用分支模式过程中用户能够只须要关怀集成和公布哪些 feature 分支,而对 release 分支创立和治理、分支合并等一系列工作,能够托付给云效 Flow来 实现。可能很好的节俭咱们的工夫,更高效的实现工作。 什么是分支模式? 云效Flow对分支模式提供了强有力的反对:用户能够只须要关怀集成和公布哪些 feature 分支,而对 release 分支创立和治理、分支合并等一系列工作,能够托付给 Flow来 实现。本节内容具体介绍分支模式下,各(类)分支的应用形式。 master 代表最新公布版本 个别状况下, master 分支代表最新公布版本。当须要最新公布版本的内容时,间接取分支末端即可。不管其余哪类分支,都倡议个别从 master 分支创立,并且常常从 master 分支合并,以便跟上“潮流”,缩小未来集成时的各种问题,比方代码合并抵触。每当软件正式公布前,零碎会确保它基于 master 最新。每当软件正式公布后,零碎会把相应内容合并回 master,以便让 master 分支始终代表最新公布版本。一般来说,使用者不要间接“写”货色到master分支。把“写”的工作交给零碎适时主动实现。 在各 feature 分支上开发 一条 feature 分支(又称变更分支、开发分支),通常用来承载一个缺点的修复,或者一个需要(如果不是很大的话)的开发,或者工作合成后一个工作的开发。一般来讲,基于 master 分支最新版本创立 feature 分支。而后在 feature 分支上开发、测试,直到这个 feature 性能实现,品质 OK,筹备好去集成和公布。 release 分支上的集成 release 分支用于集成和公布。基于 master 分支最新版本创立一条 release 分支,而后把想要集成的各条feature分支合并到这条release分支,进行部署和测试工作。如果有新的 feature 分支要退出本次集成,那就把它也合并进这条 release 分支,而后再次部署并测试。如果测试发现问题,就到 feature 分支上修复,而后把它再次合并到 release 分支,把修复带到 release 分支。当然如果一个 feature 的问题太多太大,那罗唆就放弃它。也就是说,新建一条 release 分支,把其余 feature 分支都合并过来,唯独不再合并这条 feature 分支。就像 master 分支一样,release 分支也是由零碎主动治理的。使用者不要间接在下面改代码,代码批改请总是在 feature 分支实现。 ...

August 31, 2021 · 1 min · jiezi

关于研发:案例|自建or现成工具小型创业团队敏捷研发探索

简介: 实际和踩坑倡议。 我是刘永良,是一名全栈开发者也是一名创业者,来自济南——一个目前被称为互联网高地的中央。2020年4月和三位气味相投的敌人,在济南独特创立了山东旷野网络科技有限公司,次要从事自有我的项目和外包我的项目开发。 与老本反抗,与工夫赛跑:初创企业的生存之道 作为小型守业团队,麻利开发从头至尾都贯通于我的项目当中,疾速交付、继续批改、公布、迭代,都是咱们迫切需要解决的问题。 公司创建之初,为了生存,团队大部分的工作工夫在于为客户开发各种外包零碎,研发各种管理系统和小程序。基于老本等诸多最事实的问题, 咱们就在寻找适宜的开发模式或开发实际,最后思考过自搭建环境,但搭建起来麻烦,服务器配置要求也挺高,还须要人来保护。起初比照过多款开发工具,最终通过综合思考之后,还是抉择了云效作为咱们公司根本的研发开发工具。 起因如下: 1、能够很好地节约老本; 2、可供使用的功能丰富; 3、背靠阿里云,零碎稳定性无可非议; 4、云效紧扣麻利研发; 5、与钉钉联合严密,不便成员治理和我的项目揭示。 小而美的试错,动摇前行的脚步 云效很好地帮忙咱们解决了目前的问题,帮咱们引入了以下次要实际: 项目管理清晰独立。团队会有多个我的项目同时进行,如何更好地治理需要,拆分工作,代码治理,继续公布,云效都很好地解决了这些问题。多个我的项目独立,能够设置不同的研发流程,互不烦扰。 我的项目研发流程可自定义。目前团队只有四人,因为每个人的精力有限,次要的精力还是在于研发当中,对于我的项目内应用到的性能越少越好。云效局部性能目前咱们应用不到,比方测试计划、日程、统计概览等等。自定义的研发流程对咱们来说特地重要,这样咱们就精简了局部性能,留下了罕用的性能,这样也进步了开发效率。 弱小的代码治理和部署性能。为了进步开发迭代,咱们应用到了代码治理、流水线。提交代码后主动部署服务器,为咱们省去了大部分的工夫。同时还可对代码品质进行检测等,这些都为咱们躲避了很多无奈发现的开发谬误。 知识库收集分享内容。知识库也是咱们团队最常应用的性能,为了集中我的项目信息,咱们大部分内容都会寄存在知识库当中,一度甚至都疏忽了我的项目中需要和测试模块的应用。能够说知识库能做任何事件。对咱们来说寄存需要文档、搁置原型设计图、寄存UI等等,咱们把它施展到了极致。当然知识库也是咱们团队积淀内容很重要的一环。咱们把收集的技术文章通过加工后,也都会放到技术知识库中,供团队成员共享。 给初创企业的一些教训 守业不易,在每一步没有走对的状况下,就会面临深渊,旷野网络也在一直试错和寻找更多业务前途中, 这一年多走来也踩了些坑,过了些河,总结三点供跟咱们有一样痛点的企业参考: 1、抉择牢靠地工具对守业小团队来讲,至关重要。 它能够节俭开发工夫,让团队成员集中精力于我的项目开发,而不是被工具所解放。 2、善用佳软,找到属于本人的应用形式。 云效功能强大而丰盛,在应用过程中,能够依据本身应用习惯来持续调整精简。不须要八面玲珑,每项性能都要应用到,为了应用工具而是用工具,那就得失相当了。 3、拥抱先进开发管理工具。很多企业还在用表格治理需要、手动更新代码,多个开发管理系统独立等等问题。应适应古代开发流程,拥抱更先进的工具,来进步生产效率。 最初,作为一个守业经验者,说下最近一年多的感触:尽管这一年挺繁忙的,但播种颇多,经验的事件也挺多的,比以前单纯作为程序员要经验的货色多太多了。咱们四个守业小伙伴都一条心,劲往一起使,这种感觉很棒。尽管比拟累,然而大家都比拟开心。咱们感觉只有有一个适合的机会,就应该能做起来。云效作为效率开发工具,为小型守业团队提供了动摇地基石,让咱们能够走的更远,心愿有一天咱们能成为济南互联网行业的一片新瘠田。 原文链接本文为阿里云原创内容,未经容许不得转载。

August 2, 2021 · 1 min · jiezi

关于研发:聊一聊在阿里做了-8-年研发后我对打造大型工程研发团队的再思考

作者|一啸起源|尔达 Erda 公众号 任何大型工程项目的研发都会波及到两个十分共通的难题: 第一个是稳定性问题,越大的我的项目越难做稳固,“魔鬼在细节里”;第二个是工程研发效率。本文咱们先聊聊第二个问题,前面再谈谈 Erda 的稳定性建设。具体议论如何打造大型的工程研发效率之前,先回顾一下我之前在阿里的 8 年研发经验,心愿借此造成一个有带入感的比照。 我在阿里的经验DataX我刚毕业退出淘宝后,第一次真正接触的研发工作就是参加 DataX 的开发。 datax 的工作原理就是全量将某个数据库或存储中的数据读出,而后再全量写入到另一个数据库或存储中,总结起来,就是为了将数据从一个中央传输到另一个中央。过后在淘宝的外围场景是将 MySQL 的表数据传输到 hdfs 中进行 mapreduce 的大数据计算,除了 hadoop 计算场景外,还有将 MySQL 数据导入 Oracle RAC 集群进行剖析的场景。 datax 的设计其实很简洁:1 个外围框架 + N 个数据库或存储插件。过后整个研发团队也就不过 4、5 集体,我次要负责 Oracle 数据库的插件开发,很多时候都是在写插件,因为插件的运行自身也就是单机程序,所以整个研发工作根本都是本人一个人实现。除了最初联调的时候,过程中也不须要过多的简单合作,研发的效率是十分高效的。 Logserver起初,我开始接触 logserver 的开发,logserver 就是接管从淘宝每一个页面发送过去的埋点申请,生成上游可能生产的日志数据。 除了上下游的需要团队外,这个服务的开发只有我一个人全权负责,我的次要工作就是将 logserver 从 apache httpd 的架构迁徙到 Nginx 架构上,外围工作就是在 Nginx 上开发一个模块。logserver 过后在很长时间内都是整个淘宝 qps 量最大的服务,没有之一(明天就不分明了)。 当初回忆一下,大都是当初一个人在缓缓倒腾这个 Nginx 模块的场景。logserver 和 datax 一样,都是单机版程序,同样不须要太多的合作开发。 dbsync接着,我又投向 dbsync 的开发。dbsync 和 datax 要做的事件实质上差不多,就是想从全量同步数据降级到实时的增量同步。过后次要做的是从 MySQL 实时同步到 HDFS 上,印象中只有 3 集体参加开发,而我负责的工作就是写一个 C 程序从 MySQL 中实时地将 binlog 日志订阅进去。 ...

July 27, 2021 · 3 min · jiezi

关于研发:低代码原生安全

在帮忙程序员早日辞别996这件事上,“低代码”被寄予厚望。最近,一则来自西门子数字化工业软件的音讯激发了不小水花:西门子旗下的企业级低代码平台Mendix正式发表登陆中国。简直同时,西门子数字化工业软件与腾讯云也独特公布了将Mendix落地部署于腾讯云上的单干音讯。“强强合作”之下,预示着一条商业应用程序的开发新赛道正减速布局。 尚处于低谷阶段的资本市场在数字化大潮下无疑是灵活且审慎的。马太效应愈演愈烈,资本也在搜查那些更合乎数字化降本增效和翻新倒退需要的优质标的。聚焦业务与IT无缝集成的低代码平台正是热点之一。 据海比研究院统计,2018-2020年,中国低/无代码畛域总体投融资事件共16起,融资总金额近15亿人民币,融资企业总估值近70亿元。这个仍具广大后劲的细分赛道,正在批量吸引中国顶尖公司和机构的减速进场或继续加注。 但这个宣称可能让程序员辞别“996”的“新物种”,到底是什么?风口造就的新赛道下,低代码暗藏着怎么的价值劣势?而又将是什么能撑持它走的更远? 01低代码:正在大放异彩的开发界“新物种”如果将从需要调研、零碎设计到编码、测试、交付的开发流程归为传统开发模式,那么以可视化拖拽和配置(或大量编码)为特色的低代码的呈现,则是软件开发为适配数字化时代倒退需要而孵化出的“新物种”。 2018年6月,一家彼时已成立16年的低代码平台——OutSystems发表取得私募股权投资机构KKR和高盛的3.6亿美元投资,估值超过10亿美元,一举成为低代码开发畛域的“新晋独角兽”。同年,西门子以 6 亿欧元收买低代码利用开发畛域厂商Mendix。在资本激发之下,“Low-Code(低代码)”这一由Forrester于2014年首次提出的概念减速落地起势。 Forrester早前报告就曾预测,低代码开发平台市场将从2015年的17亿美元增长到2020年的155亿美元。同样地,Gartner报告则预测,到2024年,65%的利用开发将通过低代码平台实现。而海比研究院、中国软件网联结中国软件行业协会公布的《2021年中国低代码/无代码市场钻研报告》数据则很好地验证了这一预测:目前,我国低代码整体市场规模已达19亿,并将在将来五年放弃49.5%的复合增长率。低代码成为整个中国ICT产业当中最显著的增量市场。 无论是从国外还是国内来看,低代码这一可通过通用、可重复使用组件化模块,疾速生成应用程序的开发模式,都是一个正在大放异彩的将来之势。“起势飞奔”背地,更值得探索的是深层的驱动之力。 从技术自身上看,低代码利用开发体现出的全栈可视化编程、全生命周期治理、扩大能力、可重用性、跨平台可拜访性等能力特点,其实都在指向构建出降本增效、高场景贴合和弹性拓展的外围价值劣势,以匹配数字化时代“水涨船高”的利用开发需要。 具体而言,一方面,在低代码的开发环境中,小型部门到大型简单工作的利用程序开发都被简化减速。“图形化开发环境+大量代码编写”的“积木式”开发部署与治理,可能实现业务利用的疾速交付。一改传统开发短则耗时一个半月,长则耗时三个月之长的简短流程,破解合作不畅、管理效率低下等难点,高效响应数字化时代的需要节奏。Forrester 晚期调研数据显示,低代码平台能把开发效率晋升了 5-10 倍,且这一倍数仍在继续上涨中。 另一方面,借助低代码平台,企业仅需通过配置,就可实现OA、CRM、BPM等软件开发全生命周期流程的需要。同时,利用开发技术门槛的升高,让非专业开发者也经简略培训退出到业务利用开发中。洽购与人力老本“双降”之下,业务利用开发天然更“省”。 此外,低代码“快”、“省”还带来了高场景贴合及高弹性拓展的附加价值:一线业务人员的参加使得利用零碎更贴合业务理论需要,带来更好的客户体验;而灵便的用户界面,也使得业务利用零碎更具拓展性,以满足企业应用为适应市场环境疾速迭代的需要。 从寰球IT宏观格局上来讲,时代、企业和技术等的变革倒退为低代码的奔涌前行提供了“肥沃土壤”。Gartner数据预计,2021年市场对于利用开发的需要将五倍于IT公司的产能。当数字化转型已成寰球经济的必然之势,低代码平台的利用直击无奈疾速试错、信息孤岛、切换老本、不足IT人才等痛点,成为数字化减速转型周期的重要助力。 随着企业降本增效需要的攀升,低代码在产业设计研发和利用中体现出的双向疾速“共振”,对企业老本管制具备重要现实意义。换言之,对于想更加专一于倒退的数字化转型企业而言,直观易用、简略定制的低代码是一个很好的“助攻”。 在技术成熟度方面,国内低代码利用通过数年积攒后,开始进入“爬坡”阶段,并处于一个与市场需求正向同步的过程,倒退空间与前景都较为可观。 新基建和产业互联网减速纵深倒退的背景下,一场产业数字化信息系统建设格局的“巨变”正在酝酿。但作为曾经做好“腾飞”筹备的利用开发新物种,低代码要最大限度地施展价值劣势,以分享赛道红利,则有更深层的问题须要厘清。 02云原生:低代码升温的新平安“明码”家喻户晓,低代码与传统开发模式最大的不同在于因开发流程各异带来的周期长短。从数月到低至分钟级、秒级甚至是百毫秒级的开发周期缩减,让每一个身处数字化转型大潮下的企业都为之吸引。 然而,随同着数字化过程的深刻,云计算作为要害基础设施之一的大规模利用,使得云逐渐成为业务利用开发的新环境。而云时代面临的传统平安算法滞后、平安边界进攻体系生效、攻防节奏放慢、数据资产管理机制亟待优化等平安挑战的变动,让相干行业对剔除了重复测试之后的低代码利用开发之安全性开释出了一些担心。 只管业内专家称,低代码平台容许风险管理流程集中式管制的特色以及运维技能门槛的升高和流程的简化,可能升高危险数据量和晋升风险管理能力。也就是说,从肯定水平上看来说,安全性是低代码利用开发平台的“自带”属性。然而,云环境下传统平安威逼与新生平安问题杂糅的场面,加之云攻打规模的继续扩充,业内人士对低代码这一“自带”平安属性的效用,仍有较大疑虑。 这一背景下,包含奥哲CTO张华等在内的行业专家提出,云原生确是当下低代码开发利用的最好架构抉择。低代码与云原生的井水不犯河水,既是企业应答降本增效、疾速迭代的刚性需要,更是保障云生态下企业应用开发平安的新支撑力。云原生宛若低代码解锁新一轮升温倒退的“新密码”。 借助云原生平安开箱即用、弹性、自适应、全生命周期防护等的劣势,低代码平台上的利用开发将具备“人造”原生平安属性。基于云原生架构的低代码开发既能帮忙企业在晋升业务利用开发效率的同时,又能实现平安能力的弹性增长;同时,也能帮忙企业用户扛住高强度攻打,在安稳期开释多余的计算能力,缩小企业部署老本。此外,能够更高的标准化,构筑更为协同的平安生态,促使企业更加从容地破解前端底层破绽、系统升级带来的新危险挑战。毫无疑问,在安全性失去无效解决之后,搭载了云原生平安能力的低代码势必在数字化大潮下解锁出一条迅速升温的倒退新赛道。 截止目前,OutSystems已在全国25个国家领有400多家企业客户,笼罩包含丰田、罗技、德勤、施耐德电气和通用金融等。年度经常性支出已远超1亿美元,且仍以超70%的增长率逐年增长。对于产业数字化而言,以低代码为代表的新型利用开发模式终将成为常态。数字生态下,平安问题尚未有消除之势,云原生平安正在尝试用“人造”基因的力量,为低代码“精益求精”,将这种新的开发方式带到更多的业务畛域中。一场对于利用开发的平安变革正在悄悄升温。

February 3, 2021 · 1 min · jiezi

关于研发:道高一丈且看CWE42的新特性

摘要:CWE在往年2/24公布4.0,首次将硬件安全漏洞纳入了CWE中,6/25公布4.1, 8/20就公布了4.2。依照常规,先说故事咱们先说下CWE的幕后老板--MITRE[1]。 MITRE称本人是一家“非赢利组织”,通过联邦赞助的研发核心(Federally Funded R&D Centers(FFRDC))运作。指标是为更平安的世界解决问题(we solve problems for a safer world)。 1.1. MITRE的起源MITRE的历史能够追溯到美、苏二战后的热战期间。50年代前期,面对苏联核打击的威逼,美国空军呐喊麻省理工学院帮忙其建设一个防空零碎,以帮忙其侦察即将来临的轰炸机。该研究所提出了半自动高空环境(SAGE)零碎联合了雷达,无线电和网络通信来检测敌机,对左近的空军基地收回警报并不断更新,这些基地的战机会及时升空拦挡即将来临的威逼。SAGE也是美国的第一个现代化防空零碎[6]。MITRE的前三个字母MIT就是麻省理工学院的缩写。记得以前的一个法国电影《蛇》(1973),讲的就是这个历史背景下的故事人员发现苏联制作策略轰炸机残余的资料,做成了衣架被用到民用航空上,人员就千方百计偷了来,交给实验室剖析,厉害的科学家们,通过资料的组成成分,推算出了由此资料制成的轰炸机满载时的航程。有趣味的敌人能够翻出来看一看,那个年代十分经典的谍战片。 1.2. 驰名的ATT&CK对于MITRE这个名字,可能更多的人会先想到这些年比拟火的MITRE的ATT&CK攻打框架,这个引领寰球网络安全攻防潮流的平安技术战术知识库框架。10/27号MITER刚刚公布了ATT&CK的第8.1版本。说它是个战术的常识框架,是因为ATT&CK将入侵期间可能产生的状况,细分成14个策略阶段:侦察、资源开发、入侵初期、执行、长久化、权限晋升、进攻回避、凭证拜访、发现、横向挪动、收集、指挥和管制、浸透、影响。而后针对攻打方在每个阶段所应用的技术、工具加以总结、归类成知识库,从而有助于咱们了解攻击者具备的能力。 目前ATT&CK按畛域分为: 企业(Enterprise):传统企业网络和云环境;挪动(Mobile):挪动通信设施;ICS:Idustrial Control System 工控零碎下图为企业的ATT&CK: 1.3. 经营模式:臭鼬工厂(Skunk Work)MITRE经营着一些最隐秘、低调的科学技术实验室,这些实验室就像电影《007》中的M16实验室。因为MITRE是非赢利组织,所以MITRE通过“联邦赞助的研发核心”(FFDRC)的形式,经营着7家“臭鼬工厂”(Skunk Work)级别的研发核心。 兴许大家对“臭鼬工厂”这个模式有些生疏,这里略微解释一下。1943年,为了与德国飞机制造公司Messerschmitt制作的飞机竞争,洛克希德公司成立了一个名为 Skunk Works(臭鼬工厂)的顶级机密钻研和生产基地,它明确的工作是在 180 天内开发一架高速战斗机。我的项目在决策上给予了很大的自主权,激励忽视规范程序。后果我的项目创纪录的在143天里,开发并交付了洛克希德公司的 P-80 射击机,这是美国陆军航空兵的第一架喷气式战斗机。以及前面咱们相熟的U2,F22,F35都是由这类工作室研发进去的。起初臭鼬工厂就成为一种翻新的模式被始终沿用至今,苹果、Google等大公司都有相似的工作室。下图是2014年洛克希德公司在臭鼬工厂70年的时候的一个宣传图。 1.4. 研发畛域MITRE的研发畛域涵盖先进的航空零碎、企业现代化技术、司法工程、医疗保健、国家网络安全等。产品也从机载预警通信零碎(AWACS)、军用卫星通信零碎;到FBI的社交媒体图像指纹识别我的项目和与之关联的人体解剖学和立功史数据库;帮忙美国疆土安全部(DHS)开发的物联网(包含智能手机、健身追究器、智能家居产品等)入侵与检测零碎;据说还正在研发一项通过体味变动测谎的技术......。 Mitre吸引了少量最顶尖的网络安全人才和跨界科技专家、科学家,也营造了很多传奇的故事。比方,前MITRE工程师Matt Edman(秃头,胡须, 清脆的男中音)曾与联邦调查局(FBI)单干,利用其黑客技巧帮忙FBI捣毁了臭名远扬的公开网络du品市场--“丝绸之路(Silk Road)”。 往年新冠疫情风行,美国的卫生机构向Mitre Corp.提出打造一种名为“Sara Alert”的监控零碎。通过Sara Alert零碎,公共卫生官员能够注销和监控生病或有感化危险的集体和家庭,被注销的人被要求每天通过短信、电子邮件、电话或网站输出他们的症状。这将有助于卫生保健机构确定哪些人须要护理,哪些人须要隔离。美国疾病管制和预防核心当初正依附Sara Alert来解救该国的新冠肺炎疫情监测工作。感觉有些像咱们的“衰弱码”。 CWE的简介2.1. CWE的诞生回到明天的主题上来,从1999年MITRE开始公布CVE(Common Vulnerabilities and Exposures)[2]缺点列表。作为CVE的一部分,MITRE的CVE团队对破绽、攻打、故障和其余概念进行了初步分类,以帮忙定义常见的软件破绽。然而这些分类过于毛糙,无奈用于代码平安评估行业产品中提出的缺点的辨认和分类的需要。为此,MITRE参加美国疆土安全部(DHS)资助的美国国家标准技术研究院(NIST)的软件保障度量和工具评估(SAMATE)我的项目中,于2005年首次批改了外部CVE类别工作,以用于代码评估行业。于是便产生了CWE(Common Weakness Enumeration)[3]。CWE被用于以下目标: 用通用语言形容和探讨软件和硬件的弱点;查看现有软件和硬件产品中的弱点;评估针对这些弱点的工具的覆盖范围;利用常见的基准规范来辨认,缓解和预防破绽;在部署之前避免软件和硬件破绽;于是CWE做为软件缺陷分类的重要规范, 对平安钻研、平安规范、缺点治理起了重要的纽带作用。CWE使代码缺点不同畛域的钻研人员在交换平安问题时,可能采纳雷同的定义,缩小了歧义性。 2.2. CWE编号类型目前CWE对软件和硬件的缺点进行了分类和形容, 每一个分类领有惟一的一个CWE编号, 并依照CWE编号的类型(类缺点、根底缺点和变种缺点等)造成了多层次的缺点类型划分体系。 CWE 4.2的新视图近些年随着软件平安问题越来越成为软件应用零碎危险防控的重要因素,CWE的更新速度也显著放慢。 特地是往年2/24公布4.0,首次将硬件安全漏洞纳入了CWE中,6/25公布4.1, 8/20就公布了4.2。 CWE-1350: Weaknesses in the 2020 CWE Top 25 Most Dangerous Software WeaknessesCWE-1305: CISQ Quality Measures (2020)3.1. CWE-1350: CWE/SANS Top 25这个视图是CWE依照NIST(National Institute of Standards and Technology)治理的缺点库NVD(National Vulnerability Database)[3]中的缺点CVE(Common Vulnerabilities and Exposures), 并按照CVSS[4]评分体系(Common Vulnerability Scoring System)给出的出危害性(severity)和缺点的呈现频率(prevalence), 按公式计算后的得分给出的排名。 从这里能够看到数据的可靠性, 可能反映2020年发现的次要的平安缺点,对工具、测试和平安钻研有着重要的指导作用。 ...

December 28, 2020 · 2 min · jiezi

关于SegmentFault:ONES-如何实现客户需求的快速反馈

企业在服务客户的过程中,会收到各种各样的客户反馈,人工收集不仅沟通老本高,也会造成信息收集不残缺,无奈疾速响应客户反馈。ONES 可能帮忙企业轻松收集、跟踪、治理和解决客户反馈,晋升客户的满意度。

July 20, 2020 · 1 min · jiezi

如何解决百人研发团队的管理问题

分享一个公司规模近200,研发占一半的创业公司 Worktile 在研发管理方面的玩法,仅供百人左右研发团队参考~什么是研发团队,简单的说,就是由你熟悉的那帮穿格子衬衫程序员为核心组成的团队,就是研发团队。本来,你以为格子男们是很乖很闷骚的那种,管理和协作起来比销售和业务简单很多,而实际情况是,格子男们并不那么容易管理,面向代码世界的复杂度,可能远比面向财物世界的复杂度还要高。 作为致力于团队协作的公司,我们研究了很多国内和海外牛逼公司的研发模式和研发管理,例如OKr在谷歌、Facebook的应用,Uber的高效会议制度,阿里的绩效体系,腾讯的产品流程。除了在自身团队做了N次不同的试验和反思,我们也将很多不错的经验分享到客户和用户,所以本文试图将Worktile的研发管理全景图做一个概括性的阐述。要谈清楚方法,就先了解清楚问题,研发管理之所以令人头疼,核心的问题无外乎以下一些方面。 研发管理的典型问题 难以KPI化和考核任正非有句名言:钱分好了,管理的大部分问题就解决了。我对此深表同意,可问题是,怎么能分好钱确实非常考验能力、经验和智力的。研发之难,恰恰难在无法KPI化工作本身,所有那些试图KPI化工程师和码农的做法,最终结果都啼笑皆非、面目可憎、吃力不讨好。在我过去经历,还有客户实际的研发管理里,试图KPI化研发工作一直是不同团队努力的尝试,包括和不限于以下方式: 解决Bug数SLA功能完成度加班,007就比996牛逼,996就比955更值得奖励营收捆绑NPS这些看起来可以数字化的指标,除了证明研发管理者通过偷懒的方式做绩效考核外,可以说毫无价值,也无法给公司和组织带来正向的激励。 离代码很近,离用户很远另外一个现实且无奈的问题是,工程师和产品经理好像是在象牙塔里做产品和研发,和用户往往离得太远太远。这种问题带来的伤害可能远比其他事情来得更加彻底,但本质上这是研发规则上没有解决好的问题,导致工程师本身并没有任何的目标和动力去贴近用户和客户场景。 我们常常说要做用户喜欢的产品,但那些反人类智商的产品,往往是产品经理和工程师合谋的结果。如果说研发管理的目标是提高效能,那么首先同步研发团队朝着统一的目标,就是效能管理最重要的第一步。 因此,以什么样的制度去驱动研发抬起头来看客户场景,是一切研发管理的核心工作之一。 跨部门战争频发因为低头干活,所以往往研发团队的目标和业务团队的目标并不是一致的,研发体系和业务体系的跨部门战争,简直罄竹难书: 业务认为,怎么这么多bug,一个小问题需要花这么久的时间才能修复而研发认为业务的智商不够用,这么好的产品就是无法准确传达给客户业务面对客户点头哈腰;而研发觉得客户是业务的客户,不是研发的客户业务对需求排期是12345;而研发对需求排期往往是54321业务给客户承诺就像谈恋爱,把星星摘下来也敢接着;研发认为你承诺的,你去写代码实现吧业务认为研发高工资吹着冷气,自己天天跑在外面晒太阳;研发认为,业务提成那么高,这产品是我做的,我咋没提成呢这种剪不断、理还乱的关系,是很多公司的普遍现象。因为跨部门的不理解,必然带来团队之间的内耗,信息的折扣和效率低下自然产生。而更重要的影响是跨部门战争造成对客户服务与理解的偏差与推诿,没有任何公司或者团队能在一个不流畅的环境下成就对客户的100%满意度。 那么如何解决以上问题呢? 从研发管理全景图说起下面的研发全景图,是我们团队过去几年逐步形成的研发管理经验,其中主要包括以下内容: 研发管理的的核心是构建一个开放、自学习、自驱动的组织文化和仪式感,这是打造高效研发团队最内核的基础。左边是工具和方法,主要包括:以OKR驱动的目标管理,基于Scrum的敏捷,和逐步完善的DevOps。右边是制度和规则,核心包含:研发团队的绩效和考核、跨部门合作、其他仪式感驱动的各种规则,尤其是构建自学习的环境与分享机制。 打造开放与竞合的组织架构和文化一个组织要焕发活力、自驱动、使命必达的信念,开放而透明的文化是绩效管理的核武器。总体来说,不管你的方法和制度多么丰富和完善,无论如何也不可能驱动僵化、死板、没有活力的团队产生极其高效的价值。所以,我们在谈研发效能的时候,注意力总集中在别人家的团队是符合管理的,而忽略了团队激活的核心首先是塑造超强自由度、透明度和使命感的团队文化。 从效率这个角度去看,没有透明度的提效都是打折扣的,在一个组织里效率低下的首要原因并不是执行力,而是透明度。需要层层审批和报备的组织,设定层层关卡和信息围墙的团队,效率一定是非常低下的,单点的执行力提升并不改变整个团队的低效基因。 所以,打造开放与竞合的组织架构和文化,至关重要。 特种部队如何设计研发团队的组织架构,是个大大的思考题。我们团队经历过好几次不同的组织形态,也经常性的将研发团队,简单说,一个研发团队的角色主要是以下几类: 产品经理设计师服务端工程师前端工程师测试其他以什么样的组织方式调配以上资源,是个非常考验团队管理的事情,例如很多公司会将设计团队作为完全独立的部门,其他团队和项目按需调配设计资源,设计团队就像公司的乙方角色,通过资源调配来匹配执行。 而另一种形态则是广泛存在于Facebook等互联网公司的方式,设计、产品经理、开发、测试组成短小精悍的特种部队,在研发团队中以小组形态组合,就像一个研发业务的接口一样,有清晰的输入和清晰的输出,有清晰的目标和清晰的边界。显然,打起仗来,特种部队方式的小组,从执行到目标都是超级强悍的,也同时能方便研发组织绩效考核的落地与激励。 特种部队的另一个好处是,每个小组的职能和目标是固定的,在产品研发大架构下执行一个精确的目标和单元。但小组成员可以转岗或者调配到其他小组,从而避免了研发人员的枯燥和无挑战的问题。 仪式感仪式感是团队管理的调味品,也是必需品,就像你吃饭离不开盐一样。研发团队管理者,例如CTO角色的人,需要有意识的在团队中设计有价值的仪式感,来增加团队磨合、默契与调味。好的仪式感,就像宗教仪式一样,能不断加强团队目标的执行、文化的塑造以及阶段的激励。 例如,我们自己团队就有很大仪式性的东西在执行: OKR的阶段同步把重大版本发布变成研发团队的阶段激励管理层的固定One One访谈研发人员的每月访谈,同步到公司月报花心思的团建每月的产品考核师徒制走出去,参加各种外部的技术大会。。。还有很多其他的仪式和规则,并且以上几乎每个规则都值得拿出来说道说道。 用户体验委员会在Worktile团队,我们建立了组织架构之外的一些虚拟组织,虚拟组织的设计可以很好解决跨部门沟通与信息同步的问题,以用户体验委员会为例,将公司里研发、设计、产品、销售、客户成功的同事组成一个虚拟委员会。委员会主席本质上就是这个组织的秘书,通过定期的会议或者讨论,将解决用户体验上的问题作为核心目标来解决。委员会的茶话会,每次都能高效推进很多方面的事情: 就用户体验的重大问题充分讨论,产品和研发从不同视角收听意见,销售和客户成功更多代表了来自一线用户的建议。促进跨部门的彼此理解,很多时候跨部门的战争,来自于互相的不理解和看不起。例如,我们在某次茶会中,就一个很久以来的核心需求做了讨论,销售端原本以为是一个简单的需求,结果讨论下来发现,这个简单需求其实在客户方也有非常不同的理解,完全推翻了产品已经草创的设计方案。反过来,销售同事也完全理解了为何产品方案是如此之难的原因。指定行动方案,快速驱动产品研发落实改进方案。用户体验委员会不是只讨论,更重要的是驱动行动方案,快速解决用户关心的体验问题。技术委员会同样在研发团队,我们通过技术委员会来实现跨研发团队的技术沟通、分享和技术选型。技术委员会保证了公司始终以科技驱动商业的基础不被稀释,汇聚团队中技术能力最强的圈子更加自驱动的投入技术贡献,主要的工作目标包括: 公司级的技术方案前沿技术研发小组研发岗的职级评审,技术委员会承担对技术能力的职级评估驱动公司技术进步和学习,例如组织黑客马拉松、技术分享、对外技术输出向市场和销售输出技术内容研发下乡研发下乡就是让研发走向客户,贴近客户需求,了解客户状况,然后回来完善产品以满足客户需求。Worktile本身是企业服务产品,客户需求在B端是及其复杂而多样的,憋在办公室是无法做出好产品的,所以需要从制度上驱动研发、产品和设计走向客户,而不是待在象牙塔。 研发下乡给了每个研发人员固定的指标,需要下乡到客户现场,所以销售和客户成功有了正当的理由要求研发同事完成指标,从另一个方面也加强了研发和业务部门的配合与协作,因为双方有了共同KPI的时候,大家绑在一起去做好一件事的动力就变得很强。 Polish WeekPolish Week是来自硅谷的流行文化,让研发团队在一个紧张迭代之后,有足够的时间可以休息一下,然后集中火力解决来自客户的需求或者问题,这种制度设计是非常高效的方法,可以短时间集中兵力解决遗留问题。 技术分享和走出去5年下来,我们技术团队每周分享已经正常进行了几百次,研发团队中的每个人都或多或少完成过对于所在部门的技术分享。新人来到团队,可以从过去数百次分享留下来的知识收获非常多的遗留知识。 (在研发体系共享的技术分享池) 另外一方面,Worktile 的核心客户本来就是研发团队和工程师,市场维度需要研发人员能够不断共享有价值的技术内容,而技术分享机制恰恰提供了驱动工程师内容创作的土壤。每次内部分享的内容,其实完全可以继续优化成外部可以传播的内容,通过市场手段实现二次传播,同时也能够将团队中有活力和分享精神的小伙伴,推到前台去技术大会或者公司组织的技术分享大会分享。 // 未完待续,接下来会再谈谈研发中的Scrum和OKr,以及研发绩效、工具化等。 本文作者:Worktile CEO anytao 文章来源:Worktile官方博客 欢迎访问交流更多关于技术及协作的问题。 文章转载请注明出处。

July 10, 2019 · 1 min · jiezi

干货分享-阿里专家亲授如何提升研发效能

研发效能的重要性:研发效能肩负着提升企业产品交付和创新能力的责任。我们为什么要提高研发效能,因为技术本身是为业务服务的,产品的价值体现在业务上,技术的所有价值最终都要通过业务结果来呈现,我们的根本目的是帮助业务成功,促进业务腾飞。那技术就不重要了吗!重要,因为所有的业务价值最终都要通过软件服务来变现,两者相辅相成,互相促进。然而,如果对研发效能是什么缺乏共同的认知,我们又如何去改进它呢? 效率竖井是研发效能改进的最大问题:如今大部分公司以传统的角度,更关注各个职能和部门的独立改进。然而,产品交付需要前后职能(如:产品、开发、测试等)和平行部门(如:前端、后端、算法等)的协作,过度局部优化,相反会导致效率竖井,反而影响整体的效率。 上图描述了传统开发模式下,产品交付面临的困境。从交付周期线明显可以看出,从需求的提出到交付需求的过程中,由于大部分时间都在等待,导致交付周期增加,从而影响研发效能。而这些等待有可能是需求需要批量处理等待,或者是部门间需要协作相互等待。最后导致虽然各个局部闲的繁忙“高效”,但整个系统对外响应效率很低。这就是效率竖井,也是研发效能提高要解决的主要问题。 阿里巴巴所提供的的解决方案:基于这样的度量体系,应该设定怎样的目标呢?我们在多个团队的实施过程中,逐渐沉淀出了可供参考的目标体系,它可以总结为三个数字——“2-1-1”。 “2-1-1”最初来自天猫新零售,其后在闲鱼和研发中台、阿里云等团队完善和采用。什么是“2-1-1”呢?其中“2"指的2周的交付周期,85%以上的需求可以在2周内交付;第一个“1”指的是1周的开发周期,85%以上的需求可以在1周内开发完成;第二个“1”指的是1小时的发布前置时间 - -提交代码后可以在1小时内完成发布。 达成“2-1-1”的愿景并不容易。1小时的发布前置时间,需要持续交付流水线,产品架构体系和自动测试、自动部署等能力的提升。1周的开发周期,涉及更多的能力和实践,如:需求的拆分和管理,开发团队的分工协作模式,以及持续集成和持续测试实践;最困难的则是2周的交付周期,首先它要以另外两个指标为基础,同时还涉及整个组织各职能和部门的协调一致和紧密协作。 当然,“2-1-1”是源自特定的团队,并非所有团队都要使用同样的值,比如对于涉及硬件开发的团队,两周的交付周期通常过于挑战。组织应根据自己的上下文设定恰当的目标,重要的是,它要指明改进的方向。 课程介绍:本课程将从研发效能的定义和度量着手,逐渐深入解析来自不同业务部门提升持续交付能力的实践、方法和工具,同时还将分享如何基于持续交付能力,切实提升产品和业务创新的效率和效果。• 课时1:研发效能如何定义:详细讲解研发效能的定义。• 课时2:研发效能如何度量:讲解研发效能的度量体系和改进愿景。• 课时3:利用看板帮助效能可视化价值流动:以可视化价值流动为基础,及时暴露价值交付过程中的问题和瓶颈。• 课时4:需求持续、快速地流动和交付:控制在制品数目,可以更及时的暴露问题、阻碍和瓶颈,促进团队系统性的改进,从而让价值顺畅流动。• 课时5:内建过程质量:以需求为单位保障各环节的质量,把质量内建到每个需求的各个环节。• 课时6:搞笑的每日站会:站会以价值交付为线索,从右向左检视需求的状态,聚焦于发现和处理价值流动中的问题。 关于如何改进研发效能详细内容:阿里巴巴研发效能提升实践系列公开课 课程讲师:何勉,阿里巴巴集团研发效能事业部资深技术专家,畅销书《精益产品开发 原则、方法与实施》作者,知名产品交付和创新方法专家。

July 3, 2019 · 1 min · jiezi

Hades:移动端静态分析框架

只有通过别人的眼睛,才能真正地了解自己 ——《云图》背景作为全球最大的互联网 + 生活服务平台,美团点评近年来在业务上取得了飞速的发展。为支持业务的快速发展,移动研发团队规模也逐渐从零星的小作坊式运营,演变为千人级研发军团协同作战。在公司蓬勃发展的大背景下,移动项目架构也有了全新的演进方向:需要支持高效的集成策略,支持研发流程自动化等等,最终提升研发效能,加速产品迭代和交付能力。虽然高效的研发交付体系帮助 App 项目缩短了迭代周期,但井喷式的模块发版和频繁的项目集成,使得纯人工的项目维护和质量保证变得“独木难支”。上图漫画中,列举了大型项目在持续优化和维护过程中较为常见的几类需求。这些需求主要包括以下几个方面:在 CI 流程中加入静态准入检查,避免繁琐的人工 Review 以及减少人工 Review 可能带来的失误。为了推进项目的优化过程,需要方法数监控、宏定义分析等代码分析报表和监控。零 PV 报表、依赖分析和头文件引用规范、无用代码分析等项目优化方案。不难发现,这些需求的本质是:借助代码静态分析能力,提升项目可持续发展所需要的自动化水平。针对 C/Objective-C 主流的静态分析开源项目包括:Static Analyzer、Infer、OCLint 等。但是,这些分析工具对我们而言存在一些问题:开发成本高,收益有限,研发参与积极性不够。针对局部代码分析,跨编译单元以及全局性分析较难。增量分析困难,CI 静态检查效率低下。工具性较强,大部分只作代码规范检查,应用范畴局限。接入和维护成本高,难以平台化。针对以上背景和现有方案的不足,我们决定自研基于语义的静态分析框架。Hades 项目简介大众点评静态分析框架 Hades,取名源于古希腊神话中的冥王。冥王 Hades 公正无私,能够审视灵魂的是非善恶。Hades 框架支持语义分析能力,我们希望这种能力不仅仅能够去实现一个传统的 Lint 工具,而且能成为创造更多能力的基础,可以帮助我们更轻松地审视代码,理解把控大型项目。Hades 方案选型文本处理方式首先,最简单的静态分析是字符匹配和文本处理。这种方式虽然实现简单,但是存在能力上限,也不可能在语义理解上有足够的把控力。另外,以正则匹配为核心建立的工具栈难以得到持续优化。为了分析项目的依赖关系,我们需要判断代码中的符号含义以及符号间关系(如包含哪些类,类中有哪些方法等),分析过程的正则表达式如下图所示。由此可见,繁琐的文本匹配不仅可读性差,也存在容易分析出错的问题。基于编译器的静态分析方案我们需求的本质是对代码进行分析,而在源代码编译过程中,语法分析器会创建出抽象语法树(Abstract Syntax Tree 缩写为 AST)。AST 是源代码的抽象语法结构的树状表现形式,树上的每个节点都表示源码的一种结构。以上图为例,代码块区域是用 Objective-C 和 TypeScript 编写的一个简单条件语句源码,下面是其对应的抽象语法结构表达。这种树状的结构表达,省略了一些细节(比如:没有生成括号节点),从图中的这种映射关系中我们也可以发现:源码的语法结构是可以通过明确的数据结构表示的。大多数编程语言都可以用相似的 AST 表达的。对于 C/Objective-C 而言,主流编译器是 Clang/LLVM(Low Level Virtual Machine)的,它是一个开源的编译器架构,并被成功应用到多个应用领域。Clang(发音为/klæŋ/,不是C浪)是 LLVM的一个编译器前端,它目前支持 C, C++, Objective-C 等编程语言。Clang 会对源程序进行词法分析和语义分析,将分析结果转换为 AST。现有方案中不少 Lint 工具便是基于 Clang 的,Clang 包含了以下特点:编译速度快:Clang 的编译速度远快于 GCC。占用内存小:Clang 生成的 AST 所占用的内存是 GCC 的五分之一左右。模块化设计:Clang 采用基于库的模块化设计,易于 IDE 集成及其他用途的重用。因此,借助 Clang 的模块化设计和高效编译等诸多优点,Hades 也将更容易开发和升级维护。Clang 对源码强有力的分析能力也是主流静态分析工具的不二之选。Clang AST 初识Clang 项目非常庞大。仅仅是 Clang AST 相关代码就超过 10W+ 行代码。如何利用 Clang 实现 AST 分析工作,这里可以参考官网提供的文档 Choosing the Right Interface for Your Application ,以下是三种方式:LibClang提供 C 语言的稳定接口,支持Python Binding。AST 并不完整,不能完全掌控 Clang AST。Clang Plugins提供 C++ 接口,更新快,不能保留上下文信息。插件的存在形式是一个动态链接库,不能在构建环境外独立存在。LibTooling提供 C++ 接口,更新快,可以通过标准的 main() 函数作为入口,可独立运行,能够完全掌控 AST,相比 Plugin 更容易设置。这里我们选择可独立运行并且能完全掌控 AST 的 LibTooling 作为 Hades 的基础。在使用 Clang 的学习过程中,基本的概念便是表示 AST 的节点类型,这里重要的几点是:ASTContext。ASTContext 是编译实例用来保存 AST 相关信息的一种结构,也包含了编译期间的符号表。我们可以通过 TranslationUnitDecl * getTranslationUnitDecl(): 方法得到整个翻译单元的 AST 的入口节点。节点类型。AST 通过三组核心类构建:Decl (declarations)、Stmt (statements)、Type (types)。其它节点类型并不会从公共基类继承,因此,没有用于访问树中所有节点的通用接口。遍历方式。为了分析 AST,我们需要遍历语法树。Clang 提供了两种方式:RecursiveASTVisitor 和 ASTMatcher。RecursiveASTVisitor 能够让我们以深度优先的方式遍历 Clang AST 节点。我们可以通过扩展类并实现所需的 VisitXXX 方法来访问特定节点。ASTMatcher API 提供了一种域特定语言(DSL)来构建基于 Clang AST 的谓词,它能高效地匹配到我们感兴趣的节点。除了这两种方式外,LibClang 也提供了 Cursors 来遍历 AST。更多细节内容可以前往 :clang.llvm.org 。常用开源工具的不足通过上一章节的介绍,我们大致了解了 Clang 的基本特点。 但是在实践开发过程中发现:通过 Clang API 去遍历和分析 AST 的源码树形结构较为复杂。现有静态分析方案(如:OCLint),大多是直接给出封装好的 Lint 工具,扩展方面也是提供脚手架生成 Rule 文件,然后在 Rule 中编写访问特定 AST 节点的方法(例如:VisitObjCMethodDecl 方法用来访问 Objective-C 的方法定义)。因此,现有方案大多数只提供了直接访问 AST 的方式,而且这种方式较为“局部”。每实现一个实际需求需要耗费大量精力去理解如何从 AST 分析映射到源码的语义逻辑。但是,Code Review 时我们并不会将目标代码转换为 AST 然后再去分析代码的语义如何,更多的是直接理解代码的具体逻辑和调用关系。AST 树状结构分析的复杂性容易带来理解上的差异鸿沟。因此,这也不利于调动业务研发团队的积极性,很多基于源码分析工作也难以落地。Hades 核心实现为了让分析过程更清晰,我们需要在 AST 的基础之上再进行一次抽象。本章节主要内容包含:Hades 的整体架构、为什么要定义语义模型、定义什么样的语义模型、如何输出语义模型以及模型的序列化和持久化。Hades 总体架构按照 Hades 的架构目标进行基础方案选型以后,我们来看下 Hades 的整体技术框架,可以用下图所示的四层架构表示:下面简述下这几层的不同职责。编译器架构层。Clang 的诸多优势前文已经提到,这也是 Hades 的基础依赖。Hades 核心层。在编译器架构层,我们借助 Clang 得到了代码的抽象语法结构表示 AST。而 Hades 核心层的职责便是将 AST 解析成人们更容易理解的,更高层级的语义模型。Hades 接口封装层。抽象出的模型,能够像 Clang 提供丰富 AST 访问接口那样,为开发者提供丰富的模型访问接口。静态分析应用。通过 Hades 接口封装,我们无需清楚底层模型是如何生成的,在这一层我们可以制作 Lint 或者其它监控、分析工具。为什么 Hades 的架构设计是这样的呢?下面我们将一一道来。为何要定义语义模型 ?首先,正如「常用开源工具的不足」章节所述,大多现有方案是直接通过编译器前端提供的接口实现对 AST 的操作,从而达到静态分析的目的。当然,除了现有方案的不足以外,在业务研发过程中出现的 Case ,其原因大多数并不是违反了现有的 Lint 工具中所定义的基本语法规范,这些规则分析的往往是“常识”类问题。在静态分析中,更多的是对象的错误方法调用和非法的继承/复写关系等问题,即便具备良好的编码规范也会疏忽。这里乍一看没太大区别,但是从着重点来说,Hades 的设计理念上会存在本质区别。如上图所示,现有方案如 OCLint 或者 Clang Static Analyser 等,其核心原理是在编译器将源码生成 AST 时,通过分析节点和节点间的关系,从而达到静态分析的目的。这种方式不利于跨编译单元分析,自然对项目级别的理解分析存在局限性。所以,这里可以借助 AST 针对每个编译单元建立更直观的、更容易理解的结构化表达。我们将这个更高层级的语义表达称为 HadesModel。定义什么样的语义模型 ?建立 HadesModel 以后的静态分析中,我们的着重点变化如下图所示:下面我们可以简单描述需要设计的 HadesModel 的基本特点:HadesModel 可以结构化表达源码的语义。它能够表达一个编译单元定义了哪些接口声明、实现了哪些类/类别的方法、定义和展开了哪些宏定义、对象的方法调用和函数使用情况等等。HadesModel 使我们不需要了解 Clang 编译器以及 AST 如何表达源码。HadesModel 以一个完整的编译单元为单位,支持 JSON 格式表达。对于 Objective-C ,分析过程不必强依赖于 xcodebuild 编译构建过程。通过以上几点特征描述,我们得到了 HadesModel 更清晰的表述:HadesModel 是基于 AST 的更高层级语义表达,它能够序列化为 JSON 格式并描述完整的编译单元,这种结构化信息使得静态分析能更接近于开发者阅读理解源码的思维习惯。在介绍完 HadesModel 的基本目标后,我们用下面一段简单的 Objective-C 代码为例来明确 HadesModel 的具体表达形式:在示例代码中,我们简单了解下包含的语义逻辑:这是一段 Objective-C 代码,实现文件名为 HadesViewController.m。在实现文件中,定义了一个名为 HadesMacro 的宏定义。实现文件中包含了 HadesViewController 类的实现部分,HadesViewController 是 UIViewController 的子类。HadesViewController 类中包含了两个方法实现。其中第一个方法名为 sayHello ,里面包含了局部对象 testView 的初始化以及对象的方法调用,另外还包含了宏定义的使用。可以发现,HadesModel 能够表达开发者对语义信息的直观理解即可。如何生成语义模型:HadesModel ?接下来介绍 Hades 基本架构图中 HadesCore 的核心实现,重点在如何生成前文所述的 HadesModel。这里 HadesCore 借助 Clang LibTooling 分析源码的 AST,然后将我们所需的语义信息抽象成 HadesModel。将数据抽象和转换过程用以下简要流程表示:下面将从一个流程图来看看 HadesCore 是如何生成 HadesModel 的实现细节:流程图中主要包括以下几点内容:1. 构建编译数据库首先,Hades 是基于 Clang 的模块化设计开发,所以它可以独立运行,因此,可以利用 RubyGem 的方式将模型生成过程封装并提供命令行工具。对于需要得到 HadesModel 的编译单元.m,首先需要作为源文件集成到 workspace (iOS 可以用 CocoaPods),然后利用 Xcode 提供的 xcodebuild 结合 xcpretty 编译得到项目的编译数据库 compile_commands.json。编译数据库用来指定每个编译单元的命令行参数。2. 创建 HadesDriver在创建驱动器之前,可以使用 Clang 提供的 CommonOptionsParser 类,它将负责解析与编译数据库和输入相关的命令行参数,然后将其作为驱动器的输入。驱动器控制整个模型生成周期,它的输出结果便是 HadesModel。3. 构建 HadesModel在 HadesDriver 的驱动下,首先需要创建编译器实例,执行编译前可以分析宏定义和头文件展开等预处理信息,并将这些内容初始化到 HadesModel 对象。接着,在编译器实例中将 FrontendAction 接口作为扩展编译过程的执行入口,利用 Clang LibTooling 提供的 ASTVistor 访问 AST 节点(更多 Clang 技术细节见:Clang 8 documentation),最终将所有翻译单元的“元数据”填充到 HadesModel。以前文的 HadesViewController.m 为例,我们得到 HadesModel 并序列化为 JSON 数据以后,如下图所示:显然,示例 HadesModel 已经能够表达开发者 Code Review 时,绝大多数“直白”的语义信息了。HadesModel 的序列化/持久化由于 HadesModel 最终需要以 JSON 格式作为提供静态分析的原始数据类型,所以需要保证 HadesModel 具备序列化的能力。JSON 格式使 Hades 具备了全局分析能力,也符合设计之初的分析和平台、语言无关的要求。再者,JSON 类型也方便利用具备较好类型系统的语言作为分析接口层。实践中,以 iOS 常用的 CocoaPods 的 Pod 为单位,在私有 Pod 发版时生成模型数据然后打包存储在 Maven 中,以便于增量分析。在 CI 系统中,特别是大型项目持久化的模型存储非常重要。CI 中为了加快集成速度,不得不使用部分二进制的集成方式,但是这样将无法对静态库进行源码分析。利用 Hades 的模型缓存,我们可以解决二进制集成的局限性。缓存数据也不需要再次编译、模型生成等耗时操作,所以接入 Hades 后基本不影响集成项目的集成速度。Hades 应用案例(1):制作 Lint 工具在这一章,我们将介绍 Hades 架构中的接口层,以及在 Lint 工具上的应用。HadesLint 架构描述HadesLint 是基于 Hades 框架制作的静态分析工具。作为平台标准的 Lint 工具,目前在持续集成有了广泛应用(详情见此篇文章:MCI:大众点评千人移动研发团队怎样做持续集成?)。HadesLint 开发语言是 TypeScript。它具备完善的类型系统,结合 VSCode 的智能补全和完善的 Debug 能力,使得 HadesLint 具备良好的开发体验。HadesLint 的实现细节如下图所示:在接入 HadesLint 的项目后,我们将项目以 Pod 为单位,从 Maven 中读取缓存模型 Zip 包。如果不存在缓存,那么将利用前文所述封装好的 HadesGem 通过编译数据库实时生成每个编译单元的 HadesModel。由于我们的项目较大,模型数据量也非常庞大,为了防止分析过程内存泄露的危险,提升分析性能,可以通过Lazy.js进行惰性求值,渐进加载有效解决了模型数据庞大的问题。被 Lazy.js 加载的 JSON 对象,需要通过 TypeScript 声明来保证 HadesModel 具备类型。这样,我们就可以在 VSCode 中编写代码时,享受自动补全、类型推断,从而保证编写过程更加安全、高效。借助 VSCode 对 TypeScript 的良好支持,在编写分析过程中方便地 Debug。最后 HadesLint Driver 会加载每个规则对象,在规则中分析 HadesModel 然后确定检查项是否合法。当然,如果希望程序执行效率更高些,也可以尝试 OCaml+ATD 来构建 Lint 项目。HadesLint 应用案例:打印项目中的类名需求描述:我们需要找到项目中定义的所有类名。我们只需要通过脚手架创建新的规则,然后编写以下代码:this.hadesModels.each((hadesModel: HadesModel.HModel) => { hadesModel.class_list.forEach((occlass: HadesNode.Class) => { console.log(occlass.name); })});编写代码以后,可以在 VSCode 的 Debug 面板中开启调试:当然,除了以上简单的查询功能以外,我们也可以定制相对复杂的检查规则,比如继承链管控、方法复写检查、非空检查等。在引出方法复写管控之前,开发者往往会通过随意继承的方式复写代码,或者通过不合理扩展方式来满足当前需求。但是,人工 Review 代码很难保证集成项目中,这些扩展或者子类在运行时的行为。因此,对继承链管控的需求非常有必要。我们的 App 之前就出现了扩展同名方法,意外导致方法复写,从而在程序运行时出现问题,甚至导致 Crash。为此,我们在集成准入检查中加入了方法覆盖检查。当然,如果父类设计之初本身是希望子类复写,我们在 Lint 过程中通常会忽略这些合法的复写情况。对于这类跨编译单元的分析需求,如果我们按照 Clang Static Analyser 是较难分析的,但是 Hades 就可以非常轻松地做到,因为 Hades 可以轻松获取整个继承链以及每个类的实现定义。Hades 应用案例(2):构建 HadesDBHadesModel 是结构化数据,因此,我们也可以将这些模型数据以 Document 的形式存储到文档型数据库中,例如:CouchDB。在 CouchDB 的基础上建立模型数据库,这样便能够方便地通过 Map-Reduce 建立视图文档(Design Documents),然后,我们可以获取项目中包含的类及其方法列表、分析每个 Document 的字段按需输出结果。例如,存储建立完整的项目 HadesModel 数据后,在 CouchDB 中建立 Design Document,然后在 Map Function 中编写以下代码:function (doc) { if (doc.extracontext.macro_list !== null) { emit(doc._id, doc.extracontext.macro_list); }}CouchDB 支持 JS 代码编写 map-reduce,以上代码表示在当前的数据库中,对于每个 HadesModel Document 判断是否存在宏定义,如果存在,那么输出宏定义作为 Design Document 的结果。最后,通过 CouchDB 接口返回可以获取如下结果:App 项目中源码中使用的所有宏定义信息:{ “total_rows”: xxx, “offset”: 0, “rows”: [ { “id”: “NVShopInfoBlackPearlMultiDealCell”, “key”: “NVShopInfoBlackPearlMultiDealCell”, “value”: [ { “name”: “NVActionSheet”, “expanded”: true, “expandstr”: “UIResponder<NVActionSheetDelegate> *”, “location”: ${path_location}, … } ] }, … ]}有了 HadesDB 以后,我们能赋予代码语义分析更大的想象空间。比如,可以利用 HadesDB 制作 Web 项目,通过 Web 页面搜索、查询我们所需要知道的语义信息和分析数据。总结本文介绍了在美团点评业务快速发展背景下,针对大型移动项目的静态分析需求,结合开源项目利弊,最终设计实现的静态分析框架 Hades。Hades 作为大众点评移动研发的基础设施之一,在实践中得到了广泛的应用,为大型 App 项目的日常维护、代码分析提供支持。基于 HadesModel 的静态分析易上手,开发接入成本低,能够理解代码语义,具备全局分析能力等诸多优点。最后,我们也希望 Hades 的设计是赋予创造能力的能力,而不仅仅是作为传统意义上的 Lint 辅助工具,这也是我们为什么不取名为“工具”,而是称之为“框架”的原因。当然,基于 Hades 我们也是能够很方便地制作出 Lint 工具的。Hades 是否开源?不久将会开源,敬请期待。如果对我们平台感兴趣,欢迎小伙伴们加入大众点评的大家庭。参考资料[1] Clang 8 documentation[2] Infer static analyzer[3] Clang Tidy[4] OCLint static analyzer[5] Apache CouchDB[6] TypeScript[7] ATD[8] Lazy.js[9] xcpretty[10] Visual Studio Code作者简介吴达,大众点评 iOS 技术专家,Hades 项目开发者。目前专注于移动 CI 研发,静态分析和点评 App 业务研发。智聪,移动信息组件负责人,大众点评 iOS 高级专家。专注于移动工具链开发,对移动持续集成、静态分析平台建设有深刻理解和丰富的实践经验。招聘信息大众点评移动研发中心,Base 上海,为美团提供移动端底层基础设施服务,包含网络通信、移动监控、推送触达、动态化引擎、移动研发工具等。同时团队还承载流量分发、UGC、内容生态、个人中心等业务研发工作,长年虚位以待专注于移动端研发的各路英雄豪杰。欢迎投递简历:dawei.xing@dianping.com。 ...

November 23, 2018 · 3 min · jiezi