【摘要】在WOT全球技术创新大会2023“大前端最佳实践”分论坛上,火山引擎云平台前端负责人蒋雷分享了主题为“火山引擎云平台前端稳定性建设实践”的演讲。此次分享以火山引擎云平台为例,从业务端切入,通过介绍前端稳定性对云平台的重要性,探讨了前端稳定性建设的目标、整体思路、建设流程及评价体系,分享了前端稳定性建设过程中面临的挑战和难点,以及利用新技术和工具来提高前端稳定性的方法,希望对诸君有所启发。
近日,在WOT全球技术创新大会2023“大前端最佳实践”分论坛上,火山引擎云平台前端负责人蒋雷分享了主题为“火山引擎云平台前端稳定性建设实践”的演讲。
此次分享以火山引擎云平台为例,从业务端切入,通过介绍前端稳定性对云平台的重要性,探讨了前端稳定性建设的目标、整体思路、建设流程及评价体系,分享了前端稳定性建设过程中面临的挑战和难点,以及利用新技术和工具来提高前端稳定性的方法。
火山引擎是字节跳动旗下的云服务平台。云平台是一个多边平台,可以为多个不同角色用户提供服务,它不仅为客户服务,还为包括财务、税务、法务的火山引擎内部运营,以及外部生态合作伙伴服务。因此,对于云计算平台而言,稳定性建设至关重要。蒋雷表示,在云计算业务中,官网和控制台距离客户最近,用户与云平台和云产品控制台的交互几乎都发生在前端,前端稳定性对于整个云平台的可用性和客户体验至关重要。
火山引擎云平台稳定性建设的整体思路
火山引擎云平台业务的稳定性建设就像下一盘棋,而行棋的最高原则就是火山引擎整体的稳定性建设。其中,云平台的稳定性作为火山引擎整体稳定性范畴的关键部分也不可小觑。
由于云平台业务多边性的特点,云平台稳定性建设的第一要义便是保证云产品服务的稳定性,提升MTBF(平均无故障运行时间),降低MTTR(平均故障修复时间),保证云业务安全、可靠、高效地运行。
云平台行业SRE实践可以细分为Pre-MTBF、MTTI(发生故障到故障被识别的平均时间)、MTTK(发生故障到了解故障根因的平均时间)、MTTF(故障出现后的平均解决时间)、MTTV(故障修复完成后重新验证系统正常运行所需的平均时间)、Post-MTBF等环节,为了保证云平台运行的稳定性,火山引擎云平台前端团队采用了以下措施进行维护:
在事故发生前,通过故障演练、容量评估、自动化测试等方式,进行故障预防;当事故发生后,利用监控告警、客户反馈、舆情感知等工具发现故障,通过日志分析、链路跟踪、根因定位等方式进行故障定位,再采取容灾切换、服务降级、服务限流、异常熔断等措施进行故障恢复;当然,故障恢复之后,故障复盘、改进验收以及故障模拟等环节也是必不可少的。
此外,火山引擎云平台依照行业SRE实践进行前端稳定性维护的同时,还进一步精进了企业内部的云平台维护方法论。
一是文化建设,由于工作人员的意识在云平台稳定性建设中起着重要作用,火山引擎内部开展了一系列培养工作人员稳定性意识的工作,包括稳定意识建设的月会、培训、考试、复盘等。这些工作的实行有效地提高了工作人员对故障预防的积极性与主动性,从而有效增加了云平台无故障运行时间。
二是通过控制操作管理流程来提升MTBF,降低MTTR,比如事故前的预防流程,包括变更的规范、事故演练的规范;事故中的管控,比如发现故障后的处理方法,事故的及时定位等;事故后的治理,复盘要遵循的规范等。
火山引擎云平台前端稳定性具体实践
前端是云平台与客户直接的接触点,客户对操作类故障的感知更加明显,也更容易发现体验类的问题,因此前端反馈的信息更能代表客户的真实体验。此外,前端几乎覆盖全部的用户场景和终端场景,但在测试的过程中又会遇到非必现问题等特殊情况,使得前端复现路径成为难点。
火山引擎云平台前端团队通过建立前端底层技术基座,接入统一的渲染、页面托管服务,从而解决前端建设多站点、多域名、多语言以及多客户端支持的问题。在向上涉及到业务层面时,也能解决业务统一埋点的问题。此外,在统一的架构基础上,火山引擎云平台前端团队还建设了统一的监控告警和性能体验,多方位保障前端业务的稳定运行。
此外,火山引擎云平台前端团队还精心设计前端的服务架构。当用户在浏览器发起请求时,静态资源会直接请求CDN,动态资源会直接请求DCDN。根据前端页面的渲染方式不同,请求不同的后端服务层,再进一步对接下游服务,从而在架构设计上促进前端业务平稳运行。
官网的稳定性建设
云计算官网是触达云计算客户,以及完成客户转化的主要平台。其中包括产品介绍页面、活动营销等功能,但同时也会有一些强依赖后端的业务,比如搜索、文档、产品体验等。
火山引擎云平台前端团队从前端接入层、服务层、数据层、基建层各方面协调布局,从官网服务面和管理面双管齐下,推进服务稳定性监控、网络链路治理、页面稳定性治理。通过接入APM和TLS服务,建立前端服务的监控体系,实现页面请求、渲染、JS、黑白屏等指标和异常的上报功能,并使用自定义事件来补充定制业务指标的上报功能,使用自动化归因工具来辅助研发人员排查定位告警问题,告知错误信息(触发的用户环境、URL、发布版本、状态码,堆栈信息等)。此外,通过页面代码巡检根据特征匹配防止上线时出现错误,利用E2E巡检进行通用CV监控、白屏检测等有效降低官网页面MTTR,提升用户体验。
火山引擎控制台稳定性建设
火山引擎云控制台主要分为三部分,分别是客户侧、云控制台、云产品。客户在使用云产品时,首先会涉及火山引擎控制台的基础功能,例如账号注册、登录、账单查询等。其次是依托IaaS、PaaS、SaaS等云控制平台而运行的各种云产品。让云产品通过平台对外进行服务,并且保证云产品的稳定性,是火山引擎控制台稳定性建设中非常重要的话题。
火山引擎控制台前端团队为各云产品提供了前端页面服务接入和托管的方案。在前端BFF场景中,主要使用三个内部工具进行全链路稳定性监控和治理。其中,Rhino用于压测,ByteHAS用来进行故障注入,Argos则是服务监控告警平台。通过这些工具,可以帮助团队快速定位问题、验证评估方案并监控服务状态,从而提高系统可靠性。
随着业务不断发展,BFF服务规模和复杂程度越来越高,服务间调用链路也越来越长。因此,维护BFF层的稳定性就变得至关重要。为此,火山引擎云平台前端团队从确定监控指标、监控可行性验证、实施监控方案到分析结果、改进优化,不断精细化BFF 稳定性评估指标类型,并制定了全方位的BFF层稳定性建设方案,不断推进火山引擎稳定性建设的可操作性和科学性。
此外,所有云产品的控制台都需要火山引擎云平台前端团队提供服务,比如页面通用的顶部导航、侧边栏以及Web SDK功能。其中,Web SDK的接入使得所有控制台页面、云产品页面具备了异常监控的能力。火山引擎云平台前端团队基于此来进行页面的资源检测、HTTP的Error监控、白屏检测等统一的前端情况监控以及数据收集工作。再将数据汇总到Slardar平台,由Slardar平台判断性能分析的情况以及是否进行告警。Slardar平台一旦分析出异常情况就会立即发出告警,再经由团队内部严谨的管控流程进行告警处理。
火山引擎云平台前端团队在进行前端稳定性维护时,利用先进的监控管理工具,采纳周密严谨的事故预防和解决流程,不仅注重团队技术上的专业性,也从未忽视意识上的能动性,前端架构和团队文化两手抓,形成了一套专业、具体、可操作性强的前端稳定性建设方法论,火山引擎云平台前端团队的前端稳定性建设实践也成为众多前端工程师学习的范本。