微服务和组织该如何搭配?

  在设计系统技术架构的时候,我会思考,这个技术架构能给企业或者市场带来什么价值,技术架构能像其他产品那样卖钱吗?我也经常会听到类似于“这个架构很牛X”,“这个架构很先进”以及“这个架构能抗万级并发”这样的评价,再回到市场角度想想,这个“牛X”或者“先进”有哪个老板真正愿意买单?“能顶住千万级并发”是不是每个企业的核心需求?多年的工作经验告诉我:绝地有,且不在少数

  多年下来吧,找上门的客户很多都是十万火急地想找一个牛X、先进和稳定的技术架构,有一些并不是什么互联网公司或科技企业,但他们的信息化建设问题已经严重影响了企业的核心业务,甚至这个问题已经上升到了他们企业最顶层的紧急事务。原因并不是他们没有技术团队做支撑,而是因为他们使用了所谓“牛X且先进”的技术架构,而被迫让“技术架构”成为企业当前的“核心需求”。

   “我听说微服务架构很先进,你们公司正好有这样一个研发框架,而且还有千万级用户和上万级并发量支撑的案例验证过了,能否卖给我们”。我很能理解他们的困境,但曹老板说过:“做人要真诚和善良”。所以,我很诚恳地表达了简单地买套代码是没有什么效果的,甚至还有可能变本加厉,最终用不好,砸坏的可是我自己的招牌。

  这些领导或企业管理者对微服务架构的渴望无非就是对提高企业竞争力利益最大化的渴望。处于这样一个信息化时代,就算企业没有“互联网”或“科技”字眼,但他们始终都离不开信息化建设这个基石,因为信息数据化的优势太大了。所以,从市场角度看,一个好的技术架构真正能给企业带来的核心价值是“增效降本”。再结合前面的问题,“牛X”和“先进”是不是等同于“增效降本”?这个问题留给大家去践行思考了。有的企业声称自己使用了大型互联网公司级别的技术架构,但到头来成本却越来越高。据我对他们的了解,原因很多,但最为突出和迫切的,还是他们缺少一个与之匹配的技术组织架构,这是他们没能真正“牛X”起来的直接原因。

  作为一个“增效将本”的企业内部组织,首先,最基本要确保的是给企业所带来的价值必须小于自身组织的投入成本,这也应该是技术员工最基本的价值观念。但能真正遇到具备这种价值观的技术人员不多,他们更多地是埋头对“牛X技术”的追求,忘记了技术的本质。其实,这个现象跟目前的行业状态有关,那么什么“青春饭”、“35岁危机论”等迫使他们必须在短时间内赚取足够的金钱,而IT行业最能赚钱的手段就是跳槽,而跳槽最容易涨身价的就是保持自己拥有“牛X”的技术。所以他们心里不会想太多如何帮助自己当前所在的这个企业能赚多少钱,更多是借助在这个企业的短暂时光练练自己牛X的技术技能。所以很多应聘者都会问“你们公司用的是什么技术”而不是问“你们是如何通过技术手段去帮助公司增效降本”。以上所描述的技术人员不限于技术高管,所以企业很难有一个稳健且可持续发展的技术架构以及组织规范。

  仗着互联网趋势,技术组织很多时候都自以为是“大爷”级别的,但技术组织本身是一种成本投资,技术组织存在价值的公式很简单:技术价值=为企业整体利益的增效-自身技术组织的成本。技术能增效,主要还是根据企业价值链结合业务架构和技术架构的搭配去提高企业自身的市场竞争力,所以现在很多企业会有业务架构师一说。而技术组织的成本控制不在于自己使用了多牛X的技术,还是那句老话:要发展,先自知,没有最好,只有最合适,做人做企业亦是如此。

  以自己所在公司为例,从2011年5月我还没正式毕业就进入公司接手技术管理以来,一切都是从零开始。随着移动互联网的发展趋势,迫使我们必须进行架构改造,从2014年开始我们进入“服务化V1.0”模式,也就是我们现在微服务架构的前身。这些技术发展史都能从我以前的文字中找到,但对于我们自身组织的描述得不多,但技术架构本身不会独立存在,跟组织架构还是有很密切相关,所以,我觉得还是有必要介绍一下。这仅仅只是一个经验分享,并不代表我们就是成功的榜样或标准。

● 技术员工

  从上图的技术与组织架构对比可以知道,组织技术员工好比技术的物理服务器,都是架构的基建,一个员工的品质好比服务器的质量,并不是说有了上层对基础资源的统一管理,淡化了每一个独立个体的重要性就不代表不需要好的员工或服务器了。当然,好的东西都贵,但性价比高的还是值得不断去追求的。

● 技术部门

  技术部门好比LaaS,是对所有独立个体的统一管理和协调,最对资源效能最大化的手段。部门有企业级别的实践方针和指南,结合企业的目标定制了一套最适合自己的组织与技术管理办法,这些规章制度并非一成不变,是站在企业的角度跟随市场不断去完善和修正的。所以,组织并非一成不变,既然技术与架构是相互的,那么技术架构的稳健、灵活、易扩展等特性应该同样要应用于组织架构。

● 研发小组

  研发小组跟PaaS一样,是技术组织效能的“加速器”,增加了上层的业务或应用的灵活性和增加快速适应市场的能力。我们研发小组的贡献主要集中在两个层面。一方面是不断完善和提高自己组织的内部效能,主要体现在我们当前自主研发的“统一工作台”,这个统一工作台主要是结合我们各种职能流程和软件工具(如SVN,Docker等)打造的一个统一规范工作流平台。另一方面是不断通过业务驱动积累我们研发的业务产品(如我们“微服务应用中台”的服务沉淀),为企业增效,提高市场竞争力。

● 职能小组

  我们部门的人员架构是一个“矩阵型”架构,横向为技术职能小组,纵向为以项目经理带领的项目小组(下面会介绍)。按职能维度,整个部门划分为项目经理组、需求组、UIUE组、前端组、后端组,测试组、实施维护组等职能小组。有点类似于微服务架构里面的服务一样,分工合作,自己独立部署独立负责。职能小组内部会根据规模而进一步细分小小组。这些小小组会是企业发展而又有可能归类为事业线小小组或业务领域小小组。组员到组长一层层向上按自己领域范围的技术规范和项目质量负责。

● 项目小组

  项目小组是我们“矩阵型”架构的纵向划分维度,由各职能小组成员组成,由项目经理以业务为统筹和主导。在纵向维度,职能会存在一个“项目职能负责人”,确保自己的职能价值在项目中最大化体现。哪怕项目再小,职能只需分配一个人或半个人,而那个人就默认充当了这个“项目职能负责人”的角色。就像微服务架构一样,有了我们“微服务应用中台”的支撑,顶层的应用场景可以更加灵活、高效、快速地实现。我们的项目小组在职能小组明确分工的基础上,同样也能灵活、高效、快速组件出打造顶层应用场景的项目团队。

  看到这里,可能有人会有疑问,我们只是一个小企业,那有这么多人。其实问题这个问题的人,等同于问“微服务是否只能适用于大型系统”的问题一样。我在《小型系统如何“微服务”开发》中也做过介绍,微服务是一种方法,适用于任何应用和项目,跟项目规模没有关系,哪怕我目前只有一台物理服务器,或者我只有一个技术人员,都完全能按照我们以上的“技术与组织结构”方式去运行和操作。要明确一点的是:方法跟规模没有关系。当今在技术圈比较流行的一个词叫做“DEVOPS”,其实就是一种“降本”手段。我们的组织架构是跟人数没有关系的,更多是我们的管理办法,因为做事情需要顶层方法去引导我们更好地执行。就算我们技术组织只有我一个人,也不妨碍我属于研发人员,同时又兼容前端、后端、测试、实施、维护的职能,以及作为项目经理主导自己去开发项目。

  方法还只是属于“虚幻”层面的东西,具体还是要考自己的实践去验证和发展,就算我说得多牛X,如果不亲自去体会、感受和总结,我们持续实践了千万级用户数应用平台近10年的时间,以及我们所开发的应用系统足足比别人降低数倍乃至数十倍的时间和金钱成本,都不关你们的事,这是我们每个同事通过汗水和努力所换来的成效。但我们的不足还很多,没事,时间还很漫长,一步步主动去学习、改变和完善就是了。

原文地址:https://www.cnblogs.com/wcd144140/p/11107354.html

时间: 2024-10-30 14:14:40

微服务和组织该如何搭配?的相关文章

微服务的误读与误解[转]

微服务确实很受欢迎,但是对于微服务的误解也是事实,本文对这些误解一一来介绍下: 一.微服务不够“微”? 尽管微服务定义的很明确,但是开发者社区对它的解释却颇有争议,主要的一些问题如下: 1.它是否是单体架构的代表? 2.它是否是单体服务的代表? 3.它是否是逻辑功能的组合? 下面让我们以银行应用为例来讨论一下:三层架构解决了技术组件之间的紧耦合问题,允许它们各自独立改变而不相互依赖.例如: Web端的改变不会影响到后端服务. 但是三层架构没有把基于组件分组的功能和特性考虑进去,为此我想出了一个“

微服务的误读与误解

微服务确实很受欢迎,但是对于微服务的误解也是事实,本文对这些误解一一来介绍下: 一.微服务不够“微”? 尽管微服务定义的很明确,但是开发者社区对它的解释却颇有争议,主要的一些问题如下: 1.它是否是单体架构的代表? 2.它是否是单体服务的代表? 3.它是否是逻辑功能的组合? 下面让我们以银行应用为例来讨论一下:三层架构解决了技术组件之间的紧耦合问题,允许它们各自独立改变而不相互依赖.例如: Web端的改变不会影响到后端服务. 但是三层架构没有把基于组件分组的功能和特性考虑进去,为此我想出了一个“

Microservice 微服务的理论模型和现实路径

两年前接触到了微服务的概念,面对日益膨胀的系统感觉豁然开朗.之后的两年逐步把系统按微服务的架构理念进行了重构,并将业务迁移到了新架构之上.感觉现在差不多是时候写一篇关于微服务的总结文章了. 定义 在 Martin Fowler & James Lewis 的文章(参考[1])里给出了微服务架构的一个定义: 微服务架构即是采用一组小服务来构建应用的方法. 每个服务运行在独立的进程中,不同服务通过一些轻量级交互机制来通信, 例如 RPC.HTTP 等. 服务围绕业务能力来构建,并依赖自动部署机制来独

使用Spring Boot构建微服务(文末福利)

本文主要内容 学习微服务的关键特征 了解微服务是如何适应云架构的 将业务领域分解成一组微服务 使用Spring Boot实现简单的微服务 掌握基于微服务架构构建应用程序的视角 学习什么时候不应该使用微服务 软件开发的历史充斥着大型开发项目崩溃的故事,这些项目可能投资了数百万美元.集中了行业里众多的顶尖人才.消耗了开发人员成千上万的工时,但从未给客户交付任何有价值的东西,最终由于其复杂性和负担而轰然倒塌. 这些庞大的项目倾向于遵循大型传统的瀑布开发方法,坚持在项目开始时界定应用的所有需求和设计.这

Spring Cloud构建微服务架构 分布式配置中心(加密解密)

在微服务架构中,我们通常都会采用DevOps的组织方式来降低因团队间沟通造成的巨大成本,以加速微服务应用的交付能力.这就使得原本由运维团队控制的线上信息将交由微服务所属组织的成员自行维护,其中将会包括大量的敏感信息,比如:数据库的账户与密码等.很显然,如果我们直接将敏感信息以明文的方式存储于微服务应用的配置文件中是非常危险的.针对这个问题,Spring Cloud Config提供了对属性进行加密解密的功能,以保护配置文件中的信息安全.比如下面的例子: spring.datasource.use

【总结】AWS 云计算环境中的Microservices(微服务)架构

下载地址:下载完整MP4文件 1.邱洋总结 微服务不是石头缝里面蹦出来的,是基于类似SOA.Blackboard.C/S等应用架构基础上,并融合敏捷开发.DevOps等理念的基础上发展而来 微服务相比传统应用优点明显(快速部署.去中心.良好的隔离性等),缺点也不少(更复杂.通信损耗.测试成本高) 微服务不仅仅是一种新型的应用设计方法,使用这种架构的企业的组织架构可能也需要作出适当调整 AWS针对微服务设计了ECS(基于EC2的容器服务).Lambda(基于事件驱动的计算平台,开发人员只要编写ja

微服务是什么?

解析微服务架构系列文章将分几篇描述微服务的定义.特点.应用场景.企业集成架构的演进以及微服务转型思路和技术决策考虑等内容,并以IBM技术为例介绍如何实现微服务架构转型. 为什么需要微服务架构 "微服务"架构是近期软件应用领域非常热门的概念.让我们先来看看传统IT架构面临的一些问题: 使用传统的整体式架构(Monolithic Architecture)应用开发系统,如CRM.ERP等大型应用,随着新需求的不断增加,企业更新和修复大型整体式应用变得越来越困难: 随着移动互联网的发展,企业

【干货】微服务技术栈选型手册2.0

一.前言 2014年可以认为是微服务1.0的元年,当年有几个标志性事件,一是Martin Fowler在其博客上发表了"Microservices"一文,正式提出微服务架构风格:二是Netflix微服务架构经过多年大规模生产验证,最终抽象落地形成一整套开源的微服务基础组件,统称NetflixOSS,Netflix的成功经验开始被业界认可并推崇:三是Pivotal将NetflixOSS开源微服务组件集成到其Spring体系,推出Spring Cloud微服务开发技术栈. 一晃三四年过去,

Istio旨在成为容器化微服务的网格管道

在精彩的软件容器世界中,当新项目涌现并解决你认为早已解决的问题时,这感觉就像地面在你的脚下不断地移动.在许多情况下,这些问题很久以前被解决,但现在的云原生架构正在推动着更大规模的应用程序部署,这就需要新的工具和方法. 微服务就是一个很好地例子.在此模型下,典型的应用程序或服务将被分解成可以独立部署的功能模块,这些功能模块能彼此分开扩展和维护,并且链接在一起时可以提供应用或服务的全部功能.当使用容器来开发微服务时,后一块可能是棘手的.当它们可能散布在服务器节点集群中时,并且在它们的实例不断弹出时,