AliExpress 是阿里巴巴国际电商平台,海外买家覆盖 200+ 国家,分布广且离散,国际架构、网络体系复杂,为了提升全球用户体验面临诸多技术挑战。从 2016 年开始,AliExpress 就开始落地 SRE 相关的实践,并且收效颇丰。为了了解 AliExpress 全球架构体系下的可用性解决方案及具体实践,InfoQ 记者采访了阿里巴巴高级技术专家周志伟。另外,周志伟也将会在 9 月 10 日举行的 CNUTCon 全球运维技术大会上分享相关话题。
InfoQ:针对新时代的运维,目前有三个比较火的理解,分别是 DevOps、SRE、AIOps,你是如何理解这些理念的?
周志伟:DevOps,我认为是让研发参与 Ops 的运维活动,为自己负责的应用生命周期负责。在 DevOps 理念中,开发不是说写完代码然后交付就完事了,同时,他也要对线上的运维负责。对于互联网商业公司来说,我认为推行 DevOps 是对客户的尊重,也是对稳定性负责。因为研发人员能更快的解决由于运维过程出现的问题并修复,更高效准确的参与和修复线上问题,从而提升用户体验。当然现在的应用过于庞大、依赖过于复杂,单纯的让 Ops 团队运维很难做到万无一失。
在 AliExpress,我认为 SRE 是一个组织,它为网站可用性买单。SRE 由多位领域专家组成,可以解决生产环境发生的各种问题。我们通过大数据分析发现网站问题或者可能存在的风险,当问题发生时能快速有效的止血,恢复问题,同时又有一套工具体系能定位问题的根因。当然这个组织会制定一套围绕稳定性机制运作的规范,让大家来遵守。
AIOps,我觉得 AliExpress 现在走的路应该是往这个方向靠的。现在 AliExpress 正在做的是通过大数据驱动 SRE,把 SRE 关心的系统信息、访问信息等数据进行模型计算,通过机器学习进行问题识别和诊断,这个过程我认为就是 AI 的过程。问题识别和诊断之后会给出一些自动恢复问题指令,机器再通过实时数据检测指令的有效性,符合预期,继续执行更大范围的恢复,直到全面恢复。如果不符合预期则会尝试其他恢复手段。这套体系还在实验和摸索,从方案和部分实验上看是可行的,已经贴近人的判断甚至有些方面更客观。但也有很多不足之处,这取决于算法模型的准确性。我想这是我们要走的路。
InfoQ:AliExpress 是什么开始实践 SRE 理念的?可否介绍下目前你们的一些基本情况?
周志伟:AliExpress 的 SRE 是 2016 年开始摸索的,核心思想是分层治理,在最重要的一层用红线确保实施到位。
在红线的基础上建立一系列配套规范(包括监控规范、发布规范、线上运维规范等等),让全员参与学习。
建设 SRE 运作体系(故障演练、作战演习、快速响应),让我们的 SRE 工具、团队成员在平时都能得到基本的训练,确保在问题发生时都能在最短的时间恢复(实时也证明通过日常的作战训练非常有效,响应速度以及对于工具的信心)。
这些基础的保障之外我们会更多的参与基础数据采集和分析,通过大数据的方式运作 SRE,通过大数据发现更多维度的问题,使用损失最小的方式恢复问题,或者说是通过更有效的手段恢复问题。特别是面对国际复杂互联网时,尤其需要通过大数据来帮助定位是哪个国家哪个地区出现的网络瘫痪。
InfoQ:你认为 SRE 主要解决了 AliExpress 哪些问题?
周志伟:提高 AliExpress 的可用性,事实也说明了这一点,这个组织让整个 AliExpress 多了一个横切面去保障,大家相互了解互相学习,解决的不仅仅是线上问题,我认为是预防了很多线上问题发生的可能。同时 SRE 通过大数据的方式进行问题的发现,以及解决。特别是国际互联网的问题上,我们有多种异地多活和优化机制,更大力度的解决早些年碰到国际网络问题无从下手的尴尬局面。
InfoQ:可否介绍下 AliExpress 的 SRE 方法?
周志伟:首先,我们有 KPI 核心红线,从组织的角度去确保实施到位,解决了因为有工作量而不执行的难题。
然后,我们有稳定性规范,脱离规范很多事情无从下手,再多的防御手段也无法防御来自不遵守规则的破坏。
再者,我们在统一环境标准,应用标准,日志标准上做了很多工作,这对 SRE 的标准化运作帮助很大。在标准化的前提下,很多自动化工具都可以顺畅的开展。
随后,对于 SRE 组织来说,我们会有常态化的训练,SRE 成员的应急作战训练以及 SRE 恢复工具的训练(通过故障模拟等手段确保工具的可用性)。
最后,大数据采集,利用大数据驱动 SRE,工具的完善配套,让整个 SRE 体系智能化起来。(同样用故障模拟的方式训练大数据模型的准确性)
从两个维度推进 SRE 的进步,一个是培养研发人员的“SRE 素质”,另一个就是训练我们的工具,在需要时不掉链子。
InfoQ:可否介绍下你们的分层自动化实践?
周志伟:我们的分层自动化有几个切面,从研发过程来看:
研发阶段:有持续集成的单元测试保障方法粒度的质量。
测试阶段:有接口测试保障接口粒度的质量,然后集成测试确保一套逻辑的完整可靠,当然也会有用户体验式的进行交互类的 UI 自动化测试。
发布阶段:有预发布自动化,针对 UI、接口层的自动化保护,对上线版本的质量保护。
生产阶段:有线上监控、SRE 大数据分析进行问题的跟进保护,出现问题自动报警。
这一套自动化过程是针对整个研发生命周期和线上运维生命周期的,分层自动化越早介入,风险越低。
InfoQ:在 CNUTCon 全球运维技术大会上,你将会为大家重点分享哪些技术点?
周志伟:简单来说,主要有以下几点:
全球网络体系复杂,互联互通问题诸多,如何应对由此带来的网站可用性问题?
国际架构体系下,全球物理距离使得网络传输时间成为技术难点之一,如何解决可用性和提升全球用户体验?
如何实现全球多 IDC 下的异地多活?
全球多 IDC 下的数据一致性问题。