应用框架、开源组件
经过了前面的规划和选型,我们发起了一个项目叫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化智能化头头是道,自己的内部管理很多还停留在基本靠人的水平,这也算是行业里一个值得玩味的小小悖论。
成长四要素
架构师进入新的团队,要成长,要成事儿,时间线如上所述,如果换一个视角来看这个过程,有四个要素:学习、适应、合作、驱动。这四个要素也是层层递进的关系。
第一,学习,了解业务现状,了解行业,要有行业视野,知道行业历史和发展方向;
第二,适应,融入团队,团队氛围什么样?有哪些工作流程?组织是一个什么架构?管理风格什么样?怎么做决策?
第三,合作,跟团队形成合力,产出成果,不断的沉淀一些东西出来,积累信任。
第四,驱动,需要多分享、做一些铺垫和引导,提高影响力,获得认同,形成共识,一起达成目标。
怎样学习?
我去当当是做电商系统架构,之前没做过,作为消费者,只有一些很浅薄的认识。怎么办?主流的电商网站都打开对比看区别是什么,有点像产品经理做竞品分析。做架构更要深入理解业务,不只是看功能、流程的差别,要去理解内部机制和外部市场的异同。当时多数电商网站都差不太多,暖色系主题,刺激消费欲望,只有当当是绿的,还有不走本地化路线的亚马逊。后来当当也改成了红色主题,还把“网”去掉了。为了体验和感受电商,我在各大电商都下了不少单,最多的肯定是当当,买了不少书,有些至今未开封。