工作中的“厨师”,生活上的诗人,其实也是架构师

简介: 你印象中的架构师是什么样的?每天专注于确认需求与拆分系统?每天游走于各种高级的技术会议?就有这样一位前端架构师,他一心只想做个好“厨师”,能服务好大家,让所有人不会饿着肚子去作战就是他的追求。

图片.png

你印象中的架构师是什么样的?

每天专注于确认需求与拆分系统?

每天游走于各种高级的技术会议?

就有这样一位前端架构师,他一心只想做个好“厨师”,能服务好大家,让所有人不会饿着肚子去作战就是他的追求。

我们先来看看这位“厨师”的养成记。

图片.png

以上内容,有些过于真实


谁说架构师不写代码


“我其实算是非典型的架构师,自己也非常喜欢写代码,曾经有一段时间因为精力的原因,代码写的比较少,那时就感觉有点脱离技术。”贯高自己感慨道。

在我们研发产品落地的过程中,有非常多的细节问题,包括出入参、配置等。每个版本的配置都有可能引起非常复杂的问题,如果开始时设计的不够好,那么别人在使用的过程中,这些细节问题就会带来非常大的困扰。

“在发现这个问题后,我自己也投入很多时间到这些细节的设计中。我们的架构设计其实分了很多层,顶层架构设计是描述各个模块的能力边界和运行逻辑,在模块内部也会做进一步的细分,复杂的架构还会涉及各个模块之间的关系。但架构师通常不会细致到每个配置项如何设计、传什么值、如何去运作这些方面,而这些其实都会影响到最终的使用。”

于是,贯高重新回归技术,在架构设计的同时,也会去关注细节处的体验设计,自己去写代码完善。

就这样,他虽然是前端架构师,但每年依然有大概 35 万+行的代码提交量

《为什么一直在坚持编码》


农村包围城市的 Node 框架打造之路


“我们的前端距离业务有一段距离,且前后端联调的边界不是很清晰,导致很多时候研发成本非常高。我们希望能把 Node 作为前后端边界,将它抽出来后,可以在 Node 这个环境下搭建整个前端运行环境,这样前后端的交互和后端之间的交互就没有非常大的区别。”

然而,当时大部分前端都不太会 Node,只有少部分人会用 Node 做一些工具,我们希望能把 Node 做成服务端的标准框架。

图片.png

image.gif2014.10.13 下午1点,在陶陶居茶楼正式成立了 Node 工作组,至今服务了全集团所有的 Node 应用

“我当时设计了 Egg 的整个加载体系,也是最早开始写核心部分的插件,重构了很多版本。当时有很多同学一起参与进来配合写一些插件,尽管过程比较艰辛,但是在大家的共同努力下,还是把整个 Node 做了出来。”贯高回忆到。

在 Node 做出来后,贯高和团队伙伴联合了集团很多 BU 一起闭关开发,将集团的 Egg 框架做了出来,最终集团将它作为一个标准的框架,而且这个框架也做到了开源。现在大部分阿里集团的 Node 应用都是基于它来扩展,实现自己BU的一些插件去运行。当时贯高和团队的伙伴也为集团对接了基础设施,比如 aone 构建的一些能力。虽然现在团队在蚂蚁,但仍在为阿里集团这边做各种答疑解惑。


图片.png

知乎热贴「如何评价阿里开源的企业级 Node.js 框架 egg?」引起很大反响,是 Egg star 增长最快的一段时间,并上了 GitHub Trending 全语言的周榜。


大家都在往前冲,历史的债务怎么办?


“之前我们用的还是老系统,而且还在双十一的关键链路上,大家都不知道这个域名是哪边维护的,在双十一时就直接使用了。由于这个系统之前也没有进行过压测,最终导致流量爆炸。正是这些历史问题,有时也会给我们的业务带来非常大的风险。”

“虽然是老系统,但可能没有人知道并一直在使用,这样就很容易出现问题。如果说这个系统后面完全没有人知道,那这可能就是蚂蚁技术上的一颗定时炸弹。”

图片.png

这件事对贯高触动很大,于是他下定决心,开始了“还债”之路。

技术团队在很多时候会存在一个问题,就是管生不管养。可能开始时做了一个比较大的规划,然后在第二年及第三年时又重新做了一个规划,这样之前一些涉及到迁移或下线的东西处理起来就比较困难。特别对于前端来说,很多域名是开放的,有很多外部伙伴在直接使用我们的文件或是使用我们的这个功能,这样对于下线来说其实更困难。

“我们前期会做流量评估,但是却不知道这个流量是否有用,只能询问产品经理,告诉他这个功能是5年前的,看看目前是否还需要,还有没有用户在使用。比如里面的一些截图可能还是老的支付宝logo,这些页面对用户其实是个误导。”图片.png

“解决历史问题最大的困难就是找不到人,我们看到的可能只有一个页面,但是这个页面是谁开发的并不清楚,然后也不知道这块业务归谁管理,这样就会导致我们决策不了能不能下线。特别是产品经理更换以后,新来的产品经理也不熟悉这块业务,更不敢轻易下线。这里面不只是技术问题,每个领域都有涉及到,所以我做这个事情是希望可以反向推动产品、对应的业务或者是对应的技术团队,去下线这些无用的内容或者是去做一些革新。”

在这个系统中有很多站点,对应很多域名,每一个域名下面有很多页面,贯高这边按域名从流量小到流量大逐步去下线,目前整体已经还掉了差不多50%的债务。但我们的架构及一些能力仍持续在演进,同时也会带来一些新的“债务”,需要我们各业务团队一起不断去排查并及时的进行下线,避免造成其他影响。

《为什么会主动解决历史债问题》


一心想当厨师的架构师


“我不希望自己在聚光灯下,如果自己做的一些事能够让身边的人感到快乐,就心满意足了。当厨师不做将军,我自认为不是那种可以带领三军冲锋陷阵的人,也无法更好的激励团队前行,但我觉得自己更适合做一个服务角色,让士兵不会饿着肚子作战。厨师在厨房做了很多准备,目的就是为了把菜做出来,这样别人就可以享用。如果你做的味道还比较好,大家也很喜欢你做的菜,那么自己也会感受到这个过程中的乐趣。”

图片.png

“所以,我想做的就是通过一些核心的底层能力,让大家能减少日常遇到的调试复杂的问题,对 Develop 来说体验能够得到一些改善。虽然这个愿景比较美好,通过一个人的力量还是比较困难的,但我愿意去尝试,也希望能做好这个服务的角色,给予大家更好的支撑。”

《作为架构师,最大的成就感是什么》


用化学的态度对待调酒这件事


“在对调酒感兴趣之前,我很少去酒吧,也对酒吧有着一些偏见。但在一次机缘巧合下,在B站看了卡司(某酒区up主)的视频,觉得调酒这件事情很有意思,自己也慢慢接触各种酒的类型,学习鸡尾酒的做法。B站酒区里面,也有越来越多的年轻人喜欢在家调酒。其实,调酒并不是为了喝醉,酒也是一种美食,通过嗅觉、味觉、触感,我们可以感受到每一款酒的特色以及他背后的故事。”

图片.png

对于饮品来说,每一种味道的背后都比较复杂,只有懂得人可以尝出每种味道的不同。经典鸡尾酒,都是基酒加上水果,或加上气泡水,或加上利可酒调制而成的。这里面比较有意思的是,你通过不同的调制方式,一个是量、一个是冰的融水度,还有一个是酸甜的比例,通过这些就能调出你喜欢的口味。

每一点微小的变化,都能带来味道上很大的改变,调酒如是,工作上亦是如此。

《如何平衡全局与细节之间的关系》


在很多时候,我们需要和自己和解,去承认自己的短板,让长板可以跑的更快。纠结只会让自己患得患失,失去了向上的机会,换一条路也许会更难走。人生的终极追求可能是每个人需要考虑的问题,而且答案也必定不同。

我们经常容易被眼前的一些琐事遮住看向远方的双眼,忽略了那些需要我们长期投入有更大意义的事情。我们可以去发现一件值得自己全心投入去做的事情,然后结合自己未来的愿景,躬身入局,把自己融入,长期 AII-in,让自己成为解决问题的变量,不断让自己的肉体去靠近内心想要的那个样子。

相关文章
|
分布式计算 DataWorks 安全
DataWorks产品使用合集之如何删除已有表中的单个字段
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
419 1
|
机器学习/深度学习 算法 数据挖掘
深度学习500问——Chapter05: 卷积神经网络(CNN)(4)
深度学习500问——Chapter05: 卷积神经网络(CNN)(4)
428 1
|
存储 缓存 Java
java应用提速(速度与激情)
本文将阐述通过基础设施与工具的改进,实现从构建到启动全方面大幅提速的实践和理论。
50330 13
java应用提速(速度与激情)
|
存储 缓存 网络协议
淘宝 APP 网络架构演进与弱网破障实践
淘宝 APP 网络架构演进与弱网破障实践
584 1
淘宝 APP 网络架构演进与弱网破障实践
|
传感器 运维 网络协议
面向 IPv6 的淘宝 App 网络技术与体验升级
面向 IPv6 的淘宝 App 网络技术与体验升级
8430 0
|
消息中间件 存储 运维
钉钉 Android 端功耗优化最佳实践(中)
钉钉 Android 端功耗优化最佳实践(中)
888 1
|
监控 BI Android开发
钉钉 Android 端功耗优化最佳实践(下)
钉钉 Android 端功耗优化最佳实践(下)
640 0
钉钉 Android 端功耗优化最佳实践(下)
|
监控 前端开发 JavaScript
javascript 异常处理的一些经验
为了提升应用稳定性,我们对前端项目开展了脚本异常治理的工作,对生产上报的js error进行了整体排查,试图通过降低脚本异常的发生频次来提升相关告警的准确率,结合最近在这方面阅读的相关资料,尝试阶段性的做个总结,下面我们来介绍下js异常处理的一些经验。
javascript 异常处理的一些经验
|
消息中间件 设计模式 存储
钉钉 ANR 实战踩坑与经验总结 | 钉钉 ANR 治理最佳实践
钉钉 ANR 实战踩坑与经验总结 | 钉钉 ANR 治理最佳实践
2011 0
钉钉 ANR 实战踩坑与经验总结 | 钉钉 ANR 治理最佳实践
|
机器学习/深度学习 前端开发 iOS开发
欢迎来到 WebGPU 的世界 上
欢迎来到 WebGPU 的世界
2141 0
欢迎来到 WebGPU 的世界 上