华为云官网负责人明哥:我们是如何做到门面不倒,8个月挑战业界Top 1?

本文分享自华为云社区《华为云官网负责人明哥:我们是如何做到门面不倒,8个月挑战业界Top 1?》,原文作者:华为云社区精选 。

4月的一个周五傍晚,刚刚结束一场语音会议的明哥,拿起桌上的咖啡,一口灌了下去。同时,翻了翻摊在右手边的笔记本,可能在思考即将抛给他的一些问题。

在华为已经工作第15个年头的他,目前是华为云官网研发团队的技术负责人,看护着华为云对外的“门面”。

作为技术管理者,有个小习惯,“每天给自己留一些静默时间,在这段时间内,尽量不处理邮件、工作信息,能够做一些代码开发、review、技术研究的工作。”

他还习惯把事务性的工作都安排在前半周,后半周能有相对完整的时间,和团队的架构师、设计师系统讨论比较大的技术方案。

在钻研技术这块,明哥喜欢往下走,去看它的底层运行机制,它的源码。他也是 “一万个小时定律”的拥趸者,始终坚信积累足够的时间和精力,一定能在技术上有所建树,触类旁通。

所以,他能和团队仅用半年多的时间,完成一次几乎不可能的挑战。

华为云官网负责人明哥:我们是如何做到门面不倒,8个月挑战业界Top 1?_第1张图片

再难,官网“门面”不能倒

在华为南京研究所露天长梯的二层平台上,一直竖着一块海报板:二战中被打得像筛子一样、浑身弹孔累累的伊尔2飞机,依然坚持飞行,终于安全返回。

两年前的那个下午,明哥双手环胸站在办公室的落地窗前,紧紧盯着这块海报,思绪却停在十分钟前接到的任务上:他的团队需要在有限的时间内,完成官网内容生产平台的全部自研重构,且达到业界Top1的水平。

这是一次走出技术舒适圈的挑战,放弃他们非常熟悉的技术架构,一切从头开始,好比明明有一条高速公路通往终点,但是你不能走,你得自己新建一条。

这期间,华为云官网团队既要保证日常业务的正常运转,按部就班解决各种业务需求,又要抽调出足够的人手搭建新的内容平台,时间紧、人手少、任务重。

在不断的技术研讨,重写代码,验证测试后,项目的最小可用版本完成了showcase,彼时大家都很有成就感,也觉得终于能缓一缓了。然而一个更紧急的任务再次抛向他们:为了快速催熟产品,接下来的大促期间将直接使用自研系统。

此时离大促还有两个月,开发团队除了要分出一部分兵力生产页面(为了确保用户体验,页面要全新设计),还要补齐高并发、高可用、安全可信等产品化所必须的能力。通常,这样的能力一般需要3到6个月,才能打磨完善。

明哥和团队只有背水一战,那段时间里,任务板上写满了被拆分的工作细节,新的方案不断覆盖旧的版本,会议室里坐阵的技术专家走了一波,又新来一波……大家拒绝妥协,一门心思埋头往前冲。

华为云官网负责人明哥:我们是如何做到门面不倒,8个月挑战业界Top 1?_第2张图片

比如,为了保证生产出来的页面在任何情况下都不能丢,设计团队翻阅了大量资料,与安全、可用性、性能专家多次讨论和原型验证,然后选择了最‘冗余’的方案:

  • 页面内容采用多副本的方式备份到多个不同服务、物理介质上;
  • 页面访问的所有环节采用多厂商、多节点的方式避免单点故障;
  • 构建多个逃生通道,通过一键切换能力,完成流量的快速切换。

最终这套方案成功应对了多次突发情况,经受住了大促的考验。

历时8个月,从项目启动到第一个基于自研的内容生产页面诞生,官网团队交出了一份漂亮的成绩单。

“挑战非常大,但我们成功了。”

与此同时,他们“顺带”开发了一个PQP页面质量平台, 负责自动检查页面上线前的内容质量,包括页面的404、敏感字词、中英文单词的拼写、图标的设计元素是否符合规范等等。

从接手华为云官网开始,质量就是悬在明哥头上的达摩克利斯之剑。用他的话说,“质量这个东西,不出问题的时候大家不会觉得多重要,但凡发生问题,就会成为众矢之的,所谓善战之将无赫赫之功。”

如何保证页面质量稳定,这一点往往是不少前端技术人员忽视的。“我们找咨询公司,合作伙伴问了一圈,大家都没有这样的工具,更多的是靠流程保证,比如发现问题通知oncall,再逐层找到负责人。虽然管理手段能够运行下去,但效率太低了。”

所以,将这种“人拉肩扛”的问题处理方式,转化为工具能力,做成平台去赋能,再贯穿到整个页面的发布流程,是一件成就感与挑战并存的事情。

当前,PQP平台已在华为内部“开源”,包括华为官网在内的80多个网站都已经接入,用于看护网站的内容质量。

谈及质量,不仅是页面内容的质量,还有官网稳定性的质量。试想,12306的每一次崩溃,后面是多少用户的吐槽骂声。

为了维护华为云官网的稳定性,他们也针对高可用做了多层保障,比如多副本的容灾备份,数据多活等等,在全球4个地区的6个机房都安置了华为云官网的服务器,并且采购了4家不同的CDN厂商确保可能出现的任何主客观风险,保证零中断。就像剥洋葱一样,剥开一层里面依然保证完好无缺。

“华为云官网是我们的门面,控制台、后台服务或许可以挂,但官网就像上甘岭的那面旗帜,哪怕是个光杆司令,我也不能倒,一定要竖在那里。

云原生藏在业务里

门面不能倒,为了这个目标,华为云官网的架构以及生产发布流程也在不断优化完善中。

以前端框架为例,React性能强大且灵活,Angular有丰富的组件,Vue简洁易构建,选起来颇有些乱花渐欲迷人眼。

明哥也曾陷入选择何种技术框架的纠结中,团队经过一番讨论,选择了一个折中的方式——他们和web能力中心定下原则:基础能力团队维护一套主流技术框架和组件库,各业务团队有自己的选择权,可以直接使用,也可以根据需要选择其他技术栈,但核心是遵从统一的设计规范,达到即使不同技术栈生产的页面也能让用户无感知差异的效果。

正所谓好马配好鞍,让开发人员根据各自看护的业务特性找到最匹配的框架。

那么,如何将这些新、老技术栈,以及不同技术框架生产的页面放在一起呈现给用户?

华为云引入了微前端框架,让各个小团队,不同的技术栈都能共生。 微前端的目的是低耦合,它把各模块之间的影响降到最低,各模块能按需使用不同的技术栈,从而降低技术栈切换的成本,确保产品平滑过渡,避免一刀切带来的质量风险。

同时,所有的服务都部署在容器里的,一切皆代码。诸如应用程序、中间件、底层操作系统都被打包成标准的包,不管在什么环境,什么时候部署,模块都是一样的,不会出现因为系统、中间件的版本、配置不一致导致研发环境和生产环境状态不同的情况。这也是持续交付、快速迭代的基础。

大的框架问题解决了,再往前走,还有很多至关重要的细节。

当时网站开发有个很典型的特点:不管是页面功能,还是页面内容的变化,都绕不开发人员,网页上任何一个细微的变化都得去修改html代码或者CSS脚本。这种情况下,随便修改一个字,开发需求排下来,小半个月过去了。

那么,怎样才能把开发人员从这些工作里释放出来呢?

所以有了页面生产平台,可以让业务人员自助完成页面修改;有了可视化搭建,拖拽组件即可完成所见即所得的网页制作;有了系统的内容质量检测平台,能够保证页面的安全上线……

从人拉肩抗的低效率开发,到如今标准的页面发布流程,华为云官网的架构也进入到一个新的阶段:后台采用微服务架构,前端采用微前端架构,页面上线遵守标准的DevOps流程, 化繁为简,充分利用技术的特性,破除实际业务的瓶颈。

华为云官网负责人明哥:我们是如何做到门面不倒,8个月挑战业界Top 1?_第3张图片

这也是明哥对于云原生的理解,“云原生本身并不能算一套架构,它更像是一个定义,一套方法论。 打开来看,云原生无非这几个关键元素:微服务、DevOps、持续交付、容器化。”

目前,DevOps方面,华为云有一套统一的发布流水线平台,所有服务均通过这个平台发布到生产环境;持续交付方面,华为云官网有65%左右的特性是通过按特性独立发布的,每周都会有几百个特性发布到生产环境上。

让子弹再飞一会儿

康威定律里曾提到,组织的架构决定了整体的技术架构。由于华为云的前端和后端组织相对分离,双方各司其职,技术沟通中难免会产生一些小的摩擦。

不过,当前端技术浪潮汹涌而来之时,它也在试图用技术去弥合人为原因造成的各种沟通问题。

以Node.js为例,通俗点说它是运行在服务端的JavaScript,让懂JS的前端人员写出简单的后端服务,完成一些接口的拼装。

“通过Node.js,如果一个程序员针对一个简单的需求,从前端到后端都由他自己来实现,由于省去沟通成本以及同步版本发布的动作,效率能提升30%。”

这就是我们常说的“大前端”、“全栈开发者”。而全栈能力就是消解一些组织团队互相配合产生的损耗,减少损耗,自然可以给开发效率、模式带来质的提升。

谈到开发效率的提升,时下大火的Serverless正在掀起一场云计算领域的革命,这场风暴也波及到了前端,对于此,明哥显得谨慎很多。

Serverless勾勒了一个不需要搭建环境、部署中间件,没有特定使用场景、业务类型,只需部署代码的世界。

这是技术人员的“乌托邦”,但明哥认为当前的Serverless技术有一定的局限性。开发团队不可能只使用一种技术或者组件,而不少技术或者框架,是需要在中间件、操作系统层面进行分析调优工作,Serverless目前没有达到这个灵活性和适配性。

“我们也尝试过应用Serverless提高开发效率,比如把一些后台执行不敏感、可用性较低的服务部署上去,再通过定时器触发,也能达到一定效果。但是一旦涉及到了全场景,尤其是多部件的解决方案,我们就不会考虑首选Serverless服务。”

“可能我比较谨慎,有先进或者新的技术,习惯性观察一阵子,让子弹再飞一会, 技术成熟稳定后再跟上,那个时候也不晚。”

“我们在技术栈选择这条路上也走过不少弯路,前端团队选择技术栈一定要结合实际业务需求,再去观察技术栈的生态是不是持续演进中,人云亦云、好高骛远不可取,如果没有合适的,宁愿自研也好过妥协。”

冲破技术标签,视野决定高度

回望前端技术的迭代,可以说是瞬息万变,新的框架、组件库层出不穷,新的编程语言一波波袭来……

涉猎不同技术栈的明哥一直在思索,技术的目的是什么?在建设华为云官网的过程中,他似乎找到了答案。

以JAVA为首的后端技术栈,在几十年的迭代中,无论是技术语言,还是框架都趋于稳定。相较之下,前端还朝着技术成熟曲线的峰顶狂奔中,未来也会逐渐从百花齐放过渡到一两个成熟稳定框架一统江山,一步步补全整个生态的阶段。

目前一些主流框架本质上也是大同小异,选择一个领域或者技术栈深耕,愈往下探,愈会发现其中的一致性规律。

大浪淘沙中,明哥认为比较有潜力和探索空间的三个技术方向是沉浸式、智能化以及无码化。

首先是沉浸式的效果,所见即所得的前端正在追求更丰富的展现和互动形式。比如工业制造领域的仿真模拟,可以对孪生的数字模型进行各种测试验证。同样,在前端领域,也能把产品可视化地呈现在网站上,让用户直观地感知解决方案的运作模式。

说到这里,他在空气中比划了一下,“你想象把后台看不见摸不着的一些组网解决方案搬到前台,很神奇, 但也非常考验后端数据和前端渲染能力的结合,不过我们正在努力。”

第二个是智能化,华为云官网更多是面向ToB的场景,无论是数据量,还是用户量都相对较小,所以他们的目标是在小数据量的情况下,达到精准的千人千面智能化推荐,提升用户的注册转化率。同时,在合适的时机,尝试智能生产广告图或页面。

华为云官网负责人明哥:我们是如何做到门面不倒,8个月挑战业界Top 1?_第4张图片

第三个方向是无码化,现在多数业务人员可以自主生产简单的页面,涉及一些复杂页面才有开发人员介入。以后,无论是面向运营人员,还是最终用户,越来越多的页面、接口、流程都会通过无码化的方式实现。

前端新技术的出现,最终目的还是为了能够响应业务,快速地解决生产、运营的需求,这也是所有技术都在探索的方向。

到了这个阶段,大前端的范畴也在扩充,明哥也更习惯站在架构师的角度去看面前呈现的这些网页,观察它们背后的一系列逻辑。“但凡涉及到用户可感知的内容,其实都是大前端要关注的,对于前端人员来说,前端不仅是一个技术,它更像是一个目的。”

最开始,前端这个概念在业界比较模糊,前端人员都自嘲“切图仔”,也没有现在流行的三大框架,混沌初开,大家都摸着石头过河。

这个时代已经一去不复还,如今的前端人员,技术是基础,在此之上的思维和视野则决定了技术的高度。

“一个很有意思的现象:大家常常在论坛上为哪个编程语言最好而争得面红耳赤。其实,囿于一个技术的优劣,就是在给自己贴标签。”

“就像有的前端人员会纠结技术路线,认为写页面看不到发展空间,这是把自己困在“前端”的标签里。如果定位是一个简单的开发,一项技能足矣。但想要成长,得学会跳出那个圈子,换种思路,比如以提高用户体验为目标,可以学的技术就不只是某一个框架或语言。在此过程中,将自身的技术能力和定位从开发人员向架构师,乃至CTO的标准去提升。”

心中有教堂,月亮和六便士,都可以拥有。

 

点击关注,第一时间了解华为云新鲜技术~

你可能感兴趣的:(华为故事,程序员,华为云官网,web前端,云原生,node.js,架构)