给飞驰的法拉利换引擎 - 谈边做业务边做架构重构(2)

【合纵连横】

【合纵】

架构重构是大动作,持续时间比较长,而且会占用一定的研发资源,包括开发和测试,因此不可避免的会影响业务功能的开发。因此,要想真正推动一个架构重构项目启动,需要花费大量的精力进行游说和沟通。注意这里我不是指要谈办公室政治,而是指要和利益相关方沟通好,让大家对于重构能够达成一致共识,避免重构过程中不必要的反复和争执。

 

道理很简单,但如何做才是关键!

一般的技术同学谈到架构重构的时候,就会搬出一大堆技术术语:可扩展性、可靠性、性能、耦合、代码很乱。。。。。。但以我的实际经验来看,如果和非技术同学这样沟通,效果如同鸡同鸭讲,没有技术背景的同学很难理解,甚至有可能担心我们是在忽悠TA。例如:

技术同学说:我们系统现在的可扩展性太差了,改都改不动!

产品同学想:咦,可扩展性,和扩胸运动有关么?。。。。。扩展什么呢,怎么会改不动呢,不就是找个地方写代码嘛。。。。。。

技术同学说:我们的可靠性太差,现在才3个9,业界都是4个9!

项目经理想:啥是3个9,三九感冒灵?。。。。。。4个9和3个9不就是差个9嘛,和可靠有什么关系。。。。。。

技术同学说:我们系统设计不合理,A业务和B业务耦合!

运营同学想:咦,耦合,莲藕还是藕断丝连?。。。。。。A业务和B业务本来就是互相依赖的呀。。。。。。耦合为什么不合理呢?。。。。。

以上的样例并无嘲笑产品运营和项目同学不懂技术的意思,而是说明有的技术术语并不是很好理解,在跨领域沟通的时候,很难达成一致共识。

 

除此以外,在沟通时还经常遇到的一个问题是凭感觉而不是凭数据说话。比如说:技术同学说“系统耦合导致我们的开发效率很低”,但是没有数据,也没有样例,单纯这样说,其他同学很难有直观的印象。

 

所以在沟通协调的时候,将技术语言转换为通俗语言,以事实说话,以数据说话,是沟通的关键!

 

以M系统为例,我们把“可扩展性”转换为“版本开发速度很慢,每次设计都要考虑是否对门户有影响,是否要考虑对其它业务有影响”,然后我们还收集了1个月里面的版本情况,发现有几个版本设计阶段讨论1周甚至2周时间,但开发只有2天时间;而且一个月才做了4个版本,最极端的一个版本,讨论2周,开发2天,然后等了1个月才和门户系统一起上线,项目经理和产品经理一听都被吓到了。

 

以S系统为例,我们并没有直接说可靠性是几个9,而是整理线上故障的次数、每次影响的时长,影响的用户,客服的反馈意见等。。。。。。然后再拿其它系统的数据一对比,无论是产品还是项目还是运营,明显就看出系统的可靠性有问题了。

 

当然,如果以上技巧还不奏效,或者遇到极端情况,那就要考虑一些更加有效的手段了!比如说我们遇到一个产品人员,他认为技术优化和架构重构是研发的事情,他不关注,安排开发资源的时候也不考虑重构和优化的投入,要研发自己解决!没办法,只能上升到上级领导层面协调,甚至我们都放出狠话“如果你不同意安排资源进行优化,下次出故障我们就说产品不给人力进行优化和重构”。

 

【连横】

除了以上讨论的和上下游沟通协调外,有的重构还需要和其它相关或者配合的系统的沟通协调。由于大家都是做技术的,有比较多的共同语言,所以这部分的沟通协调其实相对来说要容易一些,但也不是说想推动就能推动的,主要的阻力来自“这对我有什么好处”和“这部分我这边现在不急”。

 

对于“这对我有什么好处”这个问题,有的人会简单理解为这是自私的表现,认为对方不顾大局,于是沟通的时候将问题人为拔高,例如“你应该站在部门的角度来考虑这个问题”、“这对公司整体利益有帮助”。。。。。。等等。这种沟通效果其实很差,首先是这种拔高一般都比较虚,没法明确,不同的人理解不一样,无法达成共识;其次是如果对公司和部门有利,但对某个小组没用甚至不利,那么可能是因为目前的方案不够好,还可以考虑另外的方案。

 

那如何才能有效的推动呢?我们的策略是“换位思考、合作双赢、关注长期”。简单来说就是站在对方的角度思考,重构对他有什么好处,能够帮他解决什么问题,带来什么收益。

 

以M系统为例,当时有另外一个C系统和M系统通过数据库直连共用数据库,我们的重构方案是要去掉两个系统同时在底层操作数据库,改为C系统通过调用M系统接口来写入数据库。这个方案对C系统来说,很明显的一点就是C系统短期的改动比较大,要将10几个读写数据库的地方改为接口调用,刚开始C系统也是觉得重构对他们没有什么作用,后来我们经过分析和沟通,了解到C系统其实也深受目前这种架构之苦,主要体现在“数据经常出错要排查”(因为C系统和M系统都在写同一个数据库,逻辑很难保证完全一致),“要跟着M系统同步开发”(因为M系统增加表或者字段,C系统要从数据库自己读取出来,还要理解逻辑)、“C系统要连两个数据库,出问题不好查”(因为C系统自己还有数据库)。。。。。。这些问题其实在M系统重构后都可以解决,虽然短期内C系统有一定的开发工作量,但从中长期来看,C系统肯定可以省很多事情,例如:数据问题排查主要是M系统的事情了,通过M系统的接口获取数据,无需关注数据相关的业务逻辑等等。通过这种方式沟通协调,C系统很乐意跟我们一起做重构,而且事实也证明重构后对C系统和M系统都有很大好处。

 

当然如果真的出现了对公司或者部门有利,对某个小组不利的情况,那可能需要协调更高层

级的管理者才能够推动,平级推动是比较难的。

 

对于“这部分我们现在不急”这个问题,有的人可能会认为这是在找借口问题,我也不排除这种可能性。但就算真的是找借口,那也是因为大家没有达成一致意见,可能对方不好意思直接拒绝。所以这种情况就可以参考上面“这对我有什么好处”这个问题的处理方法来处理。

 

如果对方真的是因为有其它更重要的业务,此时勉为其难也不好,还是那句话:“换位思考”!因为大部分重构的系统并不是到了火烧眉毛非常紧急的时候才开始启动的,而是有一定前瞻性的规划,如果对方真的有其它更加重要的事情,采取等待的策略也未尝不可,但要明确正式启动的时间,例如3个月后开始、6月份开始,千万不能说“以后”、“等不忙的时候”这种无法明确的时间点。

 

除了计划上灵活一点,方案上也可以灵活一点:我们可以先不做这个系统相关的重构,先把其它需要重构的做完。因为大部分需要重构的系统,需要做的事情很多,分阶段处理,在风险规避、计划安排等方面更加灵活可控。

时间: 2024-10-03 06:07:07

给飞驰的法拉利换引擎 - 谈边做业务边做架构重构(2)的相关文章

好游戏要用好引擎 谈主流网游引擎之面面观

第1页好游戏要用好引擎 谈主流网游引擎之面面观 好游戏要用好引擎 谈主流网游引擎之面面观

浅谈12306核心模型设计思路和架构设计

原文:浅谈12306核心模型设计思路和架构设计 春节期间,无意中看到一篇文章,文章中讲到12306的业务复杂度远远比淘宝天猫这种电商网站要复杂.后来自己想想,也确实如此.所以,很想挑战一下12306这个系统的核心领域模型的设计.一般的电商网站,购买都是基于商品的概念,每个商品有一定量的库存,用户的购买行为是针对商品的.当用户发起购买行为时,系统只需要生成订单并对用户要购买的商品减库存即可.但是,12306就不是那么简单了,具体复杂在哪里,我下面会进一步分析.   另外一个让我写这篇文章的原因,是

浅谈如何利用自身优势做强地方门户网站

我是QQ糖-1,做网站3年有余,做seo不到6个月,自我感觉自学能力还可以.在不算遥远的岁月里,拼搏在互联网大海里,沉浮不定,辛酸愈加.把自己的心里话说给大家,亲爱的同志们,革命尚未成功,我们仍需努力.本人最早满怀信心地代理过一家网站分站,但2年来的运营是我感受到了受制于人的那种无奈和煎熬.另辟新境开张地方门户网,自己给自己掀起了革命的新高潮.这期间有苦也有甜,也基本奠定了我人生事业的基础,在此感谢A5站长网的理解与支持.我会坚定地做A5站长网的粉丝的.以下浅谈如何利用自身优势做强地方门户网,这

三人谈:哪种IT组织架构更合适?

组织架构是管理学中最基本的概念之一,也是许多年来改变最多最快的领域之一.如果把经营一个组织比喻成盖房子,那么组织架构就是房子的框架,只有具备稳固的框架才能添砖加瓦,建成坚固的房子.如果组织架构不合理,就可能导致房子不牢固,甚至有倒塌的危险. 当面临重新对企业内部的IT团队组织架构进行思考时,需要设立多少个部门.每个部门的岗位如何设置.每个具体岗位的http://www.aliyun.com/zixun/aggregation/7131.html">工作职责是什么.具体需要多少人员等问题,会

浅谈SaaS在线CRM云平台架构

没有标准并不等同于SaaS不能被用户接受.我们可以从某些常见的应用中以点带面,看一看SaaS服务应该具有什么样的标准.我们今天以企业用户常用的CRM系统,来看一看标准的SaaS CRM应该是一个什么样子. 实际上,很多用户对于CRM并不陌生,早在2000年的时候,有一些企业就已经开始尝试CRM系统.在很多人眼中,CRM就是一套C/S或者B/S的应用系统.而当CRM进入了SaaS,他在架构上会是一个什么样子呢?采用企业级的多层次.多应用的系统结构的SaaS在线CRM平台.平台架构从大的层次上来分主

动视否认《使命召唤》新作换引擎称风险太大

(编译/苍天小白)动视的老对头EA不久之前放出了第一支<战地3>的游戏演示视频,仅从画面来说,这款游戏的确对得起EA之前说过的要把<使命召唤>赶下FPS王座的豪言壮语.其配备的"寒霜2"尖端引起将游戏中的动画,破坏效果以及光影变化等等都提到了一个全新的高度.相比于EA的大手笔,动视这边的表现就很差强人意了.尽管一直在更新和修改,但是<使命召唤>系列用的还是当年IW工作室用的那个引擎.仔细算算到了<现代战争2>的时候,这个引擎的版本已经是4

广告联盟浅谈:网络营销怎么做最容易

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 谈到营销,大部分人都会望而却步,觉得那是一件非常难做的差事,而我今天所要告诉大家的就是营销其实并不难.我们首先要问,为什么会有那么多人觉得营销会很难呢?事实上,营销之难,难就难在要说服别人购买你的产品,被拒绝次数多了,你就会觉得难,而这个难并不意味着这份工作难,因为世上没有容易的事,一步一脚印告诉我们任何成功都是要靠努力得到,去做很重要,跌倒

恰维网络谈新站上线必做的五条规定

新的网站想在上线以后得到好的排名,今天恰维网络给大家分析了几条新站上线的几条规定,看看自己的网站是否做好下面的五条规定,希望能给大家带来一定的帮助. 第一,网站结构符合蜘蛛的抓取习性. 网站结构主要分为树形结构和扁平结构.树形结构主要是由上到下,上面是主要栏目,下面是网站的新闻模块蜘蛛依照广度优先的抓取原则,自上而下依次展开,会大大增加我们网站内容的曝光度,吸引蜘蛛的抓取频率,这个结构一般使用dedecms的童鞋们都是非常熟悉的,这也是很多人作网站选择这个程序的原因.扁平结构型结构表现最明显的就

使用WEBLOGIC PORTAL规则引擎中实现动态业务逻辑

web|动态 简介 业务应用的需求总是随着业务环境的变化趋势而不断地改变.决策很少是一成不变的,并且竞争压力要求业务逻辑的设计和实现具有灵活性,以快速地适应不断变化的需求.通常,对业务逻辑的更改必须由开发人员来完成,然后进行多次彻底的测试,而这将是一个很耗时的过程.在应用程序的修改工作完成后,需要将其重新部署到服务器,需要留出预定的停机时间,以防应用程序对用户不可用. 对于这个问题,更好的解决方案是通过应用程序之外的一组规则来实现某些业务决策.这些规则并没有被编译到应用程序中,而是在运行时读取并