华为云官网负责人明哥:咱们是如何作到门面不倒,8个月挑战业界翘楚?

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

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

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

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

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

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

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

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

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

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

这是一次走出技术温馨圈的挑战,放弃他们很是熟悉的技术架构,一切从头开始,比如明明有一条高速公路通往终点,可是你不能走,你得本身新建一条。前端框架

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

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

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

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

好比,为了保证生产出来的页面在任何状况下都不能丢,设计团队翻阅了大量资料,与安全、可用性、性能专家屡次讨论和原型验证,而后选择了最‘冗余’的方案,最终成功应对屡次突发状况,经受住了大促的考验。

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

“挑战很是大,但咱们成功了。”

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

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

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

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

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

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

为了维护华为云官网的稳定性,他们也针对高可用作了多层保障,好比多副本的容灾备份,数据多活等等,在全球4个地区的6个机房都安置了华为云官网的服务器,而且采购了4家不一样的CDN厂商规避可能出现的任何主客观风险。构建多个逃生通道,一键完成流量的快速切换。就像剥洋葱同样,剥开一层里面依然保证无缺完好。

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

云原生藏在业务里

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

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

明哥也曾陷入选择何种技术框架的纠结中,团队通过一番讨论,选择了一个折中的方式——他们和web能力中心定下原则:基础能力团队维护一套主流技术框架和组件库,各业务团队有本身的选择权,能够直接使用,也能够根据须要选择其余技术栈,但核心是听从统一的设计规范,达到即便不一样技术栈生产的页面也能让用户无感知差别的效果。 正所谓好马配好鞍,让开发人员根据各自看护的业务特性找到最匹配的框架。

但问题随之而来,如何将这些新、老技术栈,以及不一样技术框架生产的页面放在一块儿呈现给用户?

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

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

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

举个例子,之前的网站开发无论是页面功能,仍是页面内容的变化,都绕不开发人员,网页上任何一个细微的变化都得去修改html代码或者CSS脚本。这种状况下,随便修改一个字,开发需求排下来,小半个月过去了。

为了让你们都能获得“解脱”,因此有了页面生产平台,可让业务人员自助完成页面修改;有了可视化搭建,拖拽组件便可完成所见即所得的网页制做;有了系统的内容质量检测平台,可以保证页面的安全上线。经过IT化,让全部上线动做都高效可控,打通官网内容DevOps的最后一环。
image.png

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

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

让子弹再飞一下子

康威定律里曾提到,组织的架构决定了总体的技术架构。因为华为云的前端和后端组织相对分离,双方各司其职,技术沟通中不免会产生一些小的摩擦。不过,当前端技术浪潮汹涌而来之时,它也在试图用技术去弥合人为缘由形成的各类沟通问题。

以Node.js为例,通俗点说它是运行在服务端的JavaScript,可让懂JS的前端人员写出简单的后端服务,完成一些接口的拼装。“经过Node.js,若是一个程序员针对一个简单的需求,从前端到后端都由他本身来实现,因为省去沟通成本以及同步版本发布的动做,效率能提高30%。”

明哥表示,这就是咱们常说的“大前端”、“全栈开发者”。而全栈能力就是消解一些组织团队互相配合产生的损耗,减小损耗,天然能够给开发效率、模式带来质的提高。

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

Serverless勾勒了一个不须要搭建环境、部署中间件,没有特定使用场景、业务类型,只需部署代码的世界。这是技术人员的“乌托邦”,但明哥认为当前的Serverless技术有必定的局限性。开发团队不可能只使用一种技术或者组件,而很多技术或者框架,是须要在中间件、操做系统层面进行分析调优工做,Serverless目前没有达到这个灵活性和适配性。

华为云官网团队也尝试过应用Serverless提升开发效率,好比把一些后台执行不敏感、可用性要求较低的服务部署上去,再经过定时器触发,也能达到必定效果。可是只要涉及到全场景,尤为是多部件的解决方案,就不会考虑首选Serverless服务。

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

明哥在技术栈选择这条路上也走过很多弯路,他认为,前端团队选择技术栈必定要结合实际业务需求,再去观察技术栈的生态是否是持续演进中,人云亦云、好高骛远不可取,若是没有合适的,宁愿自研也好过妥协。

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

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

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

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

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

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

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

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

第二个是智能化,一方面华为云官网团队会在搜索和推荐中进一步优化智能算法和策略,达到精准的千人千面智能化推荐,提高用户的注册转化率;另外一方面,团队会在内容的智能生产方面,包括文章、图片、广告等,作出更多的探索,协助运营人员、业务人员生产出更高质量的内容。
image.png

第三个方向是低码化,如今多数业务人员能够自主生产简单的页面,涉及一些复杂页面才有开发人员介入。之后,不管是面向运营人员,仍是最终用户,愈来愈多的页面、接口、流程都会经过低码化或者无码化的方式实现。

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

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

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

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

“好比你们经常在论坛上为哪一个编程语言最好而争得面红耳赤。其实,囿于一个技术的优劣,就是在给本身贴标签。就像有的前端人员会纠结技术路线,认为写页面看不到发展空间,这是把本身困在‘前端’的标签里。”

“若是你的定位是一个简单的开发,一项技能足矣。但想要成长,得学会跳出那个圈子,换种思路,好比以提升用户体验为目标,能够学的技术就不仅是某一个框架或语言。在此过程当中,将自身的技术能力和定位从开发人员向架构师,乃至CTO的标准去提高。”

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

福利时间到:

欢迎你们到原文(https://bbs.huaweicloud.com/b...

福利一: 看完华为云官网的业务实践,以及明哥对前端技术的思考,若是你也有业务或者技术上的疑惑,在评论区留言,明哥将空降评论区,现场答疑解惑。

福利二: 分享本文到朋友圈,截图私信【华为云社区精选】,小编将按点赞数选择前3位赠送前端大礼包,内含首次公开的华为云官网内部资料,以及明哥推荐书籍《领域驱动设计》一套。

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