业务服务化给团队、技术带来的影响

如何打造高效的团队(一) - 团队架构 文章是对Team Topologies这本书的一个读书笔记,并且分享了个人对于互联网企业的团队架构建设的看法。 从我个人的感觉,国内的互联网公司开始越来越注重团队的管理。一方面是人口红利的消失,互联网从跑马圈地到精耕细作,需要更加精细化的管理。另一方面是软件开发本身的属性和人力成本的增加,需要更高效的赋能优秀人才的潜力。 阅读详情

业务服务化开发模式,有别于传统的开发,其对技术、团队协作有一定的影响。这种影响是多面的,有不利的,更有有利的一面。随着现代化应用系统规模的不断扩大,传统开发模式面临挑战,为此,通过“服务化”开发模式,从“团队协同”和“技术选型”两个层面对研发体系进行解耦。

我在这里简要说明“服务化”开发给技术选型、团队协同带来的有利影响:

技术选型

服务化要求业务以“服务”的方式对外提供,而“服务”本身不仅在功能方面做出了约定,更在“协议”层做出了约定。服务要站在“业务功能”的角度对外提供一致的服务,业务功能主要靠系统设计者根据具体的业务需求对服务进行有效、合理的规划和切分;服务的一致性则由“协议”来保证,即:所有的服务必须遵循一定的业务规范和协议标准提供服务。如:在本团队中,采用基于阿里巴巴dubbo的服务治理体系作为服务的发布和管理平台,基于该平台的所有服务必须遵循Java RPC和dubbo通信协议。如果服务要实现不同终端的调用,如:手机端、微信端直接访问服务,甚至是其他异构系统的访问,服务还必须具备支持多种通信协议的能力。
基于统一的协议和业务接口,服务本身的实现方式就可以不受技术的约束和团队的约束,即:团队可以根据实际的需要,选择最有力的工具来构建服务,只需要服务遵循统一的协议和规范,就能够实现服务的集成。由于“服务化”,团队在技术选型上就具有了更好的弹性,能够最大化地发挥自己的能力水平和技术经验,而不是受限于“管理”的需要降低“生产力”。

团队协同

服务化提供技术弹性的同时,也为团队协同带来了更多的操控空间。原来,一个项目多个团队之间需要在同一个“框架”下工作,这就要求通过项目前期、项目中期乃至项目后期的技术管理工作和项目管理工作抹平团队之间的差异,要求所有人在“无差异”的环境下进行协同。此种愿景的实现是很难的,现实中想要所有人都变成一样的人不具有可操作性(特别是在规模较大的组织中,这种理想化的管理理念往往造成巨大的资源消耗和成本浪费)。因此,从实操层面考虑团队协同,就必须建立一套具有“弹性”的协作机制,来整合不同团队的“生产力”,以便最终集成不同团队的“产出成果”。这里的产出成果就是各个团队构建的系统的不同功能,要求以“服务”的形式提供这些功能,根据上面的阐述,基于统一的协议和业务接口,可以方便地集成服务,即:实现了对不同团队工作成果的集成。服务可以集成,本质上就意味着服务可以“复用”。而高度复用是软件研发所追求的效率目标之一。由于协作的目标落在了“最终的集成”而不是过程的整合,也就给各个团队带来了更多的工作空间,团队可以在“最终目标”的统一引导下,在“统一协议和接口规范”的框架下,因地制宜地开展工作,实现团队自身的“高内聚”和团队之间的“低耦合”!

服务化的现状

虽然各团队都开始采用dubbo服务治理框架,但在实际研发过程中,存在“服务落地”的差异,导致最终的服务仍旧不能很好地在dubbo中实现集成,主要体现在一下几个方面:
1. 业务服务的规划和切分不够合理。由于研发团队往往关注的是技术实现,忽略了系统的“业务性”,在规划服务的时候没有充分站在业务角度考虑。而在服务切分的时候,又受到“数据库结构”的影响,服务切分太过技术化,服务的用例不够明确、粒度不够精准。如:很多时候,团队把某种业务简单地切分成对某些数据的增删改查“动作”,导致服务的操作难度增加,把业务逻辑的整合丢给了“用户”。如:企业微贷申请,金融机构要对企业贷款的目的、应用途径、企业现状进行审查,还要根据企业现状的不同对企业信用进行审查,甚至还要审查社会评级。对企业微贷申请业务而言,只需要关注“申请”,而无须关注“申请”之下的逻辑。如果服务粒度切分过细,把一个服务拆分为三个甚至更多个,就导致业务服务内部复杂多变的逻辑暴露给“用户”。而业务内在逻辑的复杂度本就是“计算机和软件”该解决的问题,暴露给用户的应该是简洁明确的业务事务。
2. 由于问题1的存在,团队在协同开发时,就面临服务无法复用的问题。“复用”有以下几种方式:
a. 代码级复用
b. 组件级复用
c. 服务级复用
d. 产品(即:系统)级复用
服务化的核心目标之一就是实现“服务级”复用。但是,由于服务规划和切分存在诸多不合理性,导致服务的内容——业务——与构建技术紧密地捆绑在一起,业务要想集成,技术就必须“完全一致”。技术一致的主要表现是:开发所采用的框架、框架中各组件的版本要完全一致(最起码必须是兼容的),同时也要求团队的开发方式、编码规范也要保持一定程度的一致性。技术一致,基本上就要求各个团队要完全一样,而这就会碰到“抹平团队差异”的问题。因此,不具有可操作性。
另外,团队之间在“复用”的概念上存在差异,服务化是共同的目标,但在落地的过程中却退化为“代码复用”或“组件复用”,如此,就必然考虑“统一技术”,也就引发了“谁向谁统一,谁向谁妥协”的矛盾,而这种矛盾恰恰体现为团队之间的差异。同理,如果想从这个层面解决问题,就必须“统一团队”。研发一体化是很多公司用来实现“统一”的常用手段,但客观结果是“统一”的过程漫长且充满各种矛盾,造成相当的内耗以及资源流失。国内著名企业阿里巴巴,也恰恰是dubbo的创造者,直到今天也未能实现“研发一体化”,而是采用了“弹性机制”有效地整合了组织内所有的研发力量。

“研发一体化”的挑战

1. 在实施“研发一体化”过程中,如何解决“团队差异”的问题?(目前未感觉到有策略来处理这个问题,在多团队管理的过程中,必然要正视这个问题,而这也是“研发管理”的根本所在。处理不好这个问题,就如果中国处理不好“一国两制”的问题一样,其结果可能不仅没有实现“研发一体化”,反而让团队本来各自具备的能力和资源被分解,形成一盘散沙的局面)
2. 在实施“研发一体化”过程中,如何促进团队的发展,是“百花齐放”,还是“灰化成堆”?
3. 在实施“研发一体化”过程中,如何建立组织“核心技术”体系,实现技术横向和纵向的可扩展性?

“弹性机制”的优势

“弹性机制”首先是一套机制,而非一套事无巨细规章制度。该机制的核心是“弹性”。在一个具有“弹性”承诺的空间中,位于不同层次的团队都能找到自己的生存空间,更能找到自己的发展空间。“弹性”承诺团队都可以积极发展,虽然前进的速度有所不同,但允许存在适度的差距。在这样的机制下,传统的KPI也能有适用之地,采取“优胜劣汰”对太过落后的团队进行裁撤,推动优势资源不断向前发展。在整个“弹性”空间中,后面的团队可以参考其他团队的发展轨迹,寻找适合自身的发展路径;而处于前面的团队则需要投入更多的精力和能力,通过不断创新,实现团队的新突破。基于这样的一种模式,整个组织都在向前稳步发展。
其次,“弹性机制”不存在“技术性”硬性要求,这就给各团队提供了主动探索的动力和可能性。作为软件研发团队,技术永远是发展的“第一生产力”。软件研发更是技术的一种直接体现。无论是客户的需求,还是业务发展的需要,都要求技术具备灵活可扩展的能力。这种能力完全需要“人”(即:软件研发人员)来承载。如果在一个封闭的、桎梏的空间中,即便原来拥有很强的技术,这种技术也基本停滞不前了。只有突破这层封闭,才能扩展见识,不断丰富“人”的头脑,建立丰富的知识能力体系。但同时,作为组织的构成要素,为了确保组织的“整体性”,需要通过一种机制来保证这种能力体系在一个有序的模式下进行(当然,有人会要求在一个“可控”的模式下运行,我个人认为“有序”比“可控”更具有实际意义),这样的知识能力才具有可继承性、传播性和延续性。所以,“弹性机制”下,团队、技术可以在有序的环境下实现自主发展,同时“机制”也保证了组织的整体性,让组织的管理者在一个可控的范围内实施团队治理。

布道微服务_01单体到服务化的演进 文章目录小白的困惑 ???What概念单体vs微服务服务化微服务 小白的困惑 ??? 提到微服务等新技术,大部分人的反应先是惊喜,继而无奈。 惊喜的是新技术能带来非常多的遍历,无奈的是团队规模和能力又反过来制约了我们采用新技术。 我梳理下几个通用的困惑 微服务是架构师的事儿,业务开发不用关心? 我们的业务体量有必要上微服务吗? 微服务特别复杂,没个一个相当的研发团队是不是就无法落地? … 首先我们梳理一下一般的软件演进过程哈 首先一个新产品,一开始团队规模也不大,想着快速迭代,采用了单体应用的架构 阅读详情

相关推荐

为什么要做服务化

好处一:调用方简单 好处二:复用性,防止代码拷贝 好处三:专注性,屏蔽底层复杂度 好处四:SQL质量得到保障 好处五:数据库解耦 好处六:提供有限接口,无限性能 好处七:…

业务层,到底需不需要服务化?

很多公司,都实施了微服务架构,底层抽象出很多基础数据服务。基础数据的访问服务化之后,架构如上:(1)站点业务通过RPC接口,调用基础数据服务;(2)基础数据服务通过DAO,从db/cac...

shenjian58的博客 373

业务层是否也需要服务化

当业务越来越复杂,垂直拆分的系统越来越多,基础数据服务越来越多,底层数据获取复杂性成为通用痛点的时候,就应该抽象出通用业务服务,简化数据获取过程,提高数据获取效率,向上游屏蔽底层的复杂性。

谈谈后端业务系统的微服务化改造

为什么80%的码农都做不了架构师?>>> ...

weixin_34246551的博客 1451

PowerBuilder 9 遗留系统逆向实战:3款反编译工具对比与关键DLL破解

本文深入探讨了PowerBuilder 9遗留系统的逆向工程实战,对比分析了PBKiller、PB DeCompiler和Shudepb三款反编译工具的核心功能与适用场景,并详细解析了关键DLL破解技术。通过IDA和OllyDbg等工具的应用,提供了从静态解构到动态追踪的完整逆向方法论,帮助开发者有效维护老旧PB系统。

cucanqi9387的博客 1377

Mplus—验证性因素分析(Confirmatory Factor Analysis, CFA)

介绍一阶和二阶验证性因素分析概况及在Mplus中的操作方法。

m0_54401011的博客 1万+

谈谈对服务化的理解

首先:服务化是什么,为什么要服务化服务化是一种将业务、功能或流程抽象为服务的设计方法,通过服务之间的协作和调用来实现系统的整合和复用。它可以提高系统的可维护性和扩展性,主要用来构建分布式系统。然后:怎样服务化SOA和微服务都是实现了服务化的、比较典型的架构风格。SOA的出现是为了解决功能复用的问题,将一些通用的模块提取出来做成服务。但是SOA对于通用模块的设计没有设计核心原则,因此在对应需求变化等...

xiexiaojing的博客 1329

QUIC 协议域名封堵:核心原理、关键技术与实现路径(C/C++代码实现)

随着 QUIC 协议在互联网领域的广泛应用,其基于 UDP 的传输特性与加密设计,打破了传统 TCP 协议下的域名封堵逻辑,给网络合规管理与安全防护带来新的技术难题。本文将脱离具体代码实现,聚焦 QUIC 协议域名封堵的核心原理、关键技术环节与实际落地路径,从协议特性本质出发,解析如何在遵循 RFC 9000、RFC 9001 等规范的前提下,实现对 QUIC 流量的精准域名封堵。

chen1415886044的博客 1465

超越平台,数据中台的业务化、服务化及开放化!

这是傅一平的第297篇原创作者:傅一平个人微信:fuyipingmnb现在关于数据中台的解释很多了,当然各有道理,但如果我问你数据中台与数据仓库、数据平台、数据湖等有什么...

fuyipingwml1976124的博客 1086

工控安全政策系列导读:国际标准IEC 62443标准系列

IEC 62443由ANSI/ISA提出,被ISO/IEC采纳,所以该标准会以不同的名字出现,包括:ANSI/ISA-99,ISA-99,ISA 62443,ISO/IEC 62443,ISO 62443,IEC 62443。其中IEC 62443-2-1已等同采纳为国标,于2016年10月发布,标准编号为GB/T 33007。 IEC 62443是在国...

weixin_34132768的博客 2620

基于STM32L4XX、HAL库的BQ25792RQMR充电芯片驱动程序设计

BQ25792_OK) { // 读取 PART_Info 寄存器。// 设置充电电压为 4200mV (4.2V)HAL_GPIO_WritePin(hbq->ce_port, hbq->ce_pin, GPIO_PIN_SET);// 最大值计算: (19200 - 1024) / 16 = 1136, 寄存器是11位,最大值2047。// 方法2:通过寄存器位软件控制 (CHARGE_OPTION_0, bit EN_CHG)uint16_t reg_val = (ma + 32) / 64;

zhusl6688的博客 394

服务化,你真的需要吗

服务化,SOA,绝对是一个火热了N年的词,再加上各大互联网公司在讲各自的技术架构演进时,基本都会提到服务化,这个诱惑的很多人都想对系统做服务化的改造,但你真的需要服务化吗? 所谓的服务化,是指根据业务的职责划分为多个系统,系统之间的交互以服务的方式进行,这样的好处看起来就是系统的职责变得非常清晰。 但其实呢,服务化并不仅仅是一个纯粹的技术改造,服务化就意味着业务是由多个系统构成,这个时候首...

勇往直前的专栏 5763

【SpringBoot 3.x 第56节】再见 Feign?原生 HTTP 接口强势上位,这才是微服务调用的正确姿势!

🏆本文收录于《滚雪球学SpringBoot 3》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。    本专栏致力打造最硬核 SpringBoot3 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。 如果想快速定位学习,可以看这篇【SpringBoot3教程导航帖】,你想学习的都被收集在内,快速投入学习!!两不误。    若还想学习更多,可直接前往《滚雪球学SpringBoot(全版本合集)》,涵盖SpringBoot所有版本教学文章

**My Coding Family** 1014

服务化架构演进:从SOA到微服务的技术解析

本文系统介绍了服务化架构及其演进形式SOA和微服务。服务化架构通过模块化拆分提升系统灵活性,SOA采用ESB实现集中式服务治理,而微服务则强调细粒度拆分和去中心化管理。文章通过电商系统案例,分别展示了SOA基于SOAP的服务调用和微服务基于Spring Cloud的实现代码,并对比了三者的核心差异。最后提出架构选型建议:小型项目适合单体架构,中大型系统可考虑SOA或微服务,需权衡复杂度与灵活性。

没事学AI的博客 1299

倍福---EL2262模块飞拍配置

控制器安装了twincat3,用EL2262实现相机飞拍功能。本文档只介绍如何通过EL2262实现飞拍的触发,并不涉及视觉方面的处理 参考文章: https://author.baidu.com/home?from=bjh_article&app_id=1669190598708386 https://mp.weixin.qq.com/s/r4Iq8kOP-o4_M8vCce5M9g 1、 飞拍的应用 在大多数场合,只能当被检测工件和相机都处于静止状态下才能进行拍照,拍照完成后,再移动工件或相机,进

weixin_41883890的博客 3738

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS

wzk4869的博客 3020

服务化架构 IM 系统之架构解读

服务化架构 IM 系统包含哪些服务?为什么需要进行服务拆分?服务拆分的原则是什么?

wang_zong_sheng的专栏 951

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

知乎服务化的实践与思考

服务化是知乎几年来技术演进故事里的一个主角,公司规模从几十人到几百人,在监控、tracing、框架、容器等基础设施从无到有的同时,也扩展出多个后端技术团队。在服务化演进的过程里,我们也进行...

方志朋的博客 265

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

02 | 从单体应用走向服务化

无论是纵向拆分还是横向拆分,都是将单体应用庞杂的功能进行拆分,抽离成单独的服务部署。但并不是说功能拆分的越细越好,过度的拆分反而会让服务数量膨胀变得难以管理,因此找到符合自己业务现状和团队人员技术水平的拆分粒度才是可取的。我建议的标准是按照每个开发人员负责不超过 3 个大的服务为标准,毕竟每个人的精力是有限的,所以在拆分微服务时,可以按照开发人员的总人数来决定。

qq_37756660的博客 1040

【架构】架构服务化

单体分层架构 在 Web 应用程序发展的早期,大部分工程是将所有的服务端功能模块打包到单个巨石型(Monolith)应用中,譬如很多企业的 Java 应用程序打包为 war 包,最终会形成如下的架构: 巨石型应用易于搭建开发环境、易于测试、易于部署;其缺陷也非常明显,无法进行局部改动与部署,编译时间过长,回归测试周期过长,开发效率降低等。集中式架构分为标准的三层:数据访问层、服务层和 Web 层。 在 Web2.0 时代刚刚流行的时候,互联网应用与企业级应用并没有本质的区别,集中式架构分为..

keeper42的博客 4525

滴滴业务中台架构之道:来自技术总监的思考

在创业初期,为了快速拥抱业务,架构的建设在体系化、完善度等方面会有所不足。随着时间的推移,架构在可持续性、稳定性等方面不断进步。 https://myslide.cn/slides/5813 2017 年 12 月 1 日,在 51CTO 主办的 WOTD 2017 全球软件开发技术峰会主会场上,滴滴出行执行总监赖春波做了主题为《如何构建滴滴出行业务中台》的精彩演讲。 从中我们可...

作一个独立连续的思考者 2574

02 _ 从单体应用走向服务化

微服务就是将庞杂臃肿的单体应用拆分成细粒度的服务,独立部署,并交给各个中小团队来负责开发、测试、上线和运维整个生命周期。 那么到底什么时候应该拆分单体应用?拆分单体应用有哪些标准可依呢? 为了解答这两个问题,今天我将通过具体案例来阐述,希望你能够学会单体应用拆分成微服务的正确姿势。 什么时候进行服务化拆分? 从我所经历过的多个项目来看,项目第一阶段的主要目标是快速开发和验证想法,证明产品思路是否可行。这个阶段功能设计一般不会太复杂,开发采取快速迭代的方式,架构也不适合过度设计。所以将所有功能打包部署在一起,

cjh的博客 209

饿了么技术往事(上)

简介:作为一个互联网创业公司,饿了么从初创到壮大,在移动互联网时代,业务量和技术团队的体量经历了10倍增长,这其中的经历,是互联网领域许多创业公司技术团队的一个缩影。在这里把我们成长过程中的体会和教训记录下来。——黄晓路作为一个互联网创业公司,饿了么从初创到壮大,在移动互联网时代,业务量和技术团队的体量经历了10倍增长,这其中的经历,是互联网领域许多创业公司技术团队的一个缩影。在这里把我们成长过程中的体会和教训记录下来。饿了么的技术体系,经历了以下四个阶段:1、核心系统 All in one 的早期架构;2

阿里云开发者 3374

从单体应用走向服务化

从单体应用走向服务化 来自极客时间; 那么到底什么时候应该拆分单体应用?拆分单体应用有哪些标准可依呢? 为了解答这两个问题,今天我将通过具体案例来阐述,希望你能够学会单体应用拆分成微服务的正确姿势。 什么时候进行服务化拆分? 从我所经历过的多个项目来看,项目第一阶段的主要目标是快速开发和验证想法,证明产品思路...

xianrenqiu1234的博客 371

滴滴出行的业务中台实践

经历了 5 年的发展,滴滴出行现已拥有 4.5 亿用户、超过 2100 万车主,业务覆盖 400+ 城市。 在创业初期,为了快速拥抱业务,架构的建设在体系化、完善度等方面会有所不足。随着时间的推移,架构在可持续性、稳定性等方面不断进步。 2017 年 12 月 1 日,在 51CTO 主办的 WOTD 2017 全球软件开发技术峰会主会场上,滴滴出行执行总监赖春波做了主题为《如何构建滴滴出行业务...

weixin_44476888的博客 451
上一篇: 我对程序员工作和职业的规划的简单想法
下一篇: 绿色版MySQL-5.7.12安装说明
Andark
博客等级 码龄19年 4粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值