精华内容
下载资源
问答
  • 技术人员往往有闷头挖煤的倾向(闷头技术架构),而不了解挖煤的上下文背景(企业的业务背景和组织架构),殊不知企业组织架构和业务背景和技术架构之间有隐含的映射关系,这种关系有时候直接决定了技术架构转型...
  • 软件企业组织架构

    万次阅读 2019-12-01 17:47:16
    之前发表一篇软文《软件项目组织架构》的文章,提到了软件项目管理与软件企业组织管理及技术管理之间的关系,它们是存在交集的。也提到软件企业与一般的企业一样,组织结构存在三种方式项目型 矩阵形 和职能形组织。...

            之前发表一篇软文《软件项目组织架构》的文章,提到了软件项目管理与软件企业组织管理及技术管理之间的关系,它们是存在交集的。也提到软件企业与一般的企业一样,组织结构存在三种方式项目型 矩阵形  和职能形组织。
    广意的组织是一个非常广的概述,包括非常多种组织类型,有正式的非正式组织,有企业型的有社会型的组织,有营利型也有公益型等。不过不管是什么组织都是为了实现某种 目标而设立的组织。组织管理是为了让组织高效运转,高效率达到目标的一系列管理工作,包括组织结构的设立,沟通、冲突处理,分工协作、组织变革等内容 。

           不同类型的企业有不同的组织方式。工程类企业,设计院 、研究所 、贸易公司、连锁机构等,不一而别,大有不同。一个原因就是如何让工作开展更高效,成本更低。而在本文中咱要说的是软件企业的组织架构。

            组织即是一个动词,也是一个名词,作为名词,组织是各有其职,有计划互相配合的一个集体,作为动词组织是这达到某些目标让一群人共同协作相互作用起来的过程。 组织管理是管理学和一门学科。

    组织管理学的发展
           组织的历史伴随着人类的历史存在,组织管理学也随着社会的发展不断提出新理论内容。早期的人类是群居的,为了获得食物或预防危险,大家生活在一起,有分工,有首领协调,这就是最早的组织。古代最早重视组织问题的是先秦思想荀子,在《荀子.王制篇》中明确提出了社会组织论的思想。“群而无分则争,争则乱,乱则离,离则弱,弱则不能胜物”提出要按每人特长分配给他们相应负责的事,做到人尽其才,各得其所。细歌认为中国又是发展组织最优秀最最强有利的国家,  在我国社会发展过程,不断有各种组织形式存在(因涉及到发布要求,这里不做相关列举),一些组织严密性和组织力度在全世界都非常罕见,除此还有各社会组织,也有一些自发性的组织,每一次起义,每一次革命都是从自发开始到自觉组织的过程。
         随着西方工业革命的出现,组织思想有了较大的发展,英国经济学家亚当.史密斯于1776年发表的《国民财富的性质和原因的研究》一书中,有过系统、出色的论述。他曾用做针的例子说明劳动分工的经济效益,提出了生产合理化的概念。而英国另一位出色的思想家欧文首先重视组织中的人事问题,认为工人是有生命的“机器 ”,更需加强保养,实行一系列福利措施,改善工人的劳动和生活备件,员工是可成为许多零件组成的一个系统,而英国剑桥大学教授巴奇在亚当.史密斯的分工研究基础上进一步对专业化问题进行深入研究。他认为劳动分工能带来更高生产系统方法的原因是:节省了学习所耗费的时间和材料,节省了变换工序 所耗费的时间和精力,促使技术熟练,加快工作进度。巴贝奇认为劳动分工不仅适合于体力劳动,且适合于脑力劳动。形成了古典管理学派遣的组织管理思想,包括科学管理和行政管理两个分派,注意分工协作 ,纪律,不受人的感情和人际关系因素影响。
    在大工业生产中,把人当机器的做法让工人们时起反抗,后来就出来的企业管理学,这里的组织管理研究重点处理人际关系和激励人。企业组织不仅是个技术-经济系统,而且是个社会系统,个人不仅受经济奖励的激励,而且有各种不同社会和心理因素的激励。人的行为受感情、情绪与态度的影响。非正式组织是研究重点。应对传统观念中的以组织的正式结构和职位为基础的领导模式实质性修正。人际关系学派一般认为,职工的满足感与生产率有联系,并强调指出,不断增加工人的满足感可以提高工作效率。等等。

            再后来,提出了系统学派的组织管理,系统学派组织理论强调应用系统的范畴、原理和方法,全面分析和研究企业的其它组织的管理活动、内部结构和模式,与外部环境的关系,建立起系统模型,更精确的对组织进行分析。

     

            系统学派的组织管理同时考虑到目标与价值、技术分工、组织结构、社会心理及外部环境。外部环境包括技术和经济的物理的人文的环境,这些都影响着组织方式。

     

            进入80年代后,世界新技术革命迅猛发展,国际交往不断扩大,全球能源、资源条件有了很大变化,各国政治、经济、社会变革此起彼伏,国际竞争越来越激烈,组织 环境日见复杂,这些都对现代组织管理理论提出了严峻的挑战。面对挑战,西方和日本等国的组织管理理论正从实践和理论两方面酝酿着重大的变动,成为一个活跃的、十分引人注目的领域。一些新出版的书可以看出。

       《寻求优势--一美国最成功的公司经验》一书,归纳了数10家成绩卓著的企业经验,力图证明美国人员并不比日本人差。这些企业共同特点是:重视行动;接近顾客 ,密切联系用户;发挥职工自主性和创新精神,注意造就大批革新能手和推销服务员,甘冒一定风险,允许 试验中的某些失败;依靠人来提高生产率;长期坚持 形成自己的企业文化;企业扩展不离开自己熟悉的行业,从不冒进自己不了解的经营,不进外行;结构从简,人员精干。

       《赢得优势--领导艺术较量》市场是一切经营活动的出发和归宿;市场的实质不只是一堆干巴巴的数字,首先是顾客,是用户,是有血有肉的人;不断创新,保持创新精神 ,避免官撩和僵化趋势;尊重职工,相信职工,发挥职工的积极性,实行以人为核心管理。一个企业必须有自己的明确指导思想、经营哲学、价值准则 、首选规范、文化传统、宗旨和信箱,能够用崇高的精神 力量吸引人、团结人、鼓舞人,在职工中形成共同的目标感、方向感、使命感,形成独具特点的企业文化。

     

          《Z理论》一书主张应当从日本成功经验中级取营养。威廉.大卫总结了日本文化中的三个根本性物质因素,即信任的态度,人们工作上、生活上的亲密关系,婉转、含蓄、细致的工作方式。这些物质使日本企业内部具有忠诚合作的精神和团队奋斗的目标一致性。

            当然,任何理论、思想和口号及引起的热潮,都是历史现象,都在一定的历史上发生、发展和消亡,不可能有绝对正确、普遍适用的理论、经验与方法。随着社会、经济科学技术的发展,人们对组织管理的规律认识将日见清晰,且要结合各国的具体国情,创立出具有不同特色的组织 管理理论体系。说到这里,我更想谈谈咱们国家的组织管理的发展,虽说专门的著书论说不多见,但把自己独特的组织思想和管理体系应用到实践中是无数多的成功案例,只是近代在企业经营中的组织管理落后于西方于日本,在政府、社会性组织方面,中国的组织体系是独特的优秀的,这里不相做例举。 与科学和制度化的管理相比,我国更有人制的管理,我们更多的是领导者而不仅仅是管理者。

    软件企业的组织架构
            回顾了组织管理学的内容,我们把说题回到软件企业的组织管理里来,软件企业是研发、生产、销售、运营软件产品及其曾值服务为经营活动动的企业。细歌的所学专业正是结合软件技术与管理学的专业, 从业软件行业10数年久,从小微创业公司到大型央企,从内资到外资企业。经任过的岗位从普通Programmer到CTO,从分析员到PM再到PMO,也曾眼见着一个初创团队成长成大公司的过程。多年从业经历让我了解了到软件企业应该如何进行组织构架的,并把这些认识写到文章里。

            从产品的角度看,与一般的产品性企业无二,需要研发团队 、需要市场团队、需要财务团队、需要其他内务团队,和一般的产品性企业最大的区别是没有生产,软件只需要研发,批产的活动就用复制替代了。按目前国内软件行业的市场情况,企业分型项目类和产品型两类。这里的软件指的是传统应用软件的企业,不包括互联网企业,不过在IT技术领域,互联网产品和软件产品是很难清晰的分出边界的,也许针对互联网企业的组织构架可以专门写一章,也可以和软件企业放一起介绍。

            项目类软件企业中,一类是外包定制开发企业,比较典型的在国内有中软国际、文思海辉、东软等企业,另一类是行业解决方案类,这类是基于自有软件产品围绕某个行业做信息化智能化解决方案,比如ESRI Arcgis应用在国土、交通的解决方案,SAP应用在制造企业的ERP解决方案,Project、 P6等应用在工程管理的解决方案,这是国际知名的行业软件,在国内很大多数软件企业都深耕和依附于某一行业,他们对行业业务十分熟悉。第三类是纯粹的软件产品销售企业,通用型或专业型软件售给使用企业,获得收益,还有一类是业务类软件售给中小软件后在实施企业进行二次开发或实施,一实企业通过购入知名成熟软件产品代理权,在客户单位进行定制实施开发。

            软件产品型企业中一类是按产品线组织 ,一类是按业务领域组织,当然项目型企业也不例外。项目型软件主要按业务领域划分的部门,然后业务围绕项目运作,核心的组织单元就是项目团队,见细歌文章《软件项目组织架构》,另一块核心团队就是市场团队,对外承接项目业务,其它组织单元都是服务项目团队,包括质保、测试、技术支持、项目管理、商务、内务等组织单元。
            产品型软件企业核心组织单元是产品团队,其次是产品运营推广团队。其它组织单元都是围绕产品运作设定的,如产品服务部,技术支持部,测试部。软件产品不像一般实物类产品,没有生产环节,只有研发和市场推广环节,生产即是复制,也不像服务类产品,他有研发环节,而服务类产品只有策划和市场推广。

            除企业性质和企业经营方向外,企业规模也是企业组织方式的主要考虑因素。企业规划越大,组织越细分。小微企业几人管所有,大型集团化企业每个技术点都有一个团队来完成。软件按技术原则划分的话,营销、产品、售前、项目、架构设计、开发、测试、QC、运维、客服这些都是需要的。

     

    表:典型的项目型软件公司组织结构

    市场总监

    区域经理

    销售经理1、销售经理2

    区域经理

    销售经理、销售经理2

    技术总监

    技术(研发)一部

    架构设计岗、前端开岗、后端开发岗、数据处理、测试岗。

    技术(研发)2部

    架构设计岗、前端开岗、后端开发岗、数据处理、测试岗

    运维部

    网管 、系统管理员 、系统培训员、实施员。

    项目总监

    项目组1

    项目经理、售前、需求、架构、开发、测试、运维

    项目组2

    项目经理、售前、需求 、架构、开发、测试、运维

    项目组n

    项目经理、售前、架构、开发、测试、运维

    综合管理

    商务

    负责项目招投标处理、接待等。

    行政

     

    财务

     

    美工设计

     

     

    图:矩阵式组织图

     

    表:,典型的产品型软件公司结构

    运营总监

    招商经理

    销售经理1、销售经理2

    品牌经理

    销售经理、销售经理2

    技术总监

    技术经理

    架构设计岗、前端开岗、后端开发岗、数据处理、测试岗。

    技术经理

    架构设计岗、前端开岗、后端开发岗、数据处理、测试岗

    产品经理

    需求分析、美工、UI。

    综合管理

    商务

    负责项目招投标处理、接待等。

    行政

     

    财务

     

     

    表:典型的几种技术岗位及其职责

    其中系统分析师和系统架构师的工作区别见细歌文章《系统分析师和系统架构师大PK》, 项目经理与产品经理的工作别见文章《项目经理与产品经理区别》

          以上是典型的软件企业主要技术岗位项目,企业的规模是组织人员配置的决定素之一,但不管规模大小,都有以上的岗位职责表在,只是小微公司因为人员少,就需要一人多岗来完成相关的工作。同时,本文的软件企业并不涵盖向MS、Amazon、Gooogle、Albaba、Sap、AutoDesk等这些世界级公司,因为它们并不仅单独是以软件公司的形成存在,而是一家家的科技世界级公司或互联网巨头,他们是多元化产品的,不是仅仅做软件。

             当我们伙伴决定出来单干,创立初创公司,那么这仅有的几个人分工亦必需有负责市场、有负责技术、有负责内务,也有可能一个人要做市场也要做技术还要Coding,甚至于老板一个人要担当所角色 ,而且要与在公司进行市场PK,所以我们初创是最艰难的,当然一个人不可以做所有的事,我们要考虑一下合作。 当企业发展到10几人团队时可以将开发与测试分离,由一到两人负责市场,一人担当技术负责兼架构师、项目经理,前后端可以分离角色,项目经理或产品经理要负责项目的需求、架构设计,也要做开发工作。 当企业发展到几十人时,作为大几十号人的软件公司在国内算得上是中等规模的软件公司了。这时可以把技术分工进一步拆分 ,架构师与项目经理角色分开,每项目配测试岗、可以考虑设置数据处理和DBA岗, 如果是大数据公司则数据工程师是很重要的,如是AI公司那么要专门的算法工程师,美工可以招聘也可以找外部合作。当软件公司发展到100人以上的团队,那么可以按产品线或业务领域设置事业部了,也可以设立领域专家岗位专门提供行业业务领域的规范和业务规则和算法,增加品管岗位,技术岗位更加细分,如上位机程序工程师,VUE工程师,微信开发工程师等。增加运维工程师负责公司的机房服务器网络主机、系统运行环境支持等工作,当前DevOps已把这部分工作谈化了。

            一个企业的起点与发展与其前期资源、产品、资本基础、市场基础及其它外部环境息息相关。这些因素太大篇幅,不确定因素也很大,不是本文要介绍的内容,组织架构的设定还有外部经济技术环境、人文环境、企业发起自身的特点等等都有关系。本文只从软件技术特点和技术规模因素一定的情况下,提出自己在组织构架设定建议。


    未来的组织方式:

            企业在成长的过程中组织自身也是不断的变革的,组织方式也会随着社会发展、技术进步、经济环境等方面而发生改变,软件企业也一样。

            组织只包含人员岗位的因子,但随着人工智能时间代的到来,或许未来也要考虑到智能机器设备也是在组织中担当一个重要岗位角色的 ,我们需要为这个角色 进行职责划分,为这个角色进行绩效管理。我们当下的BPM各节点都是人来处理的,而当AI来处理时,那么他会是怎么一种情况呢。值得一提的是,大工业革命时,思想家在提出科学管理学时,把人作为生产线上的一个有生命的机器看待,而在不久的将来,是否把机器当作会思考的人来看待呢。

            随着这几年互联网的飞速发展,一个个巨型的互联网平台脱颖而出,个人或小团队通过平台承接业务,而在整个平台运作环境下又是一个整体,平台就是一个组织。也许像某些人提出的,未来公司化组织会慢慢弱化,而一个个平台加个体的组织方式会变得普遍,在平台组织方式下,对人员的绩效,-福利,考核,责权利方式都会改变。

            随着信息技术的发展,互联网技术的进步,分工是在线完成的,进度管理是在线完成的,协作在线的,沟通与会议都是在线的,管理与绩效也是在线的,团队个体和组织通过线上平台协同起来,成为一个虚拟化的组织 。

            我们组织管理考虑的因素,感情,人际关系,欲望,人文,技术等等,一切都在发生着变化,我也不知道会走向何方,只能就根据实际情况来吧。也许在更远的未来,组织者、决策和协调者是AI,而人 只是在AI的指挥下完成一个个任务,这会是什么样的场景,自己去想象。

    展开全文
  • 企业商务模型的内容主要包括主营业务、商务模式、商务主体、竞品分析、组织架构、商务运作模型和业务流程等。主营业务即公司什么业务。商业模式即公司怎么赚钱。商务主体即哪几个人在一起这门生意。竞品分析即...
  • 最近公司在一个基于vue开发的项目,项目需要开发一个展示组织架构的树组件,在网上搜了半天,没有找到合适的,下面小编给大家分享一个基于Vue制作组织架构树组件,需要的朋友参考下吧
  • 如果中台确实是解决企业现有问题的合理方案,那么建设过程中伴随的组织架构问题就是企业需要关心的,比如中台团队的人从哪来?经费从哪来?建设中台之后,业务团队的决策权力是不是被大幅缩减?本文采访了多位中台...

            对于建设中台的必要性,每家企业肯定都有自己的想法,诸如现有体系不能满足新产品快速迭代和试错的渴望;产品越来越多时,多分支的维护和开发凸显了人力不足的问题等。如果中台确实是解决企业现有问题的合理方案,那么建设过程中伴随的组织架构问题就是企业需要关心的,比如中台团队的人从哪来?经费从哪来?建设中台之后,业务团队的决策权力是不是被大幅缩减?本文采访了多位中台实践者,揭秘大多数人不愿意公开分享的中台组织架构调整。

    1写在前面

           中台确实是一个热度极高的话题,InfoQ 也曾在过往做过很多类似的选题,但是每当涉及到组织架构调整的话题,大部分采访嘉宾都选择了沉默,一位地产企业的 IT 架构师曾在我的追问下表示:组织架构一定要调整,但动组织架构就意味着在动“权力、金钱和人员”。不难看出,这个话题太敏感。

            因此,InfoQ 尝试从组织架构调整入手,了解整个过程以及对中台实践的影响。最终,在我们的不懈努力下(先后被 BAT 以各种原因拒绝,当然也可能是因为没找到合适的人?),终于联系到三位接受我们采访的嘉宾,他们是:网易副总裁、网易杭州研究院执行院长汪源,百分点大数据平台负责人贾喜顺和 ThoughtWorks 首席咨询师王健,再次感谢这三位专家。

    2中台禁区:战略下的矛盾和冲突

            在中台战略制定中,组织架构调整的矛盾与冲突时刻存在,即便是阿里的“共享业务事业部(业务中台)”,早期也是非常艰难地活在淘宝和天猫的夹缝中。汪源在采访中表示:建设中台需要考虑组织、支撑技术和方法论三个方面的因素,一般来讲后两者都可以买到,但组织买不到。所以,最关键的是要对中台组织怎么构建有明确的方案,并下决心去推行。

            为什么大量中台只抄到了阿里的“形”?

            关于中台,很多人都喜欢研究阿里,但很少有人钻研阿里每年两次组织架构调整背后的原因。钟华(花名:古谦)在《企业 IT 架构转型之道(阿里巴巴中台战略思想与架构实战》一书开篇提到:

    与任何公司一样,阿里巴巴组织架构的战略调整势必对公司现有组织架构、部门间的协作等各方面都将带来深远影响...... 假若没能很好地控制战略执行过程中带来的风险,对组织架构的动荡过大,都会给现有业务带来不小的影响。

            因此,企业的每一次组织架构调整都是需要经过慎重考虑的,并且也需要让每一位员工清楚自己的定位。采访中,王健表示:“我认为阿里的中台战略之所以能够成功落地,最关键得益于其组织架构调整的能力。组织架构调整最难的就是让每个员工都能快速了解其背后的战略意图,并快速适应新的组织架构,知道接下来在新的组织架构下自己该干什么,从而让战略调整落地,这是需要一套机制和文化基础来保证的。我看到很多企业在学阿里,高层不断的在调整组织,但底下的员工基本都是懵的,不知道为什么调整,以及接下来自己要做什么。”

            虽然没有采访到阿里,但我们可以通过公开信的方式来获取阿里当年的组织架构调整情况。

            2015 年底,阿里巴巴集团对外宣布全面启动阿里巴巴集团 2018 年中台战略,构建符合 DT 时代的更具创新性、灵活性的“大中台、小前台”组织机制和业务机制。与此同时,张勇在致员工信中宣布了新的组织架构调整计划,如下图:

            不难看出,阿里推进中台战略的关键人物是行癫(现任阿里巴巴集团首席技术官),他直接向张勇汇报。在公开信中,张勇表示:

    行癫是淘宝第一代的技术 Leader 和产品经理,后来成功转型为业务 Leader, 在 1688、淘宝、天猫、聚划算等多项业务中为集团做出过突出的贡献。作为集团内为数不多的兼具技术和商业背景和经验的领导者,行癫是担纲落实集团中台战略的最佳人选。他也将作为阿里集团和蚂蚁金融服务集团统一中台体系的总架构师,全面负责两大集团中台体系的规划和建设。

            这次组织架构调整让阿里正式开启中台战略,但阿里建设中台最早可以追溯至 2009 年共享业务事业部的诞生。当时,淘宝的技术团队同时支持着淘宝和天猫的业务,这样的组织架构决定了技术团队对来自淘宝的业务需求满足的优先级一定要优于天猫,这让天猫的业务团队怨声载道。此外,当时的淘宝和天猫电商系统是完全独立的两套体系,都包含商品、交易、评价、支付、物流等功能。

           基于上述原因,共享业务事业部诞生,在组织架构上与淘宝、天猫具有同样级别的事业部。然而,如前文言,这个事业部起初受到了天猫和淘宝事业部的双重碾压,团队成员如何加班都很难及时、周到地满足两大业务部门的需求,连带着话语权几乎没有(注意:职级相同并不代表话语权相同,想必很多人都对此深有同感)。钟华在书中是这样描述的:员工则是有苦说不出,只能默默流泪。

                                                         图源:《企业 IT 架构转型之道(阿里巴巴中台战略思想与架构实战》

             2010 年,聚划算出现,淘宝和天猫都希望接入。据不完全统计,这至少可以带来 25 倍的销售额增长,这时的阿里高层做出了一个对后来产生重大影响的决定,也是这个决定才让共享业务事业部得以真正成长起来:电商平台要想接入聚划算必须先通过共享业务事业部。钟华认为,这让整个共享业务事业群有了极强的业务抓手,而这对天猫、淘宝、1688(当时已经出现)事业部而言,也是一次权力的调整,这意味着要想获得更高的增长(接入聚划算),就必须接入共享业务事业部。

                                                       图源:《企业 IT 架构转型之道(阿里巴巴中台战略思想与架构实战》

          此外,这种调整不仅停留在集团层面,团队内部也进行了相应调整。早期,淘宝技术团队的组织人员组成跟今天企业中信息中心和技术部门的人员组成几乎一样,整个团队基本都是拥有较强技术技能的人员组成。阿里巴巴集团在构建共享服务体系之后,对各技术团队的组织架构也做了如下调整:

                                                         图源:《企业 IT 架构转型之道(阿里巴巴中台战略思想与架构实战》

            针对每一个建设的服务中心,从组织架构的形态上发生对应调整,不同角色的人员(架构师、开发人员、UED 工程师等)组建成了一个新的组织,每一个这样的组织都针对某一服务中心提供持续的服务能力——开发及运维。所以,在如今的阿里巴巴共享服务体系中,每一个服务中心都是由一个少则 100 多人,多则 4、5 百人的团队对负责的服务中心进行专业的运营。

            如果回顾整个阿里中台战略的推进过程,组织架构其实一直伴随着整个战略执行,只是每次调整解决的问题不尽相同(感兴趣的同学推荐阅读《企业 IT 架构转型之道(阿里巴巴中台战略思想与架构实战》,此处不再赘述)。在接受 InfoQ 采访时,贾喜顺表示,这种组织架构的调整其实是与业务复杂性相关的,类似阿里、京东等大厂需要调整组织架构来保障战略的顺利推进,但一些规模较小的企业可能不必如此复杂,这也要看企业对中台的态度,上述大厂已经将中台看做为重要战略,因此陆续进行了组织架构调整。

            如果要说组织架构调整的过程是否会出现矛盾和冲突,贾喜顺明确表示:“肯定会有”。

            他补充道,任何组织架构调整都涉及到这种矛盾,尤其是集中式的组织结构变更:一方面,这会把责任和权限更聚集,涉及组织管理的权力缩减问题;另一方面,业务边界的划分上需要进行磨合,要理清中台、前台的边界在哪里,如果边界尚不确定,就会涉及很多矛盾、冲突。

            当然,不排除有些边界很难界定,比如基于数据中台出指标体系,统计访问业务的 PV、UV 这种关键指标,不同部门统计的口径不一样,定义中台之后,类似的会有成千上万的指标需要重新进行边界划分,确定哪些指标体系由中台提供,哪些由前台搭建,很多情况下需要一事一议,不是那么容易能划分清楚的。

           既然这并非易事,为什么很多人不愿意谈论这个问题呢?

    为什么鲜少人谈组织架构?

            如果说完全没有人公开对外讨论这个话题,确实太过绝对也不准确,但大部分讨论还是比较委婉的,如开篇所言,这是一个非常敏感的话题。此外,如果不是整个中台战略的重要负责人也很难说清楚这个问题。

            “中台是一个跨团队、跨业务的问题,这是一个企业级的问题,这就是为什么我说它是一个企业级治理的问题”,王健在采访中说道:“互联网公司做中台,每一家企业都有不同的背景和原因,如果把这些推到传统企业,有各种条件需要解决,比如组织能不能调,如果不可以调,那很可能做到一定程度就不能再往前走了,会碰到一个组织的天花板,或者说是组织先行,还是技术先行,这与互联网公司的情况还不太一样,传统企业在组织架构调整上是一个大的坎,调组织就是在动利益关系,这个很难

            因此,王健表示,这就需要中台推动者(下文详述这一人选如何确定)给出一把“尚方宝剑”,不然难以切动这些利益。具体来说,中台团队最初的处境可能会如阿里的“共享业务事业部”一样,不被相关事业部接受,这很容易理解,原事业部已经存在只为此事业部服务的技术支持团队,所有需求都可以得到及时响应,如果接入中台这样一个同时服务多事业群的技术支持团队,如何确保业务需求可以被及时响应。此外,一旦接入中台,这意味着原有团队的人员需要进行调整,决策权可能也会被缩减,这种情况下,中台团队的处境十分艰难。

    如果想做,能不能照搬阿里的组织架构呢?

            这个肯定不可以,这里还需要区分中台的类型和原有企业的组织架构方式,毕竟现在有关中台的概念太多,比如数据中台、技术中台和业务中台等,类型不同、目的不同,调整的方式也有所区别。

           贾喜顺基于数据中台的搭建经验表示,如果企业在搭建数据中台后相应地进行架构调整,肯定会对中台落地提供更大保障。这是因为,中台涉及各业务系统数据的汇集、治理、标准和推广,这些都需要从组织层面来保障。就原来垂直业务线的团队而言,部门人员很大可能会缩减,中台是把以往企业各部门做的同样的事情进行集中,这样的话,其中有部分人员可能要被调整到其他部门,比如偏业务分析类工作;另一部分比较偏底层的技术人员在垂直业务领域就可能不需要了。此外,人员结构也会有变化:原有的底层技术、研发人员会缩减,在实践数据中台的垂直业务线团队更偏重面向业务的应用产品研发人员和业务分析人员。

           在王健看来,数据中台和技术中台其实是传统企业最喜欢率先引入建设的,因为相对而言,传统企业内部对于技术和数据团队的划分相对明确,尤其是业务并不是非常杂的时候,技术团队和数据团队往往就是一个独立的、全面支持的角色,比如原来做数据平台的团队,现在就可以直接继续承担数据中台的建设,不需要做太多结构上的调整,毕竟不是非常影响业务,而业务中台则是一定要动组织的,这个过程涉及多条业务线的利益关系,这之间的屏障很难打破。照搬肯定不行,其他人调整是为了业务的横向扩展(例如做全球化),你的目的是为了纵向数据打通,这显然不可复制,还是得想清楚调整的目的是什么。

            然而,在汪源的定义中,所有的中台都是业务中台,数据中台是一种特殊的业务中台,一般指以负责数据采集、数据集成、数据治理,指标体系和数据仓库统一建设等数据管理活动的组织。当前阶段,他认为不存在技术中台,现在业界所谓的技术中台其实都是云计算、AI 算法等技术平台,这些技术平台没有业务属性,做这些平台的人也不懂业务,称做中台是不合适的。

            管理上的困难主要来自于技术属性较弱的 PMO(Project Management Office)、推荐搜索、数据分析等专业能力部门,这些部门的发展存在很大的不稳定性,如果能力不能持续的提升和沉淀,就可能导致部门的分拆。这么多年分分合合都有。正是基于这些经历,汪源才提出以能力组、技术平台和方法论为主的标准能力组织、包含专向组的胖中台组织、中台组织到平台组织的转化等方法,以应对不同的情况。

            中台和各前台业务团队是支撑和合作的关系,这两类团队需要一起制定工作规划,一起确定绩效目标,因为有一些绩效目标是中台和前台业务团队一起背。除此之外,中台团队应该有部分人员是专职对接和服务每个核心的前台业务,这些人应该和前台业务团队坐在一起,团建应该一起去,汪源称之为“专人就位”,这样才能塑造信任和默契。如果前台团建都不叫你去,那你这个中台就危险了。(阿里各服务中心的核心架构师和运营人员会定期参与前端业务方的业务会议或重要项目的研讨会)

            对于前台业务团队来说,最大的变化是得放弃完全控制权,承担一定风险,换回来的是更低成本、更高效率、更高质量的服务,更强的能力。

    基于如上种种可能发生的变化,中台的组织架构调整问题鲜少人谈。

    3组织架构怎么调?

    中台往往是企业里面最费力不讨好、最容易失败的团队,做不好看起来就是在给各个团队制造麻烦。——王健

            组织架构调整是一个很大的问题,典型的组织架构就包括:直线职能型(U)、事业部型(M)、矩阵型、网络型、平台型,还不算各种组合和变体;如果结合经营模式,还需要了解大家常常提到的阿米巴经营模式以及海尔的自主经营体……所以,这些肯定不是一篇文章就可以讲清楚的,此处着重讲解中台战略的推动者和中台团队的人员构成。

    中台的推动者

            如上文言,阿里推进中台战略的关键人物是行癫,行癫在 2015 年 3 月份开始已经是阿里巴巴中国零售平台负责人;2018 年底,京东商城调整组织架构,中台组织规划(如下图)首次完整亮相,负责人徐雷是京东零售集团的轮值 CEO;2019 年 1 月 4 日,腾讯正式宣布成立技术委员会,腾讯高级执行副总裁、技术工程事业群总裁卢山和腾讯高级执行副总裁、云与智慧产业事业群总裁汤道生两名腾讯总办成员牵头,几大事业群的技术负责人悉数进入技术委员会决策圈,这被评为中台战略的良好开端......

            综上,大厂推进中台战略的决策人物(团队成员)的职级均不低,三位专家在采访中也在这一点上达成了统一:中台战略的推进过程一定是自顶向下的,至少是 CIO/CTO 层面向下推动,一定需要得到高层的支持。否则,很难切动组织架构调整中的利益网。

            “中台建设的前期可能没有给业务带来多大帮助,反而制造了很多问题,如果没有 CIO、CTO 甚至 CEO,或者技术委员会、战略规划部门等的支持,很难进行,可能原来想做一个业务中台,后来因为无法撬动业务,数据也拿不到,最终的建设效果就会大打折扣”,王健进一步补充道,“如果这时领导层没有驱动力帮助继续推进这件事情,这个中台推也不是,不推也不是,因此我认为中台建设应该是一个自上而下的驱动过程。”

            此外,大部分员工是很难站在一定的高度去做一个”看十年、做一年“的规划,特别是当一件事和眼前的 KPI 难以达成平衡时,中台的工作会受到各个方面的挑战。因此高层的坚定支持是中台战略的第一必要条件。中台的价值是有条件的,搭建完成后还得有机会来享受成果,这个判断也需要高层来完成。额外的,高层还需要推动一些规范的建设,如交互规范、视觉规范、视觉配套的前端组件规范等,在这些规范的约束下,中台服务搭建的难度会大大降低。

            对于数据中台的建设,贾喜顺同样表示:“数据中台是“一把手”工程,需要从上到下进行。中台数据是战略层面的事情而不是战术层面,自下向上推动几乎没有可能,比如涉及标准统一,从下而上只能看到一个点,难免会以偏概全。”

    中台团队的人员构成

            建设中台对原有垂直业务线的人员可能会有很大影响,那么,中台团队的人员又是从哪来的呢?

    就数据中台团队的搭建而言,贾喜顺表示,这与团队一把手的想法也有关系,通常会从企业内部的垂直业务线进行人才筛选,在组织架构调整或者成立中台团队中,会有一部分人从垂直业务线剥离出来。这是因为企业内部的人更了解业务,会比外部招聘的人更容易进入状态。不过,对于传统企业,其内部更偏管理,数据中台团队建设更多的需要借助外部力量,如搭建数据中台的企业,再在企业内部辅助配一些团队人员进行支撑。

            王健也基本赞同上述观点,一开始大多是从前台抽调,毕竟企业资源有限,不可能纯招一批人,这些人可能包含架构师等实力非常强的人,因为业务中台的建设者要比各垂直业务线更懂业务,不仅仅是懂技术就可以的,尤其是很多公司是产品型文化,可能还会配备产品经理,这可能与传统企业里面的项目经理有些类似,但要有很强的沟通和协调能力,需要跟所有业务线战斗,然后服务好所有业务方,但如果没处理好组织关系,业务方给到中台的人可能是自己不想用的。

            汪源同样认为:外部招聘对于构建中台团队往往很难,因为中台团队一要懂业务,还需要得到前台业务的信任,所以最好是从内部培养和选拔,可以从平台团队选拔,但此时要配置懂业务的人配合,也可以从业务线抽调。

            中台团队的核心管理层要求具备业务经验和敏感度,中台一要懂业务;二要有强的执行力、目标感和沟通能力,因为中台要跨部门推动工作落地;三要有强的逻辑分析能力,因为中台工作比较抽象,要提炼。

            综上,中台团队的人员组成就比较清晰了:内部抽调是重要来源;人员大都既懂业务,又得懂技术;团队内部最好有一个沟通和协调能力较强的人员,这个人是中台团队对外沟通的桥梁,不同企业叫法不同,比如阿里最为核心的角色是业务架构师,但可以简单理解为中台的产品经理。

                                                                      图源:《我的一年中台实战录》

            如上图,中台产品经理也被认为是 B 端产品经理的一种类型,有 B 端通用的能力要求,比如擅长做抽象建模、具备一定的研发技术功底、懂 UML 等,不同企业要求不同,此处就不一一展开了。

    4造中台,钱应该谁出?

            企业在推动一些决策落地时,往往背后还有两个重要考量:这件事情能带来成本的节省吗?如果不能,这件事情可以带来更多营收吗?如果都不能,这件事情如此复杂,做的必要性是什么?

            众所周知,阿里建设中台最初源于马云带领集团高管拜访 Supercell 说起,这是一家位于赫尔辛基的移动游戏公司,这家公司号称是世界上最成功的移动游戏公司,其当时已经在使用“中台模式”接连推出爆款游戏,在不到 200 人的情况下成为了年税前利润 15 亿美元的公司。2016 年 6 月,中国腾讯公司以 86 亿美元收购了这家公司 84.3% 的股权,每一名员工人均贡献估值超过 3.54 亿人民币。

            通过建设中台,Supercell 拥有了快速推出产品、快速试错(一旦产品公测期间反馈不好,团队会快速决定放弃)的能力,进而可以在人数不多的情况下创造如此大的利润。虽然中台可能创造的利润非常可观,但是企业在建设中台的过程中,对前路尚不清晰时,钱应该谁来出呢?

            对于技术服务类企业,中台对外售卖,这个问题很好解决,起码这个团队是盈利的,但在很多传统企业,技术往往仅支持内部业务,是一个纯成本的部门,当然这肯定是为业务带来了价值,只是直观来看,这是一个不营收的部门。如果站在为业务赋能的角度,业务中台的钱显然需要业务部门出一部分,建成之后可能还需要从业务方分走部分利润。

           但这条路很难走通,每条业务线都有自己的 OKR 或者 KPI,这件事情对各业务部门的考核可能没有直接帮助,甚至于在局部较短时间内是阻碍当年 KPI 达成的。

            王健表示,试想一下,如果一家企业要推出一款产品,很少有上来就采用众筹模式,让用户预付款,这样会对产品产生很大的短期交付压力,也不利于产品的初始阶段研发。相反,现在很多企业推出的产品,前期都是免费的,先通过投资机构注资研发,快速推向市场获取用户反馈,再不断改进并适时考虑向用户增值收费。如果考虑让公司从战略投资层面出这个钱,那么公司肯定也是要考虑收支平衡问题,投资的目的是什么,需要多长时间可以带来收益,如何合理制定中台团队的 OKR,这些都是需要提前想清楚的。

            比如,阿里业务中台团队的绩效考核会考虑服务稳定性、业务创新、服务接入量以及客户满意度四项指标。其中,服务稳定是重中之重,这部分的考核比重会占整体的 40% 左右;适当允许一定数量因为创新业务上线带来的事故,鼓励团队创新,这部分可能会在 25% 左右;吸引更多前端业务方接入,一般会占 20% 左右,剩下的是客户满意度。

           但是,贾喜顺也提醒道:建设数据中台是个长期过程,不是三个月或者半年就能出成效的,决策者需要在理念上进行转变。言外之意,即便企业决定通过战略投资的方式建设中台,但短期内也未必可以看到收益。

    5结束语

           建设中台是一个非常复杂的过程,这不是简单的决策而是战略层面的调整。汪源在采访最后表示:“建设中台是比较复杂的,所以首先要判断是否有必要,比如是否觉得核心能力确实存在较大短板;跨业务或项目的共享做得不够;需求变化快且多;数据经常出错或者不一致等。如果需求不大,时机不成熟,可以再观察观察。”

            对于确实规划建设中台的,汪源还是建议要从组织、支撑技术和方法论三个方面都要做好准备,这方面的内容很多,很难给出几条简单的建议就能起到很大的作用。建议第一步先做自主研究,对建设中台有一个总体的理解和把握;第二步找有建设经验的团队学习。

            最后,本文引用王健在采访中的一句话作为结尾:建设中台不能天天喊口号,如果既不敢调动资源,也不敢调整组织架构,还整天担心对前台业务的影响,难以承担失败可能带来的风险,这很难成功。中台承载的是企业最核心的业务能力,最核心的差异化竞争力,是战略层面的事情,没有战略层面的决心和耐心坚持下来就很难看到成果,有的时候,中台建设确实也需要“因为相信,所以看见”。

     采访嘉宾(排名不分先后)

    汪源,网易副总裁,网易杭州研究院执行院长。2006 年获浙江大学计算机专业博士学位,之后加入网易公司。现作为网易杭州研究院执行院长,全面负责网易集团公共技术支撑工作与云计算、大数据业务,主要包括云计算与服务端架构、前端技术、大数据挖掘分析、信息安全、多媒体、运维、质量保障等方向。

    贾喜顺,长期专注于数据仓库、数据中心和大数据平台建设,先后任职东方国信、搜狐畅游等企业,现为百分点大数据平台负责人,负责底层平台研发及企业级服务。

    王健 ,ThoughtWorks 首席咨询师, 十多年国内外大型企业软件设计开发,团队组织转型从业经验。一直保持着对技术的热爱,享受着编码的快乐,热衷于技术分享。目前专注在企业平台化转型、中台战略规划,微服务架构与实施,大型遗留系统服务化改造,敏捷精益转型,以及 DevOps 和持续交付等实践在大型企业中的推广与落地。


     

    展开全文
  • 本篇介绍一下在架构开发中角色和技能要求,以便大家在实施TOGAF时知道谁来,需要具备或提高哪些技能。软件开发管理就比较复杂,架构开发管理就更复杂了,由于还没有具体实践过,暂时还没有这些内容的深入了解和...
  • 企业微信组织架构同步优化的思路

    万次阅读 2018-02-12 16:03:25
    企业微信初版的全量同步方案在快速的业务增长面前已经捉襟见肘,针对其遇到的问题,怎样做好组织架构同步优化?这是又一篇来自微信团队的技术实战。写在前面企业微信在快速发展过程中,陆续有大企业加入使用,企业...

    作为企业级的微信,在业务快速发展的背景下,迭代优化的要求也越发急迫。企业微信初版的全量同步方案在快速的业务增长面前已经捉襟见肘,针对其遇到的问题,怎样做好组织架构同步优化?这是又一篇来自微信团队的技术实战。

    写在前面

    企业微信在快速发展过程中,陆续有大企业加入使用,企业微信初版采用全量同步方案,该方案在大企业下存在流量和性能两方面的问题,每次同步消耗大量流量,且在 iPhone 5s 上拉取 10w+ 成员架构包解压时会提示 memory warning 而应用崩溃。

    全量同步方案难以支撑业务的快速发展,优化同步方案越来越有必要。本文针对全量同步方案遇到的问题进行分析,提出组织架构增量同步方案,并对移动端实现增量同步方案的思路和重难点进行了讲解。

    企业微信业务背景

    在企业微信中,组织架构是非常重要的模块,用户可以在首页的 tab 上选择"通讯录"查看到本公司的组织架构,并且可以通过"通讯录"找到本公司的所有成员,并与其发起会话或者视频语音通话。

    组织架构是非常重要且敏感的信息,企业微信作为企业级产品,始终把用户隐私和安全放在重要位置。针对组织架构信息,企业管理员具有高粒度隐私保护操作权限,不仅支持个人信息隐藏,也支持通讯录查看权限等操作。

    在企业微信中,组织架构特征有:

    1、多叉树结构。叶子节点代表成员,非叶子节点代表部门。部门最多只有一个父部门,但成员可属于多个部门。

    2、架构隐藏操作。企业管理员可以在管理后台设置白名单和黑名单,白名单可以查看完整的组织架构,其他成员在组织架构里看不到他们。黑名单的成员只能看到自己所在小组和其所有的父部门,其余人可以看到黑名单的成员。

    3、组织架构操作。企业管理员可以在 web 端和 app 端添加 / 删除部门,添加 / 删除 / 移动 / 编辑成员等操作,并且操作结果会及时同步给本公司所有成员。

    全量同步方案的问题

    本节大致讲解下全量同步方案实现以及遇到的问题。

    全量同步方案原理

    企业微信在 1.0 时代,从稳定性以及快速迭代的角度考虑,延用了企业邮通讯录同步方案,采取了全量架构同步方案。

    核心思想为服务端下发全量节点,客户端对比本地数据找出变更节点。此处节点可以是用户,也可以是部门,将组织架构视为二叉树结构体,其下的用户与部门均为节点,若同一个用户存在多个部门下,被视为多个节点。

    全量同步方案分为首次同步与非首次同步:

    首次同步服务端会下发全量的节点信息的压缩包,客户端解压后得到全量的架构树并展示。

    非首次同步分为两步:

    服务端下发全量节点的 hash 值。客户端对比本地数据找到删除的节点保存在内存中,对比找到新增的节点待请求具体信息。

    客户端请求新增节点的具体信息。请求具体信息成功后,再进行本地数据库的插入 / 更新 / 删除处理,保证同步流程的原子性。

    用户反馈

    初版上线后,收到了大量的组织架构相关的 bug 投诉,主要集中在:

    流量消耗过大。

    客户端架构与 web 端架构不一致。

    组织架构同步不及时。

    这些问题在大企业下更明显。

    问题剖析

    深究全量同步方案难以支撑大企业同步的背后原因,皆是因为采取了服务端全量下发 hash 值方案的原因,方案存在以下问题:

    拉取大量冗余信息。即使只有一个成员信息的变化,服务端也会下发全量的 hash 节点。针对几十万人的大企业,这样的流量消耗是相当大的,因此在大企业要尽可能的减少更新的频率,但是却会导致架构数据更新不及时。

    大企业拉取信息容易失败。全量同步方案中首次同步架构会一次性拉取全量架构树的压缩包,而超大企业这个包的数据有几十兆,解压后几百兆,对内存不足的低端设备,首次加载架构可能会出现内存不足而 crash。非首次同步在对比出新增的节点,请求具体信息时,可能遇到数据量过大而请求超时的情况。

    客户端无法过滤无效数据。客户端不理解 hash 值的具体含义,导致在本地对比 hash 值时不能过滤掉无效 hash 的情况,可能出现组织架构展示错误。

    优化组织架构同步方案越来越有必要。

    寻找优化思路

    寻求同步方案优化点,我们要找准原来方案的痛点以及不合理的地方,通过方案的调整来避免这个问题。

    组织架构同步难点

    准确且耗费最少资源同步组织架构是一件很困难的事情,难点主要在:

    组织架构架构数据量大。消息 / 联系人同步一次的数据量一般情况不会过百,而企业微信活跃企业中有许多上万甚至几十万节点的企业,意味着架构一次同步的数据量很轻松就会上千上万。移动端的流量消耗是用户非常在乎的,且内存有限,减少流量的消耗以及减少内存使用并保证架构树的完整同步是企业微信追求的目标。

    架构规则复杂。组织架构必须同步到完整的架构树才能展示,而且企业微信里的涉及到复杂的隐藏规则,为了安全考虑,客户端不应该拿到隐藏的成员。

    修改频繁且改动大。组织架构的调整存在着新建部门且移动若干成员到新部门的情况,也存在解散某个部门的情况。而员工离职也会通过组织架构同步下来,意味着超大型企业基本上每天都会有改动。

    技术选型-提出增量更新方案

    上述提到的问题,在大型企业下会变得更明显。在几轮方案讨论后,我们给原来的方案增加了两个特性来实现增量更新:

    增量。服务端记录组织架构修改的历史,客户端通过版本号来增量同步架构。

    分片。同步组织架构的接口支持传阈值来分片拉取。

    在新方案中,服务端针对某个节点的存储结构可简化为:

    vid 是指节点用户的唯一标识 id,departmentid 是指节点的部门 id,is_delete 表示该节点是否已被删除。

    若节点被删除了,服务端不会真正的删除该节点,而将 is_delete 标为 true。

    若节点被更新了,服务端会增大记录的 seq,下次客户端来进行同步便能同步到。

    其中,seq 是自增的值,可以理解成版本号。每次组织架构的节点有更新,服务端增加相应节点的 seq 值。客户端通过一个旧的 seq 向服务器请求,服务端返回这个 seq 和 最新的 seq 之间所有的变更给客户端,完成增量更新。

    图示为:

    通过提出增量同步方案,我们从技术选型层面解决了问题,但是在实际操作中会遇到许多问题,下文中我们将针对方案原理以及实际操作中遇到的问题进行讲解。

    增量同步方案

    本节主要讲解客户端中增量同步架构方案的原理与实现,以及基础概念讲解。

    增量同步方案原理

    企业微信中,增量同步方案核心思想为:

    服务端下发增量节点,且支持传阈值来分片拉取增量节点,若服务端计算不出客户端的差量,下发全量节点由客户端来对比差异。

    增量同步方案可抽象为四步完成:

    客户端传入本地版本号,拉取变更节点。

    客户端找到变更节点并拉取节点的具体信息。

    客户端处理数据并存储版本号。

    判断完整架构同步是否完成,若尚未完成,重复步骤 1,若完成了完整组织架构同步,清除掉本地的同步状态。

    忽略掉各种边界条件和异常状况,增量同步方案的流程图可以抽象为:

    接下来我们再看看增量同步方案中的关键概念以及完整流程是怎样的。

    版本号

    同步的版本号是由多个版本号拼接成的字符串,版本号的具体含义对客户端透明,但是对服务端非常重要。

    版本号的组成部分为:

    版本号回退

    增量同步在实际操作过程中会遇到一些问题:

    服务端不可能永久存储删除的记录,删除的记录对服务端是毫无意义的而且永久存储会占用大量的硬盘空间。而且无效数据过多也会影响架构读取速度。当 is_delete 节点的数目超过一定的阈值后,服务端会物理删除掉所有的 is_delete 为 true 的节点。此时客户端会重新拉取全量的数据进行本地对比。

    一旦架构隐藏规则变化后,服务端很难计算出增量节点,此时会下发全量节点由客户端对比出差异。

    理想状况下,若服务端下发全量节点,客户端铲掉旧数据,并且去拉全量节点的信息,并且用新数据覆盖即可。但是移动端这样做会消耗大量的用户流量,这样的做法是不可接受的。所以若服务端下发全量节点,客户端需要本地对比出增删改节点,再去拉变更节点的具体信息。

    增量同步情况下,若服务端下发全量节点,我们在本文中称这种情况为版本号回退,效果类似于客户端用空版本号去同步架构。从统计结果来看,线上版本的同步中有 4% 的情况会出现版本号回退。

    阈值分片拉取

    若客户端的传的 seq 过旧,增量数据可能很大。此时若一次性返回全部的更新数据,客户端请求的数据量会很大,时间会很长,成功率很低。针对这种场景,客户端和服务端需要约定阈值,若请求的更新数据总数超过这个阈值,服务端每次最多返回不超过该阈值的数据。若客户端发现服务端返回的数据数量等于阈值,则再次到服务端请求数据,直到服务端下发的数据数量小于阈值。

    节点结构体优化

    在全量同步方案中,节点通过 hash 唯一标示。服务端下发的全量 hash 列表,客户端对比本地存储的全量 hash 列表,若有新的 hash 值则请求节点具体信息,若有删除的 hash 值则客户端删除掉该节点信息。

    在全量同步方案中,客户端并不能理解 hash 值的具体含义,并且可能遇到 hash 碰撞这种极端情况导致客户端无法正确处理下发的 hash 列表。

    而增量同步方案中,使用 protobuf 结构体代替 hash 值,增量更新中节点的 proto 定义为:

    在增量同步方案中,用 vid 和 partyid 来唯一标识节点,完全废弃了 hash 值。这样在增量同步的时候,客户端完全理解了节点的具体含义,而且也从方案上避免了曾经在全量同步方案遇到的 hash 值重复的异常情况。

    并且在节点结构体里带上了 seq 。节点上的 seq 来表示该节点的版本,每次节点的具体信息有更新,服务端会提高节点的 seq,客户端发现服务端下发的节点 seq 比客户端本地的 seq 大,则需要去请求节点的具体信息,避免无效的节点信息请求。

    判断完整架构同步完成

    因为 svr 接口支持传阈值批量拉取变更节点,一次网络操作并不意味着架构同步已经完成。那么怎么判断架构同步完成了呢?这里客户端和服务端约定的方案是:

    若服务端下发的(新增节点+删除节点)小于客户端传的阈值,则认为架构同步结束。

    当完整架构同步完成后,客户端需要清除掉缓存,并进行一些额外的业务工作,譬如计算部门人数,计算成员搜索热度等。

    增量同步方案 - 完整流程图

    考虑到各种边界条件和异常情况,增量同步方案的完整流程图为:

    增量同步方案难点

    在加入增量和分片特性后,针对几十万人的超大企业,在版本号回退的场景,怎样保证架构同步的完整性和方案选择成为了难点。

    前文提到,隐藏规则变更以及后台物理删除无效节点后,客户端若用很旧的版本同步,服务端算不出增量节点,此时服务端会下发全量节点,客户端需要本地对比所有数据找出变更节点,该场景可以理解为版本号回退。在这种场景下,对于几十万节点的超大型企业,若服务端下发的增量节点过多,客户端请求的时间会很长,成功率会很低,因此需要分片拉取增量节点。而且拉取下来的全量节点,客户端处理不能请求全量节点的具体信息覆盖旧数据,这样的话每次版本号回退的场景流量消耗过大。

    因此,针对几十万节点的超大型企业的增量同步,客户端难点在于:

    断点续传。增量同步过程中,若客户端遇到网络问题或应用中止了,在下次网络或应用恢复时,能够接着上次同步的进度继续同步。

    同步过程中不影响正常展示。超大型企业同步的耗时可能较长,同步的时候不应影响正常的组织架构展示。

    控制同步耗时。超大型企业版本号回退的场景同步非常耗时,但是我们需要想办法加快处理速度,减少同步的消耗时间。

    思路

    架构同步开始,将架构树缓存在内存中,加快处理速度。

    若服务端端下发了需要版本号回退的 flag,本地将 db 中的节点信息做一次备份操作。

    将服务端端下发的所有 update 节点,在架构树中查询,若找到了,则将备份数据转为正式数据。若找不到,则为新增节点,需要拉取具体信息并保存在架构树中。

    当完整架构同步结束后,在 db 中找到并删除掉所有备份节点,清除掉缓存和同步状态。

    若服务端下发了全量节点,客户端的处理时序图为:

    服务端下发版本号回退标记

    从时序图中可以看出,服务端下发的版本号回退标记是很重要的信号。

    而版本号回退这个标记,仅仅在同步的首次会随着新的版本号而下发。在完整架构同步期间,客户端需要将该标记缓存,并且跟着版本号一起存在数据库中。在完整架构同步结束后,需要根据是否版本号回退来决定删除掉数据库中的待删除节点。

    备份架构树方案

    架构树备份最直接的方案是将 db 中数据 copy 一份,并存在新表里。如果在数据量很小的情况下,这样做是完全没有问题的,但是架构树的节点往往很多,采取这样简单粗暴的方案在移动端是完全不可取的,在几十万人的企业里,这样做会造成极大的性能问题。

    经过考虑后,企业微信采取的方案是:

    若同步架构时,后台下发了需要版本号回退的 flag,客户端将缓存和 db 中的所有节点标为待删除(时序图中 8,9 步)。

    针对服务端下发的更新节点,在架构树中清除掉节点的待删除标记(时序图中 10,11 步)。

    在完整架构同步结束后,在 db 中找到并删除掉所有标为待删除的节点(时序图中 13 步),并且清除掉所有缓存数据。

    而且,在增量同步过程中,不应该影响正常的架构树展示。所以在架构同步过程中,若有上层来请求 db 中的数据,则需要过滤掉有待删除标记的节点。

    缓存架构树

    方案决定客户端避免不了全量节点对比,将重要的信息缓存到内存中会大大加快处理速度。内存中的架构树节点体定义为:

    此处我们用 std::map 来缓存架构树,用 std::pair 作为 key。我们在比较节点的时候,会涉及到很多查询操作,使用 map 查询的时间复杂度仅为 O(logn)。

    增量同步方案关键点

    本节单独将优化同步方案中关键点拿出来写,这些关键点不仅仅适用于本文架构同步,也适用于大多数同步逻辑。

    保证数据处理完成后,再储存版本号

    在几乎所有的同步中,版本号都是重中之重,一旦版本号乱掉,后果非常严重。

    在架构同步中,最最重要的一点是:

    保证数据处理完成后,再储存版本号。

    在组织架构同步的场景下,为什么不能先存版本号,再存数据呢?

    这涉及到组织架构同步数据的一个重要特征:架构节点数据是可重复拉取并覆盖的。

    考虑下实际操作中遇到的真实场景:

    若客户端已经向服务端请求了新增节点信息,客户端此时刚刚插入了新增节点,还未储存版本号,客户端应用中止了。

    此时客户端重新启动,又会用相同版本号拉下刚刚已经处理过的节点,而这些节点跟本地数据对比后,会发现节点的 seq 并未更新而不会再去拉节点信息,也不会造成节点重复。

    若一旦先存版本号再存具体数据,一定会有概率丢失架构更新数据。

    同步的原子性

    正常情况下,一次同步的逻辑可以简化为:

    在企业微信的组织架构同步中存在异步操作,若进行同步的过程不保证原子性,极大可能出现下图所示的情况:

    该图中,同步的途中插入了另外一次同步,很容易造成问题:

    输出结果不稳定。若两次同步几乎同时开始,但因为存在网络波动等情况,返回结果可能不同,给调试造成极大的困扰。

    中间状态错乱。若同步中处理服务端返回的结果会依赖于请求同步时的某个中间状态,而新的同步发起时又会重置这个状态,很可能会引起匪夷所思的异常。

    时序错乱。整个同步流程应该是原子的,若中间插入了其他同步的流程会造成整个同步流程时序混乱,引发异常。

    怎样保证同步的原子性呢?

    我们可以在开始同步的时候记一个 flag 表示正在同步,在结束同步时,清除掉该 flag。若另外一次同步到来时,发现正在同步,则可以直接舍弃掉本次同步,或者等本次同步成功后再进行一次同步。

    此外也可将同步串行化,保证同步的时序,多次同步的时序应该是 FIFO 的。

    缓存数据一致性

    移动端同步过程中的缓存多分为两种:

    内存缓存。加入内存缓存的目的是减少文件 IO 操作,加快程序处理速度。

    磁盘缓存。加入磁盘缓存是为了防止程序中止时丢失掉同步状态。

    内存缓存多缓存同步时的数据以及同步的中间状态,磁盘缓存用于缓存同步的中间状态防止缓存状态丢失。

    在整个同步过程中,我们都必须保证缓存中的数据和数据库的数据的更改需要一一对应。在增量同步的情况中,我们每次需要更新 / 删除数据库中的节点,都需要更新相应的缓存信息,来保证数据的一致性。

    优化数据对比

    内存使用

    测试方法:使用工具 Instrument,用同一账号监控全量同步和增量同步分别在首次加载架构时的 App 内存峰值。

    内存峰值测试结果

    分析

    随着架构的节点增多,全量同步方案的内存峰值会一直攀升,在极限情况下,会出现内存不足应用程序 crash 的情况(实际测试中,30w 节点下,iPhone 6 全量同步方案必 crash)。而增量同步方案中,总节点的多少并不会影响内存峰值,仅仅会增加同步分片的次数。

    优化后,在腾讯域下,增量同步方案的 App 总内存使用仅为全量同步方案的 53.1%,且企业越大优化效果越明显。并且不论架构的总节点数有多少,增量同步方案都能将完整架构同步下来,达到了预期的效果。

    流量使用

    测试方法:在管理端对成员做增加操作五次,通过日志分析客户端消耗流量,取其平均值。日志会打印出请求的 header 和 body 大小并估算出流量使用值。

    测试结果

    分析

    增加成员操作,针对增量同步方案仅仅会新拉单个成员的信息,所以无论架构里有多少人,流量消耗都是相近的。同样的操作针对全量同步方案,每次请求变更,服务端都会下发全量 hash 列表,企业越大消耗的流量越多。可以看到,当企业的节点数达到 20w 级别时,全量同步方案的流量消耗是增量同步方案的近 500 倍。

    优化后,在腾讯域下,每次增量同步流量消耗仅为全量同步方案的 0.4%,且企业越大优化效果越明显。

    写在最后

    增量同步方案从方案上避免了架构同步不及时以及流量消耗过大的问题。通过用户反馈和数据分析,增量架构同步上线后运行稳定,达到了理想的优化效果。


    展开全文
  • 企业架构培训感悟

    千次阅读 热门讨论 2021-01-06 22:23:59
    很多企业希望能够数字化转型,但是一到具体启动的时候又觉得两眼一抹黑,不知道如何下手。这次培训向我们阐述了如何可以通过TOGAF这种方法论把战略进行落地。 二、为什么企业架构那么重要? 作为软件开发...

    一、前言

    很多企业希望能够做数字化转型,但是一到具体启动做的时候又觉得两眼一抹黑,不知道如何下手。这次培训向我们阐述了如何可以通过TOGAF这种方法论把战略进行落地。

     

    二、为什么企业架构那么重要?

    作为软件开发工程师,我们总是习惯于努力尽责的把分配给我们的开发任务按时按质完成,再有业务导向一点的开发会在受理需求前会先向业务了解清楚具体的需求背景及想解决的业务问题,这已经很不容易了。

    因此,为什么需要去解决这个业务问题?背后跟企业的业务战略有什么关系?或者说企业的业务战略是如何一层层的对应上我们日常的开发工作呢?作为一个合格的架构师,无论是业务架构、技术架构或应用架构,这都是必须得知道的基本事实。我的理解是TOGAF就是那个把企业的战略有效略映射到IT系统层面的那个方法。它的内涵是强调IT与业务对齐,通过建立企业架构将战略规划落地,保证架构的规划是以业务为驱动和主导,架构落地后能够实现业务目标;这跟我们的目标管理是同一原理的,就是通过自顶而下的进行目标的分解,而只有从上到下的分解才能保证IT的动作能够跟业务目标紧紧对应上的。

    TOGAF9.2作为企业架构的标准,它包含了以下四种架构(具体如下图),其中我这里想要稍微讨论一下我对业务架构(BA)和应用架构(AA)的一些理解。

    1、业务架构(Business Architect)

    2、数据架构(Data Architect)

    3、应用架构(Application Architect)

    4、技术架构(Technology Architect)

     

    三、业务架构(BA)

    首先,业务架构在TOGAF方法论上是上承业务战略下接技术的一个中间关键环节,它明确定义了企业的治理结构、业务能力、业务流程及业务数据。其中,业务能力定义了企业做什么,业务流程定义了企业怎么做。

    在明确业务能力的这个范畴内,业务架构师需要通过政策研究、高层访谈及同业调研等手段确定我们要做推行这个业务战略的驱动因素及业务目标,即是企业要做什么来达到这个业务战略。接着,业务流程则明确了针对流程中每个部门的定位及职责、具体业务规则、业务数据流向等维度的信息。既然企业架构是企业对市场信息认知的体现,那么业务架构(BA)就是实现或者实施这个体现的一个具体方法论。

    为什么我会这么说?举个例子,在企业刚开始那几年,企业首要做的是生存下来,然后会出现什么状况?所有系统的建设都是基于急用先行而进行建设的,就妄论系统间的数据共享或功能复用之类的高阶需求了,因此导致烟囱林立,这也是我们目前的现状。但是随着新烟囱的增加和旧烟囱的进一步巩固,需求交付会随着功能复杂度增加和跨团队沟通成本提高而呈现下降趋势,这个时候会出现慢慢跟不上业务节奏的现象。这个时候,可能业务功能(或者叫业务战略)大体还是没变的,但是随着规模的扩大,可能原有的业务流程已经不适应了,这个时候就是业务架构(BA)要开始发挥能力的时候了。这个时候,它需要根据企业实际的情况(如组织架构的变动、流程变动)重新定义或调整新的业务流程以便更好的适应或者支持业务。

    例如,本人所负责的几个业务条线在这几年陆陆续续在往导流方向发展,每个业务条线的业务流程都是基本差不多,更多不同点可能就是需要收集的信息不一致,或者渠道展示风格不一致。研发侧也会发现实际上大体流程是可以复用的,因此觉得可以共建,但是业务侧也会有自己的想法(例如资源专属、风格各异等),这本身没错的毕竟每个业务条线也背各自的KPI,那肯定按自己业务构想去做是最安全的,就算指标达不到也认命了(自己挖的坑自己哭着也认了)。但是这个怎么解决资源复用和资源专属的冲突呢?就没有办法吗?按照业务架构(BA)的方法,应该是从业务流程层面定义清楚如何把这三个业务条线进行求同存异或者如何分段管理,并跟领导层沟通并得到充分理解与认同。一旦有了这个新调整的业务流程,研发侧在系统开发时候才能更加有迹(原则)可循,从而研发效率才能得到提升,基于复用最大化为目标的中台化才能更加顺利的落地。

     

    四、应用架构(AA)

    首先,正如温老师所说的,这里的应用架构指的不是应用系统的架构,而是一组应用系统及其相互关系的描述,它是用于定义为了支持某类业务所需要使用到的系统,相对来说比我们平时的系统架构要宏观一点,因为它不关注单个应用系统的内部实现。

    还记得应用架构设计的流程吗?

    首先,应用架构需要从业务架构蓝图中的业务功能及流程圈定具体的业务需求。我这里稍微展开一下。作为应用架构,我觉得从业务本质出发是很有必要的。首先什么是架构?架构的目的就是解决利益相关者的关注点,以下左图取自于《软件系统架构:使用视点和视角与利益相关者合作》,我尝试使用脑图(即右图)进行分解。每个系统实际上是为了满足利益相关方的一系列需求,具体方式是通过系统架构里面的一系列元素,诸如那些-ability、业务功能点及其相互关系所呈现的一堆架构视野(viewpoint)去分别对应的满足利益相关方的每一个关注点。再回到应用架构这个范畴,业务蓝图实际上就是企业的整体战略,也即整体需求,因此从业务蓝图中圈定范围也是必然的,因为从这里开始才能保证所有干系人的需求得到满足。

     

    接着,应用架构需要根据业务功能及流程进行分析所需要提供什么系统;实际上,这里告诉我们的是需要什么系统承载什么功能,但是尺寸在系统级别而非服务级别。

    然后,根据某种方法论把所有的功能进行归类并分配指定到相应系统中;这里要表达的是结合业务的领域驱动设计(DDD)的方法论,针对同一类型的业务要进行归并处理,做成服务层高内聚低耦合。

    最后,针对每个系统制定系统间的交互方式,划分服务粒度等。这里的就是系统架构的范畴,因为它涉及到系统服务间的粒度划分及对应的技术实现细节。

    从上面可以 ,这俨然就是指导业务中台建设的方法论。为什么我会这样说?可以拿所负责的某些系统作为例子,以前做系统的时候我们采取的是急用先行的策略先开发了一堆系统,但是在发展到一定规模的时候,业务觉得要精细化和规范化管理了,因此我们要准备上统一客户管理系统了;整个公司各个系统的功能有一定程度的重叠和交叉,内部协调成了大问题。整个过程我们就像在打局部信息化战争一样,头痛医头脚痛医脚,需要解决什么样的问题,就上什么样的系统,最终就形成了所谓烟囱式的系统架构,这又导致整个架构重复造轮子,跨系统管理也给运营人员造成了不必要的时间精力浪费。

    我的理解是中台严格意义上就是一种业务战略,大家再细品一下是不是这样的道理。首先,企业架构是企业对市场信息认知的体现,那中台就是企业在不断发展的过程中,随着对市场信息的认知不断加深,为了保证其企业在不断变化的过程中具备这种快速响应的能力,唯有通过在其纷繁各异的业务流程中寻找共同点并作为最佳实践的方式固化在所谓的业务系统中,这便是中台的价值所在,也是中台存在的第一性原理。

     

    五、后话

    经过这一天的企业架构培训,确实掀开了我对企业架构的一个初步认识,但是如何进一步结合现在的业务和系统现状,然后通过TOGAF方法论进一步细化业务架构(BA)和应用架构(AA)确实一个比较高阶的工作,暂时确实只是略懂皮毛,后面可能更多的需要在日常工作中进行实践,同步看看行业的一些最佳实践。

    展开全文
  • 关于IT企业组织架构的一些思考

    千次阅读 2019-01-08 05:30:49
    先谈谈一般公司的组织架构把,传统的软件企业组织架构是水平的,涉及和跨越多个部门,例如下面的一个企业组织架构(虚拟出来的,说明而已)   首先层级非常多,从CEO到最终的开发人员,中间估计有6级别,...
  • 企业的五种组织架构模式

    千次阅读 2015-03-31 21:18:03
    关于企业组织架构模式,德鲁克提出了五种组织架构的模式。虽然后来有很多人把他提出来的组织架构模式称为什么网状模式,甚至叫什么燕子形模式,但是这些模式基本上都分属于德鲁克提出的五种组织架构模式中的某一种...
  • 能够使企业动态地规划组织结构改变,能够形象化地展示、传递和管理企业组织结构信息,并且支持各种图形化操作,支持方便灵活的拖拽,支持历史组织架构版本的保存。 本文档主要对组织架构图工具特性和应用价值简要...
  • 中小型研发团队架构实践:电商如何做企业总体架构示例分享
  • 基于echart.js实现的人员架构图,企业内部组织结构图展示图
  • 企业组织架构对技术架构的影响

    千次阅读 2017-06-19 21:19:17
    技术人员往往有闷头挖煤的倾向(闷头技术架构),而不了解挖煤的上下文背景(企业的业务背景和组织架构),殊不知企业组织架构和业务背景和技术架构之间有隐含的映射关系,这种关系有时候直接决定了技术架构转型...
  • 最近在做企业微信服务商的需求开发,我们是在一个企业微信第三方应用给其他企业使用, 其中有一个需求是要同步公司企业组织架构企业微信的通讯录上。 目前遇到的问题是: 1、企业微信服务商现在已经不允许...
  • 企业架构的重要性

    千次阅读 2019-08-07 11:04:12
    很多时候,在一些IT咨询/治理或SOA集成项目中,相信大家一定听过企业架构,这是一个出现频率较高且都会在项目中重点强调的词语。事实上,若想真正的发挥信息化...”对于该类疑问,我的回答是:企业架构是一定要的...
  • 资源名称:架构即未来 现代企业可扩展的Web架构流程和组织 原书第2版内容简介:任何一个持续成长的公司最终都需要解决系统、组织和流程的扩展性问题。本书汇聚了作者从eBay、VISA、Salesforce.com到Apple超过30年的...
  • 今天花了一个上午去书店看了一本关于企业架构方面的书籍:《企业精简架构》(3星),这本书适合于架构师和CIO阅读,主要论述如何精简企业架构,道理简单,起来很难。全书分为两部分:第一部分,作者通过一些直观的...
  • 软件企业测试团队的组织架构

    千次阅读 2016-04-26 14:38:53
    因为各个组织的情况和发展思路不同,很难简单说哪一种好或者不好,从测试团队的角度来看各有利弊。集中在一个大的测试部门的主要好处是: 1、因为资源的整合,可以减少各个团队的重复建设,集中来一些平台建设,...
  • 软件项目组织架构安排

    万次阅读 2019-04-06 19:45:58
    这个主题涉及到三个方面,项目计划管理、组织管理和技术管理范畴。 项目计划管理是项目管理中的一个大... 从软件企业整体的组织架构来说,不外乎包括项目型、职能型、矩阵型几类。当然其中有偏项目型的组织结构,...
  • 李彦宏表示,这次组织架构的升级,有利于加速 TG 中台战略实施过程中积累的底层技术能力向云输入,更有利于加速 AIG 的 AI 能力的商业化,让技术更直接更有效率地在云平台上支撑业务。 可见,在人工智能正在走向应用...
  • 15次架构演进实战手册,让你清晰明白了解大型互联网平台是如何进行架构演进过程的!本期内容主要是以电商为实例来的体系!
  • 火龙果软件工程技术中心在两三年前就关注过EA了,只是没有怎么深入的去了解它,经过这几年的工作和思考,发现架构越来越重要,做企业级的IT系统企业架构也越来越重要。TOGAF或非TOGAF?在组织中不用强迫实行企业架构...
  • 也因此,微服务架构成为企业数字化转型升级的必备武器。 需要注意的是, 康威老爷子早已告诫我们: 系统设计等同于组织形式, 即团队要适应业务系统的架构。 由于传统单体应用和微服务架构差异巨大, 传...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 113,532
精华内容 45,412
关键字:

企业组织架构怎么做