作者 | 阿大
关于阿大
09年加入淘宝网,花名:阿大。刚入职时负责淘宝机票和彩票业务,两个业务后来均交接到了北京团队,期间还参与过淘宝交易、搜索、二手(闲鱼)等业务。12年随团队调整到一淘,开始关注前端工程化领域,并在一淘做了小范围尝试。13年回到淘宝前端团队,开始深耕前端工程化领域,推动了前端 Git 化并孵化了淘宝前端工程平台:DEF,涵盖研发工具、流程管控和静态源站等全链路前端研发能力。后经过两年时间升级为阿里集团前端工程中台,服务集团几千前端工程师的日常业务研发,平台日活跃内部开发者达 2500+。19年在阿里集团前端技术委员会提出 IDE 战略,组队自研了阿里内部的 IDE Framework:KAITIAN(开天),先后在集团内部众多 IDE 业务场景落地,奠定了一站式前端研发平台的技术基础。连续多年参与阿里集团前端技术委员会的横向建设,是委员会核心委员。目前负责委员会前端工程方向,今年的主要精力是在工程的角度横向推进集团前端的安全生产建设。
阿大介绍D2安全生产专场
随着前端领域边界的不断拓展,前端工程师的日常工作内容已经与几年前有着巨大的不同。Serverless、微前端、智能化等新兴技术使得前端的技术闭环越来越完整而又错综复杂,前端交付的也早已不再只是简单的 HTML 页面,前端已经参与到业务的核心逻辑和关键链路。如何提升团队安全意识和保证交付代码质量?如何做到秒级线上监控和故障快速响应?这对前端而言是一个熟悉而又陌生的挑战。安全生产本身也是一个工程问题,所以今年 D2 的前端工程专场将聚焦安全生产,我们将首次对外披露阿里经济体在前端安全生产上的建设成果,相信大家能在这个专场收获不一样的惊喜。
快问快答
D2小编收集了同学们比较疑惑的、和一些犀利的问题,邀请阿大回答一下。
点击查看视频
D2 小编:今年在D2上首次看到了前端安全生产这个专场,为什么会有这样一个专场出现?
阿里经济体技术线今年有四大战役,两个是业务方向的战役,一个云原生战役,还有一个战役就是安全生产。如果我们把业务比做水的话,云原生就是装水的水桶的材质,升级成果更好材质的桶了。那安全生产是什么呢?是那个桶底!以前我们常说补短板,但往往忽略了这个桶底,底漏了桶再好也没用。第二点我想大家最近几年一定有感受,就是现在外部环境越来越复杂,各种不确定性和黑天鹅频发。在技术上也同样,前端是最近接用户的,是保证体验和可用性的最后一道关卡,没有其它技术可以为前端技术兜底。所以前端的稳和可用性对产品至关重要,当突发情况出现时前端是否有快速的应急响应能力和完备的预案,这是对前端工程师们全新的考验。
D2 小编:前端安全生产和普意的安全有什么区别?怎么定义前端安全生产的范畴?
安全的范畴太广了,比如你不能把你的登录密码告诉别人,这就不属于安全生产范畴。在阿里内部安全和安全生产是两个独立的团队,当然两个团队是有非常紧密的协同的,安全生产算是安全的一个子领域吧。
安全生产核心在“生产”,是面向生产这个过程的,这个过程就是研发过程。所以前端安全生产建设跟前端工程紧密相关,绝大部分都是都需要借助工程落地。前端安全生产覆盖前端研发的全生命周期,包括且不限于:规范意识,编码质量、流程保障、监控报警、应急响应等。
D2 小编:下一个问题有点尖锐【笑】。安全生产一般会带了很多额外的工作量,特别是流程和审批等方面,导致了工作量的增加,有没有很好的后续优化策略?
首先还要明确一下安全生产的目的是为了保护开发者,保证业务稳定,而不是为了给大家添堵。但是不可否认,在特殊时间阶段,安全生成附带的规范、流程等确实会有一定的成本增加,这个需要辩证的看。
我举个例子:一开始的时候路上没有车人也少,人们可以径直地从路的东边走到路的西边。后来人多了,还出现了摩托车、汽车等,在路上随便走变得很不安全。这个时候人行道和红绿灯就出现了,行人只允许在人行道上行走,红灯的时候你得等。这是非常有必要的是不是,不然就不安全嘛。不过红绿灯有也不完善的地方,比如有些红灯时间很短,有些又很长都是有问题的,需要按照现实情况优化。安全生产也一样,它的必要性毋庸置疑,但是在执行落地的时候要根据实际情况做好调整,另外就是意识问题了,当大家能清晰地认知到一件事情的利弊,对抗就会变成理解。
针对审批这个场景,在阿里内部目前形式上确实有点重的,这也是特殊时期取舍的结果。审批背后的逻辑就是需要人工介入,说明安全能力的平台化做的不够完善,是一种早期防控的有效手段,我相信随着时间推移这种手段一定是会越来越弱化的。
D2 小编:安全生产对于业内都比较重视的资损防控是怎么做的?有什么比较好的实践?
资损防控是安全生产建设中很重要的一环,资损的危害非常直接,就是经济损失。在阿里这样以交易为核心的业务场景中时时刻刻都存在着资损的风险。
诚然大部分的资损问题是不在前端领域的,但不是说前端就没有资损的问题。近几年阿里由于前端问题导致的资损故障不在少数,前端主要从三方面做资损防控建设:首先我们对历史前端资损故障和所有可能出现资损的线上场景进行了梳理,盘点分析前端资损问题特点,并制定相关的规范、红线等,通过考试提升前端资损防控意识。然后我们在研发链路通过静态扫描能力对所有上线的源代码进行检查,识别可能的危险操作,比如对获奖结果的判断,金额计算等逻辑,都是不允许的。最后还会通过机器学习的能力对页面 UI 进行扫描,通过 UI 测试用例快照对比防控资损风险。
D2 小编:在阿里像618、双11这样的大促,才会严抓安全生产。如何让安全生产的意识,融入到平时的开发中?
恰恰相反,历史经验告诉我们,越是严重的问题往往越是出现在容易疏忽的时候,双十一这样的大促时间,大家都紧绷着那根神经,各方面的要求都比平时要高,反而出问题的概率很低,不过大促等重点时间段肯定有特殊的保障手段。
提升意识的前提一定是记忆深刻的,比如让你出一个线上故障,你的安全生产意识一定立马提到最高警戒线了,但这肯定不现实。另外一种记忆深刻的方式就是不停重复,所以我们会定期给全集团前端发送前端安全生产月报,线上问题复盘等邮件,另外还会不定期的进行内部技术分享、直播和技术社区文章等。
另外阿里前端在工程化建设上是比较完善的,我们就把前端安全生产融入到日常的研发流程中,比如你的代码开发完后一定会需要 Code Review,Code Review 不认真我们还会攻防你。代码发布上线之前必须经过各种源码扫描、性能评估等。正式上线时还要提交变更申请单及灰度放量验证。上线后一小时内还要求大家关注监控数据情况,并且可能会有变更监控的攻防,所有的攻防没有有效防守都会记录分数。
D2 小编:安全生产目前的产品化到什么程度?人肉成本有多高?针对目前人肉化的,是否还有进一步的优化空间?
阿里经济体前端委员会下属的前端安全生产小组是今年 6 月份正式组建的,经过差不多半年的时间完成了基础能力平台的建设,推进建设了统一的前端监控平台、前端攻防平台和前端安全环境。这些平台能力未来都会高度集成到日常研发链路,大部分的使用能做到非常低成本的接近无感。包括我们研发链路中的灰度放量发布、线上数据监控和回滚应急预案等都已经比较完备。
要说还需要优化的我想应该就是对数据价值的挖掘了,我们在研发过程积累了大量的数据,包括一些线上服务的日志数据,这些数据中是可以挖掘出非常多有用的东西的。举个例子:我们经常遇到一个线上 URL 有问题后问了一圈没人知道这个 URL 是谁负责的,对应的源码仓库是哪个,什么时候发布过,是在哪个平台发布的等。但其实这些关系数据我们都有,只是可能分散在不同的地方而已。所以今年我们的前端安全生产小组还在推进经济体前端研发元数据平台,目的就是要拉通经济体所有变更平台的数据,通过数据标准对齐和数据统一开放,解决前端提到的问题。
D2 小编:最后一个就是大家最关心的问题了。本次 D2 的安全生产专场话题,会倾向于哪些重点方向,会邀请哪些专业讲师来分享呢?大家听完会有什么收获呢?
阿里集团是 18 年 9 月份正式在技术线成立安全生产小组的,同时安全生产又是今年阿里经济体技术线四大战役之一,可见安全生产的重要性和持续性。今年 D2 设置了《前端安全生产》专题,我们将首次对外披露阿里前端在安全生产建设上的思考和成果,具体内容大家到现场就知道了,我这里就不先透露了。另外我们还会邀请一线互联网公司的前端同仁到 D2 上来讲讲不同商业场景下的安全生产建设思路。如果你的前端团队已经具备一定规模,并且正在高质量研发和高效业务迭代之间矛盾苦恼,那么我相信在这个专题一定能有所收获。
D2 小编:感谢阿大的有问必答,大家快来 D2 一起学习吧!🥳👇👇
🔥第十五届 D2 前端技术论坛开放报名,速抢!
关注「Alibaba F2E」
把握阿里巴巴前端新动向