作为架构师或者架构团队,更须要具备综合的软技能,与技能团队互助,推动架构演进,支持业务发展。

那些年,我在当当做架构的日子

2012年我去当当做架构师,后来卖力架构部,到2016年离开,4年之中做了一些事,积累了一些成果。
在架构领域的总结思考,关于什么是架构什么是架构师架构师该当具备哪些能力的话题,在中国系统架构师大会上分享过,总结后发在公众年夜众号上,名为《架构师的自我教化》。
本日跟大家分享的是发展过程,换一个说法叫什么呢?“那些年,我在当当做架构的日子”!

那些年都做过什么呢?挑主要的列出来:

phpframe架构师技巧引导力成长之路 SQL

2012年——招商平台重构

2013年——多数跨系统项目、订单重构方案

2014年——架构方案、技能栈转型

2015年——运用框架、开源组件

2016年——根本平台

招商平台重构

2012年6月我加入的时候,当当没有完全的系统架构信息。
有多少个别系?技能团队三四百人都在做什么?各个别系是什么关系?出了问题怎么判断定位?都不清楚,只有一张很大略的架构图。
刚去的时候我也一头雾水,形象的比喻就像是一朵云,在表面看是一大坨,不知道里面什么样子。
幸运的是在9月份我参加了招商平台重构。
这个项目希望重构第三方商家入驻卖货的系统——招商平台,与当当自营商品发卖的全体流程打通结合起来。

这张图分成三个阶段来看。
左边是自营电商系统阶段,比如当当最早便是卖书,后来扩充了很多品类,百货、服装、3C、孕婴童等等,还都是自营。
接下来是平台并行阶段,京东也是这样蜕变的,不像淘宝天生便是个平台。
考试测验新业务模式一样平常是这样操作的——主营业务有一套成熟的系统,由于不知道新业务能不能做成,最好的做法是外挂一套系统。
并行阶段系统前台用户端是同等的,后台所有的系统都是分开的,是两套体系。
希望达到的终极目标是一个平台,右边这个图的样子,只有一套系统,像淘宝那样,自营是最大的商家,减少重复的轮子。

但这个目标没达成,我们梳理了全体流程,创造如果做成真正的平台,步子太大、伤筋动骨、本钱高、难以短期见效。
终极方案是把商品、库存、价格、订单等系统尽可能的结合起来,让外挂系统更轻。
这个项目对我帮助非常大,完全的梳理了一遍招商平台,真正的理解了电商系统和业务流程。
毕竟只作为消费者很难想象几百人搭建的电商系统的实际架构。

订单重构方案

实在并不存在订单重构这个项目,订单系统当时是.NET+SQLServer,迟早要重构。
CTO和卖力的总监发起了一个架构方案任务,如果订单系统要重构该当怎么方案,我们就去搞清楚订单系统的情形,有了一些思路,紧张是通过解耦带来灵巧性。
恰好2013年我们做了很多跨系统的项目,个中有一些与订单干系,比如说一品多匆匆销、手机专享价、预售、预约送货、礼品包装、虚拟捆绑、就近巡仓、合约机等等,做的过程之中把对订单的想法落实了下去,使订单系统功能更强大。

右边的入驻外部平台是什么?现在当当在天猫上有旗舰店,当年在1号店也开过店,跟苏宁也谈过合作甚至都开拓完了终极没上线。
大家都是平台上风互补互助共赢,这种业务模式大同小异,便是作为商家入驻外部电商平台,须要同步商品信息到平台,从平台同步回来订单信息,再把物流配送信息同步过去。

架构设计须要考虑未来的可扩展性,把外部平台作为渠道,可以开多个店铺,要有相应的标识区分,这样核心功能确定了,入驻新的平台或者开新店只须要增加配置项即可实现,须要额外做的事情只是对接接口和做数据转换。
作为核心系统,订单系统要具备业务扩展性,不能只靠外挂办理问题,而且要从更实质的业务模型上进行抽象,用一种扩展设计模式支持多种新的业务模式,供应可行方案令业务设想成为可能,而不是设置各种条条框框。

架构方案、技能栈选型

2014年初我开始卖力架构部,开始扩充架构师团队,提升架构部整体能力。
架构部要做架构总体方案,分为两部分,业务系统架构和技能架构。
业务系统架构方案是一张蓝色的图,名副实在的蓝图,表示系统间的层次和关系,能让老板一眼看明白,不是技能层面的运用架构图。
说一个“关键点”,险些每一个框里都有4个功能模块,这正常吗?当然不正常,便是为了都雅大方,以是紧张是展示一个体系,一个思维模式,便于快速理解,并不是用来做系统设计。

技能架构图里比较分外的是三种技能栈并存,原来的有PHP,紧张是前台,有.NET,紧张是后台,在12年才开始有Java。
互联网电商行业主流的技能架构是什么样?技能组件平台化,用现在盛行的说法叫技能中台,包括MQ、缓存、数据库、作业调度、搜索引擎、大数据体系、各种中间件。
整体技能架构也用一张图展现,比较偏观点,之后根据不同的领域进行了调研和选型。
画出这两张图,意味着在业务和技能两方面具备了行业视野。

运用框架、开源组件

经由了前面的方案和选型,我们发起了一个项目叫DDFrame,要研发一个运用框架,集成各种组件,统一技能栈、形成完全的体系,由张亮主导。
个中的SOA组件选用Dubbo,然而Dubbo当时停息更新,社区也不生动,我们用着创造了一些问题,沈理提出我们可以自己改bug,该升级的版本升级,以是我们做了个DubboX,在功能上支持REST调用,适配当当多技能栈并存情形。
由于Dubbo本来是开源的,我们反哺社区,把DubboX也开源了,办理Dubbo不更新的问题,行业里很多公司用过。
做了DubboX之后我们创造做开源并不难,或者说已经有足够的能力做开源,以是就接着做了Elastic-Job,由于用阿里开源的TBSchedule也是不太爽,不如自己做一个分布式任务调度框架。
不像DubboX在现成的项目上改,Elastic-Job是自己从头做,而且不涉及到数据库操作,那时候Docker也没发展起来,相对寻衅难度不大。
在这种情形下做了Elastic-Job之后,证明自己做一个全新的开源项目也OK,所往后来也有信心做分布式的数据库中间件Sharding-JDBC,现在张亮把这个项目做成了Apache项目ShardingSphere。
当当架构部推出的开源项目在行业里产生了一定的影响力,表示了当当的技能水平,提升了技能品牌。
怎么表示呢?我们招聘的时候,不会被反问你们当当的技能栈是什么样的了。

根本平台

到了2016年,我们开始做根本的平台。
为什么做根本平台?这就说到技能体系的运转机制了。
技能团队的事情,从需求提出到功能上线,再升级迭代、持续运营、到终极下线,要可控可量化可追溯,须要一整套系统,包括项目管理、自动化支配、监控告警、问题跟踪。
项目管理,结合敏捷开拓方法论,贯穿了需求管理、架构评审、任务看板、工时统计。
自动化支配则要支持多环境的管理、发布前自动备份和规复,以及灰度发布。
上线之后,对生产环境运用进行监控,有问题须要及时报警。
不管是告警还是线上问题须要跟踪处理,超时自动升级,处理完毕就要关闭。
通过根本平台,我们对全体软件产品生命周期进行数据化管理,用系统化的办法支持技能团队的事情,对技能团队的整体能力提升有很大帮助。
别看技能公司做产品做项目的时候提起数字化信息化产品化工程化SAAS化智能化条理分明,自己的内部管理很多还勾留在基本靠人的水平,这也算是行业里一个值得玩味的小小悖论。

发展四要素

架构师进入新的团队,要发展,要成事儿,韶光线如上所述,如果换一个视角来看这个过程,有四个要素:学习、适应、互助、驱动。
这四个要素也是层层递进的关系。

第一,学习,理解业务现状,理解行业,要有行业视野,知道行业历史和发展方向;

第二,适应,融入团队,团队氛围什么样?有哪些事情流程?组织是一个什么架构?管理风格什么样?怎么做决策?

第三,互助,跟团队形成协力,产出成果,不断的沉淀一些东西出来,积累信赖。

第四,驱动,须要多分享、做一些铺垫和勾引,提高影响力,得到认同,形成共识,一起达成目标。

若何学习?

我去当当是做电商系统架构,之前没做过,作为消费者,只有一些很浅薄的认识。
怎么办?主流的电商网站都打开比拟看差异是什么,有点像产品经理做竞品剖析。
做架构更要深入理解业务,不但是看功能、流程的差别,要去理解内部机制和外部市场的异同。
当时多数电商网站都差不太多,暖色系主题,刺激消费希望,只有当当是绿的,还有不走本地化路线的亚马逊。
后来当当也改成了赤色主题,还把“网”去掉了。
为了体验和感想熏染电商,我在各大电商都下了不少单,最多切实其实定是当当,买了不少书,有些至今未开封。

还有一个路子是看行业的书或者视频,当时电商的书很少,不像现在一搜一大堆,基本上能找到的书我都看了,还好也不多,不用挑。
《电商风云》是记录片,吴晓波策划,中心2套拍的,一共7集,挺好看。
新进入一个行业,要从各个维度去找威信的人、威信的书或者威信的媒体,最好是成体系的。
看书不能只看书的内容,得知道作者是谁,有什么背景,要用系统化的思维去接管理解。
左边的图是一个文件目录列表,是参加各种技能大会网络到的PPT材料。
我们在当当文件做事器上建了个共享文件夹,大家都往上传。
这些资料能开阔视野,如果关注一个专题,比如风控,可以直接搜,看看都有谁讲过,是哪个公司的。
有些大会的视频回放会放到网上,看过PPT以为好,还可以找找有没有视频,由于说的更详细。
当然假如认识其他公司的干系卖力人,直接去互换效果更好。

若何适应?

一样平常正规的公司都有内部通讯录,能够看到组织架构,扫一眼就能有一个感性的认识。
再进一步可以看这些部门都是干什么的由谁卖力?自己在哪个部门,上级的上级是谁,有哪些平行部门?乃至可以看到同事职级,做到心中有数。

多参与、多不雅观察、多发声。
右边这列是我参与的一些项目,里面是干系文档,参与项目多了对全体系统和干系团队会有更全面的认识。
刚加入还是个新人的时候,一定要多理解,不懂就问。
好记性不如烂笔头,中间这个图是我在当当4年多用过的条记本。
有些同学习惯用电脑管理日程、记条记,都电子化,也没问题。
还要及时总结,比如我在2013年跟架构师赵振林,画了一个当当的系统架构总图,把100多个别系都串了起来,补充了这方面的空缺。

这张图是一个总结,当时我在当当已经一年5个月了。
有了这张图,当当的系统不再是一朵云,再把所有系统的卖力人拉出个列表,我便是对付系统架构和团队最理解的人。
2013年到2014年,我认识当当所有的技能经理,险些认识所有的技能核心骨干,即便跟一些同事打交道不多,至少也是点头之交,知道他是做什么的。

若何互助?

互助本身比较软性,分几方面讲。
首先得有热心肠,多帮忙,不求名利,重在掺和,如果没紧要的事都不搭理,形不成协力,就算热脸贴冷屁股,也要表明态度。
搞技能大家比较追求完美,实际上资源和韶光有限,或者大家理念不同,就得妥协,妥协的进步也是进步,就算没有进步,促进了相互理解也有代价。
得摆正心态,不以专家自居。
谁也不是全能选手,不必由于自己是架构师就必须永久精确,要平等互换,对付很多系统的细节,直接卖力人一定是最理解的。
在非正式场合,大家可以一起吐槽,一起吹水,关系会更融洽。
大家一起事情,终极是要出成果,用成果积累信赖,有了信赖才能更好互助,出更多成果。

这张图是什么?是我参与项目之后,留下的遗憾或者创造的问题,在后续的项目互助中,可以提出来,大家有针对性的一起办理,这样也更有成果。

若何驱动?

架构师作为公司里的一个角色,有自己的职责,成果表示了代价。
该做的事情要勇于承担,争取资源和主导权。
有时边界的确不清楚,但如果以为一件事该做,就要有所考虑。
多分享,不一定非得是自己的心得体会,也可以是参加了表面的技能大会,或者学了一个课程,都可以公开分享。
一方面混个脸熟,另一方面让更多的人理解自己认同的东西,可称为布道。
可以作为讲师参加新员工培训,给新员工先容公司的架构和自己的理念、原则,第一印象很主要!
为他人的造诣叫好,为整体的进步鼓掌。
不一定非得自己做才值得夸耀,大家都是同事,是一体的,大家好才是真的好。
想推动一些事情,得去影响关键节点,一样平常来讲,便是组织构造里的关键卖力人。
理解他碰着的问题是什么?他的想法是什么?这个事情有几种方案?最好提前有所互换,能达成一些共识,真正做决策的时候就随意马虎得多。
有告终果要走出去参加行业分享,是骡子是马拉出来遛遛,既能展现公司水平,还能树立个人品牌,提升在公司内部的影响力。

点线面体

架构师技能领导力的发展过程,不管是干事能力还是认知方面,都遵照了点线面体的规律,曾鸣、梁宁、罗振宇都提到过这个观点,右军老师也专门写过公众号文章。
这是正常的发展过程,如果倒着来的话会很痛楚。
如果降维用关注圈、影响圈、掌握圈平面层次来看,发展便是三个圈越来越大的过程。

遗憾

2016年11月我离开了当当,转头看有不少遗憾。
总结很主要,清楚做了哪些事情,没做好哪些事情,才能不断发展进步。
之前在《十年磨剑·大巧不工》的文章里提到过,在此引用。

第一,对决策层在架构方面的关注度影响有限。

架构部的代价在哪里?常常有人问,到底什么样的公司该当有架构师,什么样的团队该有架构师,只有系统到一定规模和繁芜程度才须要架构师的角色在全局上做一些事情。

当当已经很大了,须要在架构层面有所投入。
然而在决策层,对付架构一贯关注度不太高。
很多东西须要我们向上管理去推动影响,老板不会去判断是不是架构不得当,这个须要老板在技能层面有一个认识。

不像业务功能层面,竞品做了一个小程序,咱也做一个,人家用三天,你为什么用五天,这不是一个维度的问题。

第二,从架构角度来讲,对付搜索、移动端和数据平台的影响不敷。
由于相比拟较独立的,电商业务里这几部分跟主流程关系不大,以是基本上自己玩得比较嗨,但实际上很多事情须要协同,才能发挥更大浸染。

第三,我走的时候,还没有完成主流技能架构在当当落地,也没有去充分彻底让当当的系统平台化。

第四,没有带动更多同事参与开源项目。

感谢

非常感谢把我招聘进当当的HR小姐姐们和架构部总监老翁、CTO Justin,让我在当当开始技能转型须要在架构层面有所作为的时候加入,作为架构师与当当同事们一起走过了4年。
感谢各位领导的理解和认可,感谢大家的帮助,特殊感谢架构部的同学们,我们做了许多有代价的事。
所谓天时地利人和,便是在得当的韶光加入得当的公司碰着得当的团队,这样的机遇非常难得。
在当当我认识了许多朋友,一起走来经历了许多变革,一同发展,我也完成了从传统IT领域到互联网的转型。
再回顾,唯有戴德,祝当当越来越好!

希望这篇文章能够对大家的发展有一点点帮助,我们无论是前浪还是后浪,都要在时期大潮里披荆斩棘乘风破浪!

原创 史海峰 技能琐话

https://mp.weixin.qq.com/s/z_yEORPlpJkEy3E1-IoxxA