你印象中的架构师是什么样的?
每天专注于确认需求与拆分系统?
每天游走于各种高级的技术会议?
就有这样一位前端架构师,他一心只想做个好“厨师”,能服务好大家,让所有人不会饿着肚子去作战就是他的追求。
我们先来看看这位“厨师”的养成记。
以上内容,有些过于真实
谁说架构师不写代码
“我其实算是非典型的架构师,自己也非常喜欢写代码,曾经有一段时间因为精力的原因,代码写的比较少,那时就感觉有点脱离技术。”贯高自己感慨道。
在我们研发产品落地的过程中,有非常多的细节问题,包括出入参、配置等。每个版本的配置都有可能引起非常复杂的问题,如果开始时设计的不够好,那么别人在使用的过程中,这些细节问题就会带来非常大的困扰。
“在发现这个问题后,我自己也投入很多时间到这些细节的设计中。我们的架构设计其实分了很多层,顶层架构设计是描述各个模块的能力边界和运行逻辑,在模块内部也会做进一步的细分,复杂的架构还会涉及各个模块之间的关系。但架构师通常不会细致到每个配置项如何设计、传什么值、如何去运作这些方面,而这些其实都会影响到最终的使用。”
于是,贯高重新回归技术,在架构设计的同时,也会去关注细节处的体验设计,自己去写代码完善。
就这样,他虽然是前端架构师,但每年依然有大概 35 万+行的代码提交量。
《为什么一直在坚持编码》
农村包围城市的 Node 框架打造之路
“我们的前端距离业务有一段距离,且前后端联调的边界不是很清晰,导致很多时候研发成本非常高。我们希望能把 Node 作为前后端边界,将它抽出来后,可以在 Node 这个环境下搭建整个前端运行环境,这样前后端的交互和后端之间的交互就没有非常大的区别。”
然而,当时大部分前端都不太会 Node,只有少部分人会用 Node 做一些工具,我们希望能把 Node 做成服务端的标准框架。
2014.10.13 下午1点,在陶陶居茶楼正式成立了 Node 工作组,至今服务了全集团所有的 Node 应用
“我当时设计了 Egg 的整个加载体系,也是最早开始写核心部分的插件,重构了很多版本。当时有很多同学一起参与进来配合写一些插件,尽管过程比较艰辛,但是在大家的共同努力下,还是把整个 Node 做了出来。”贯高回忆到。
在 Node 做出来后,贯高和团队伙伴联合了集团很多 BU 一起闭关开发,将集团的 Egg 框架做了出来,最终集团将它作为一个标准的框架,而且这个框架也做到了开源。现在大部分阿里集团的 Node 应用都是基于它来扩展,实现自己BU的一些插件去运行。当时贯高和团队的伙伴也为集团对接了基础设施,比如 aone 构建的一些能力。虽然现在团队在蚂蚁,但仍在为阿里集团这边做各种答疑解惑。
知乎热贴「如何评价阿里开源的企业级 Node.js 框架 egg?」引起很大反响,是 Egg star 增长最快的一段时间,并上了 GitHub Trending 全语言的周榜。
大家都在往前冲,历史的债务怎么办?
“之前我们用的还是老系统,而且还在双十一的关键链路上,大家都不知道这个域名是哪边维护的,在双十一时就直接使用了。由于这个系统之前也没有进行过压测,最终导致流量爆炸。正是这些历史问题,有时也会给我们的业务带来非常大的风险。”
“虽然是老系统,但可能没有人知道并一直在使用,这样就很容易出现问题。如果说这个系统后面完全没有人知道,那这可能就是蚂蚁技术上的一颗定时炸弹。”
这件事对贯高触动很大,于是他下定决心,开始了“还债”之路。
技术团队在很多时候会存在一个问题,就是管生不管养。可能开始时做了一个比较大的规划,然后在第二年及第三年时又重新做了一个规划,这样之前一些涉及到迁移或下线的东西处理起来就比较困难。特别对于前端来说,很多域名是开放的,有很多外部伙伴在直接使用我们的文件或是使用我们的这个功能,这样对于下线来说其实更困难。
“我们前期会做流量评估,但是却不知道这个流量是否有用,只能询问产品经理,告诉他这个功能是5年前的,看看目前是否还需要,还有没有用户在使用。比如里面的一些截图可能还是老的支付宝logo,这些页面对用户其实是个误导。”
“解决历史问题最大的困难就是找不到人,我们看到的可能只有一个页面,但是这个页面是谁开发的并不清楚,然后也不知道这块业务归谁管理,这样就会导致我们决策不了能不能下线。特别是产品经理更换以后,新来的产品经理也不熟悉这块业务,更不敢轻易下线。这里面不只是技术问题,每个领域都有涉及到,所以我做这个事情是希望可以反向推动产品、对应的业务或者是对应的技术团队,去下线这些无用的内容或者是去做一些革新。”
在这个系统中有很多站点,对应很多域名,每一个域名下面有很多页面,贯高这边按域名从流量小到流量大逐步去下线,目前整体已经还掉了差不多50%的债务。但我们的架构及一些能力仍持续在演进,同时也会带来一些新的“债务”,需要我们各业务团队一起不断去排查并及时的进行下线,避免造成其他影响。
《为什么会主动解决历史债问题》
一心想当厨师的架构师
“我不希望自己在聚光灯下,如果自己做的一些事能够让身边的人感到快乐,就心满意足了。当厨师不做将军,我自认为不是那种可以带领三军冲锋陷阵的人,也无法更好的激励团队前行,但我觉得自己更适合做一个服务角色,让士兵不会饿着肚子作战。厨师在厨房做了很多准备,目的就是为了把菜做出来,这样别人就可以享用。如果你做的味道还比较好,大家也很喜欢你做的菜,那么自己也会感受到这个过程中的乐趣。”
“所以,我想做的就是通过一些核心的底层能力,让大家能减少日常遇到的调试复杂的问题,对 Develop 来说体验能够得到一些改善。虽然这个愿景比较美好,通过一个人的力量还是比较困难的,但我愿意去尝试,也希望能做好这个服务的角色,给予大家更好的支撑。”
《作为架构师,最大的成就感是什么》
用化学的态度对待调酒这件事
“在对调酒感兴趣之前,我很少去酒吧,也对酒吧有着一些偏见。但在一次机缘巧合下,在B站看了卡司(某酒区up主)的视频,觉得调酒这件事情很有意思,自己也慢慢接触各种酒的类型,学习鸡尾酒的做法。B站酒区里面,也有越来越多的年轻人喜欢在家调酒。其实,调酒并不是为了喝醉,酒也是一种美食,通过嗅觉、味觉、触感,我们可以感受到每一款酒的特色以及他背后的故事。”
对于饮品来说,每一种味道的背后都比较复杂,只有懂得人可以尝出每种味道的不同。经典鸡尾酒,都是基酒加上水果,或加上气泡水,或加上利可酒调制而成的。这里面比较有意思的是,你通过不同的调制方式,一个是量、一个是冰的融水度,还有一个是酸甜的比例,通过这些就能调出你喜欢的口味。
每一点微小的变化,都能带来味道上很大的改变,调酒如是,工作上亦是如此。
《如何平衡全局与细节之间的关系》
在很多时候,我们需要和自己和解,去承认自己的短板,让长板可以跑的更快。纠结只会让自己患得患失,失去了向上的机会,换一条路也许会更难走。人生的终极追求可能是每个人需要考虑的问题,而且答案也必定不同。
我们经常容易被眼前的一些琐事遮住看向远方的双眼,忽略了那些需要我们长期投入有更大意义的事情。我们可以去发现一件值得自己全心投入去做的事情,然后结合自己未来的愿景,躬身入局,把自己融入,长期 AII-in,让自己成为解决问题的变量,不断让自己的肉体去靠近内心想要的那个样子。