专访蚂蚁:这群技术排头兵,如何做好底层开发这件事?| 卓越技术团队访谈录

百家 作者:InfoQ 2022-07-13 15:08:58

作者 | 褚杏娟

这是一支云原生基础设施的研发团队,他们想要研发出一整套云原生架构组件,让企业没有顾虑地专注在业务开发上,PaaS、Service Mesh、定制硬件等离业务较远的工作是他们的。这就是蚂蚁集团的可信原生团队。

“我们工作做得越好,上层应用就可以拓展更多,非基础设施开发和基础设施开发人员的数量比例可能就越高。”蚂蚁资深技术专家、Kata Containers 共同发起人的王旭说道。基础设施的研发有什么难点?跟业务研发比有什么特点?这次我们采访了可信原生团队中分别负责中间件、容器云和可信技术的资深专家,为我们介绍他们在做的事情和一些思考。

中间件 Mesh 化打磨

蚂蚁的中间件是随着业务架构一起演进的。

蚂蚁的架构大概经历了如下的变化:2003-2005 年的单体式架构、2006-2009 年的微服务架构、2010-2013 年的单元化架构、2014-2017 年的云金融架构和 2018 年至今的云原生架构。

架构演进的背后是越来越多、越来越复杂的业务。而中间件可以追溯到 2009 年支付宝的架构。彼时,蚂蚁还没有从淘宝分拆出来,支付宝的第一代架构因此受淘宝影响很大。2014 年,蚂蚁集团正式成立,同时开始筹备网商银行,想要成为云上的第一家银行。这意味着整个支付宝的架构场景从单纯的交易转向了更广阔的金融业。

SOFA 是蚂蚁集团自主研发的金融级分布式中间件,包含了构建金融级云原生架构所需的各个组件,如服务网格、Service Mesh、消息中间件等。经历了模块化、服务化和单元化后,SOFA 团队为第四代 SOFA 新取的名字叫 SOFAStack。

蚂蚁集团高级技术专家宋顺就在这只负责 SOFA 中间件的研发团队里。在宋顺看来,金融级中间件需要具备安全、稳定、可靠、高效等特征,具体包括:

  1. 服务需要具备高可用的能力,至少同城双活、异地冷备。蚂蚁通过注册中心的机制实现同城里不同机房的服务互通。

  2. 服务需要具备较高的扩展性来应对流量剧增。蚂蚁选择单元化方式实现,比如将流量打散,按照用户 ID 做划分,不同地区的用户选择特定地区的机房来维护等。

  3. 数据具有可靠性和强一致性。对此,蚂蚁引入了分布式事务等技术,确保不同机房的交易同时成功或失败。

  4. 需要实现秒级监控能力,可以很快应对流量突增的情况。

如今,SOFAStack 已经进入第五代的研发阶段。

SOFAStack 产品布局

根据设想,蚂蚁的下代技术架构或将以 Mesh 化为核心,因此可信原生团队希望将原来所有的中间件能力都重新打磨。SOFAStack 也早已开始积极拥抱和布局 Mesh。比如,由于 Service Mesh 由控制面和数据面组成,因此蚂蚁分别进行了两个开源项目 SOFAMesh 与 SOFAMosn 的研发。

SOFAMesh 是 Service Mesh 的控制平面,由 Istio 分叉而来,并根据内部需要做了功能补充、优化和改进。不过,在回溯贡献给 Istio 后,宋顺表示该项目会回归社区,未来不再单独维护。

MOSN 则是一个用 Golang 写的数据平面。根据计划,MOSN 担负起承载所有网络中间件能力的责任,这是一个需多部门参与、时间跨度很长的大项目。但由于已有的 Istio 是 C++ 写的,蚂蚁内部需要花费更多的人力物力去做研发,最终决定基于 Golang 做了 MOSN。

“技术越底层,面对的事情就越复杂,我们做任何事情也会越难。”宋顺说,“比如,如果要进行整体的 Mesh 升级,蚂蚁面对的是数十万核机器的改造,这对团队来说并没有多少经验可以借鉴。当没有可参考的东西时,只能用新的方式解决。”但宋顺也表示,创新需要周期,落地过程也会相对缓慢,尤其是对于应用规模较大的企业。

在蚂蚁内部,技术概念并不决定着其是否会被采用。这体现在了蚂蚁对引入 Serverless 的谨慎态度上。

“Serverless 概念很大、也很好,但怎么能让它在这个体系下发挥作用、产生真正的价值,是需要探索的,而不只是说有了一个新技术、新概念就要直接用了。”

在宋顺看来,Service Mesh 解决的更多是基础设施和业务研发解耦问题,这比较容易普及。而 Serverless 不只是一种技术。“团队希望 Serverless 能带来整个研发流程、研发模式的改变,以此提高研发效率,但这个耗时是非常长的。”

目前,经过两年多时间的打磨,蚂蚁的 Serverless 产品已经完成了第一阶段的落地和推广。SOFAServerless 在内部接入了 700 多个 Java、nodejs 应用,基本涵盖了蚂蚁所有业务线,支撑了 1 万多次完整的生产研发迭代。

随着业务更加多样,不同业务可能分布在不同的云上。但不同业务的合规要求不同,相互之间还需要既独立、又互通。这种形势下,如何做好架构支持,是摆在蚂蚁面前的重要挑战。

为此,宋顺表示,目前团队在研发一套名为“云间件”的产品,旨在屏蔽业务和云之间的细节,用户只需要做好开发,而无需关注是否在不同的云上。

安全容器的进化

云原生体系里,容器为软件系统提供了基础的运行时环境,目前已经成为实际上的应用交付标准。

2014 年左右是容器技术的鼎盛时期,但由于隔离性差等原因,安全一直是悬在开发者头上的一把达摩克利斯之剑。StackRox 今年初的报告显示,55% 的受访者出于安全考虑,推迟了将 K8s 应用程序部署到生产环境中。

2015 年时,音速神童抓住了容器和云的风口,开源了基于虚拟化技术的容器引擎 runV。2017 年 12 月,在与英特尔的 Clear Containers 合并后,意在统一虚拟机(VM)安全优势与容器速度和可管理性的 Kata Containers 诞生。

2019 年,音速神童的创始人赵鹏、王旭加入蚂蚁,扩充了其在基础设施领域里的人才版图。至今,Kata 已经做了两次重大演进,现在到了 Kata 3.0 版本的紧张研发时刻。根据王旭的介绍,Kata 3.0 主要有以下三个方面的改进:

  1. 更多 Rust 的实现。Kata 之前用 GoLang,在改用 Rust 实现 agent 后,占用内存从 11 MB 下降到约 1 MB。Kata 希望未来所有组件都可以统一用 Rust 来编写,届时 Kata 的运行时环境会从原来的两个进程会统一成 Rust Kata Runtime,运维、内存开销等得到极大精简。

  2. 引入镜像加速功能。容器里的分层存储在删除文件时会造成文件冗余,另外容器重启时也会造成很多浪费。所以,Kata 3.0 引入了容器镜像加速项目 Nydus。

  3. 机密计算等的支持。实际工作中,许多用户也会不信任容器提供商,不希望自己容器里的内容被容器提供商窥探到。因此,Kata 3.0 引入了机密计算。

“3.0 版本里有些东西是确定可以加进去的,有些东西只是有可能,也可能会等到 3.1 版本来完全实现。”王旭说。据悉,Kata 3.0 将在今年底发布。

在王旭看来,一个相对中立的开源社区会对正确性方面有一些小洁癖,不能为了赶快上线而在质量上妥协。

“我印象里,当年 8 月初做的第一个版本,一直到 10 月末才最终合并进去。当时的架构委员会给开发人员做了很多工作,希望先保证核心功能的正确性,不足的地方可以放到后面版本修补,尽量不要将时间线拉长,影响其他开发。尽管如此,大家还是在核心质量方面没有松口。”

Kata 的技术演进路线主要由开源社区、上游社区反馈和其他参与方共同完成,所有开发也会在开源社区同步。

开源这件事儿

无论 SOFAStack 还是 Kata ,都选择了开源,实际上,蚂蚁的项目越来越多地在相对成熟后选择开源。

开源产品更容易获得开发者的信任,且借助开源社区的力量,激发创新,产品可以获得原来设计方向之外的新场景,丰富产品功能。另外,社区化的运作方式会给产品更好的协作和管理机制,不容易被单一场景、单一用户和单一贡献方所影响。

“很大程度上,开源软件比很多互联网公司内部的产品,有更好的规范性和更好的运作流程,因为社区化的开源软件对整个产品的正确性有更高的要求。”王旭表示。

而在宋顺看来,技术要变成产品,就需要跟整个开源体系做好融合。宋顺团队一直提倡技术产品化、产品商业化,闭门造车既无法融入生态,也无法享受到生态红利。“通过开源跟开发者沟通、与其他社区协作,可以使整个产品体系融入开源生态,保证路不会走偏。”宋顺说道。

商业化角度考虑的另一点是,企业使用产品时总是希望自己的研发能更快上手,而产品开源能够帮助行业新人、甚至在校生更好地学习技术,也是人才储备的另一种方式。软件开源,对安全也提出了更高的要求。目前最受关注的就是软件自身的安全问题和供应链安全问题。

在王旭看来,很多开源代码带来的漏洞,实际上是不完善的流程导致的。因此,运作良好的开源社区要有完善的安全响应机制或团队,来处理安全事件。

“质量再好的软件也难免有漏洞,但是出现漏洞之后怎么处理、有没有相关流程,这是不同项目间的一个本质区别。Log4j 事件之后,我们在做关于开源软件的探讨时,都会特别提到安全问题,这是不可忽视、且必须严肃处理的。”

实际上,开源软件的安全需要社区协作处理。发现问题后,开发者可以联系上游厂商或开源社区,触发相应的安全响应流程。

另一种更复杂的问题就是开源供应链安全。

无论开源还是闭源,大公司都会考虑供应链安全。不同的是,很多开源软件的版权持有方不是一个公司或者一个法律实体,而是个人作者,这对开源软件的重新再分发会造成很多限制。这也使得企业经常面临某个开源软件的部分版权不是自己的,不能随意关掉或改变许可、使用的某个开源软件一旦更改许可证,那之后的版本也将无法使用等问题。

因此,企业开发者都希望能得到源码,不过度依赖厂商。王旭认为,安全的开源供应链体现在开源项目对社区有较强的管理能力、可以做到自主可控,并对版权有较强的维护能力等。

隐私安全怎么做?

尽管越来越多的企业选择了上云,但由于担心数据被看见或丢失,企业对于重要、敏感的应用还是选择本地运行。另外,多个数据方(通常为竞争关系)越来越多地将数据汇集到云上进行人工智能训练等,但都不想自己的数据被其中一方拿去。因此,隐私增强技术越来越被重视。

在众多的隐私增强技术中,蚂蚁在基础设施侧选择了兼顾通用和高效、能单独使用也能跟其他技术有机结合的可信执行环境 (TEE) 技术。

TEE 提供了一个由硬件支持的、可以被远程证明真实性和完整性的“黑盒子”。这种软硬结合的方式可以对上层应用进行安全加固、对数据流通业务性能进行加速,同时将上层应用软件、业务和硬件结合,形成软硬件产品。

但由于 TEE 中缺乏像 Linux 这样的“操作系统”,一些流行的 AI 训练框架、数据处理框架等很难在“黑盒子”里跑。所以,可信执行环境在生产中并不好用。如果使用 TEE,企业需要做大量的改造,甚至很多应用连改造也无法完成,这导致 TEE 无法大规模使用。

蚂蚁要想更好地构建自己的隐私保护能力,就需要攻克这一难题。2016 年,闫守孟就开始思考如何提高 TEE 软件的开发效率。2019 年,闫守孟加入蚂蚁后创立了机密计算团队,并发起了 Occlum TEE OS 项目,致力于大幅提高 TEE 的易用性和安全性。2020 年,机密计算团队发表了被机密计算业界和学术界广泛认可的论文《Occlum: Secure and Efficient Multitasking Inside a Single Enclave of Intel SGX》。

“最开始没有投入太多的资源,后面逐渐有了一些东西后,大家觉得还可以后才加大投入。”这篇论文就是重要的阶段性成果。

Occlum 使用了安全性较高的 Rust 编写,支持多种文件系统,并提供了类 Linux 的开发体验和类 Docker 使用体验。2020 年,蚂蚁将 Occlum 开源,Occlum 同年即成为 CCC 机密计算联盟中第一个由中国公司发起的开源项目。目前它已在蚂蚁大规模部署,并为微软 Azure Cloud、阿里云、众多开源项目、隐私计算公司采用。

进入产品化阶段

“对 Occlum 来说,论文发表之前可以称为探索阶段。论文的发布意味着探索有了初步的成果,之后我们便开始结合业务做产品化了,到今天跟云原生研发流程有了很好的结合”闫守孟说。

当时,复杂多样的 Enclave 硬件平台带来很大的学习和使用负担,蚂蚁希望有统一的 Enclave 抽象,并支持更加自主的远程证明控制。这就是蚂蚁结合虚拟化技术和 TPM 技术的自主 TEE 平台 HyperEnclave 的由来。

不过,HyperEnclave 项目的风险要比 Occlum 更大。“Occlum 所基于的 SGX 技术,我之前在英特尔是有多年的积累的。但这个项目是全新的,而且用到的虚拟化和 TPM 技术并不是我原来最擅长的部分。关键是我们国家在底层技术上的人才储备是不足的,市场上相关人才非常少,不好招 ”,闫守孟回忆道,“幸好,对底层有兴趣,比如有志做中国的操作系统的人还是有的,我们就招非科班出身、但有情怀的工程师,然后边做边学、边学边做。”

基础技术的投入比较大,但生效周期又很长,有人等不到就会离开。“三年来,遇到不少技术和非技术的挑战和波折,不少人没能坚持下来,选择了退出项目甚至离开公司。HyperEnclave 项目多数时间只有 3 个人,从开始到现在竟然有 4 个人中途退出。” 闫守孟感叹道。

19 年下半年,闫守孟判断自主可控将变得越来越重要。实际上到了 20 年左右,企业们都在加紧投入做自主可控,HyperEnclave 的价值突然变得很大,也是这个预判让 HyperEnclave 项目的主要人员坚持了下来。他们将 HyperEnclave 的信任根托管到像中国金融认证中心(CFCA)这样的国家信息安全基础设施,更进一步增加了权威性和自主性。

目前,HyperEnclave 作为可适配国产 CPU 且兼容 SGX 生态的自主通用 TEE 系统,已经在蚂蚁内部和外部客户的关键场景实际部署。三年技术成果凝聚成的学术论文也于近日收到了系统领域顶会 USENIX ATC'22 的录用通知。“今天,坚持下来的同学们,都成为了虚拟化技术、可信计算技术、机密计算技术领域的顶级专家。他们耐住了无人区独行的寂寞,顶住了短期利益的诱惑,终于守得云开见月明!” 闫守孟非常感慨。

Occlum 和 HyperEnclave 针对的是单个计算节点,但是云原生领域有很多基于 Kubernetes 的大规模集群,并且这些环境也不适用于机密计算。闫守孟团队开始了将 Kubernetes 和 TEE 结合起来的 KubeTEE 项目。KubeTEE 可以让用户进行大规模集群远程证明服务而无需关心 TEE 细节,集群密钥分发和同步服务让 TEE 也支持分布式计算。

Occlum 让单节点 TEE 更容易使用,KubeTEE 则从单节点扩展到多节点和集群,HyperEnclave 则提供了自主通用 TEE 平台,三个项目结合在一起形成了蚂蚁开源的 SOFAEnclaves 技术栈,解决了机密计算目前实际应用中的三大难题。

目前,蚂蚁将上层应用软件与业务结合,还形成了一系列的软硬件一体化产品。“将软硬件产品通过系统层面深度性能调优,并经过最优的兼容性对接匹配测试,形成一套可以直接部署的完整解决方案。这样我们交付给客户的是基本上上电即用,无需额外的部署 、调优 、兼容性测试等的一套完整产品,使得客户部署和运维均非常容易,让客户可以更加专注到业务本身上面来。”蚂蚁集团高级技术专家孔金灿介绍道。

“我们非常希望能够打造一个默认可信、安全的基础设施。但是可信安全体系的根基一定是硬件。所以我们在几年前就开始面向数据中心、边缘计算与 IoT 的软硬件产品研发。包括芯片、板卡、服务器、一体机等诸多产品。为可信原生夯实根基。”

孔金灿表示,在可信原生的技术体系里面,软硬件结合主要解决三个方面问题。

一是安全加固,比如我们做了 Blade 可信根芯片与密码芯片,将可信启动、可信度量、密钥保护等进行了硬件封装,并取得了足够的密评资质。

二是性能加速,比如我们的密码卡与隐私计算加速卡,对频繁使用的密码算法进行硬件加速,能够有效提升应用的性能,并且进而降低大规模实施可信原生技术体系所需要付出的成本。我们通过软硬件结合的方法,利用 FPGA、ASIC 芯片,加速了国密算法、同态加密、隐私求交等非常耗时的计算。

三是能够形成很好的软硬结合的产品,帮助到业务在用户侧的落地。我们采用软硬件结合的手段,研发了可信原生软硬件底座,内置了可信原生团队自研的硬件与软件产品,可以将我们的可信原生技术整体输出。基于此,我们再结合蚂蚁业务应用,先后推出了摩斯隐私计算一体机、区块链一体机、OceanBase 数据库一体机等产品,取得了很好的市场反馈。

目前蚂蚁已经形成了包括底层可信软件栈和可信硬件部件等一套完善的可信安全软硬件底座,具体内容可以参考见下图:

“开放,担当和高标准”

SOFABoot、SOFARPC、SOFARegistry 、Seata 等用来构建稳定、可靠、高效的分布式系统;MOSN、Realtor 等侧重云原生场景,用于实现业务应用和基础设施解耦;而 Occlum、HyperEnclave、Kata 等更侧重安全,为云原生场景提供更安全的运行环境。可信原生团队负责很多项目,各个项目分工不同,但组合起来又是一个有机整体。团队的设计上始终保持开放性,确保每个组件都有其他开源组件做集成和替换。

可信原生团队的文化可以概括为三个词:开放,担当和高标准,这是由技术设施研发的性质决定的。

首先,基础设施研发需要探究技术的本质,很多技术需要经过很多的讨论后才会更好地长期地发展。其次,底层组件支撑了全栈的业务,写错一行代码都会造成极其严重的后果,而一旦出现问题,也要能够站出来扛着压力解决。因此,基础设施研发要有挑战的勇气和能力。最后,基础设施不仅服务自己,对整个行业发展都会产生一些推动,这背后的支撑就是极致卓越的技术。

“每个应用单独优化的代价很高,会耗费大量人力和物力。而基础设施研发团队把核心的东西抽象出来,就只需要维护和优化少数几个软件,大部分情况下比让每个应用团队自己优化效果要好。”王旭说。

企业研发离不开业务,但基础设施的研发更多时候是自己去制定研发计划,这个计划可能跟具体业务没有关系。所以,基础设施研发的成果有时候衡量起来很难。

但就像闫守孟说的,“有些东西不是业务提出来后就能很快做出来的,所以我们必须有自己的洞察,能够比业务提前做一些,而不是跟着他们的节奏走。”这支承担着探索先进技术任务的团队,作为先锋,仍将继续前进。

嘉宾介绍:

王旭:蚂蚁集团可信原生技术部的资深技术专家、木兰开源社区 TOC 成员,也是开放基础设施基金会顶级项目 Kata Containers 的联合发起人。在加入蚂蚁集团之前,他是安全容器领域的开源创业者,他们在 2015 年开源了基于虚拟化技术的容器引擎 runV,在 2017 年 12 月,他们和 Intel 一起宣布 runV 与 Clear Containers 项目合并,成为 Kata Containers 项目。

宋顺:蚂蚁集团高级技术专家,Apollo Config PMC。在微服务架构、分布式计算等领域有着丰富的经验,2019 年加入蚂蚁集团,目前专注于云原生和微服务方向,如 Service Mesh、Serverless、Application Runtime 等。

孔金灿:蚂蚁集团软硬件高级技术专家,在数据中心包括计算存储产品,网络产品,以及软硬件一体机化系统架构有着丰富经验。加入蚂蚁后负责软硬件基础设施产品架构和产品,包括如金融云 / 数据库 / 隐私计算等一体化产品和系统。

闫守孟:蚂蚁集团研究员,蚂蚁隐私计算基础设施负责人。他领导了蚂蚁集团 SOFAEnclave(Occlum、HyperEnclave、KubeTEE 等)机密计算软件栈的研发,发起并主导了国内外多项 TEE 标准的制定。加入蚂蚁之前,他在 Intel 中国研究院从事基础技术研究,多项研究成果应用在 Intel 软硬件产品中。他在 PLDI、ASPLOS、ATC、ASE 等发表了多篇顶会论文,并拥有 30 余件专利。他在西北工业大学获得计算机应用技术专业的博士学位。

本文选自《中国卓越技术团队访谈录》(2022 年第二季),本期精选了微软 Edge、蚂蚁可信原生、明源云、文因互联、Babylon.js 等技术团队在技术落地、团队建设方面的实践经验及心得体会。本期电子书已经在 InfoQ 网站上线,大家可以扫描下图二维码下载,查看更多精彩内容。

《中国卓越技术团队访谈录》是 InfoQ 打造的重磅内容产品,以各个国内优秀企业的 IT 技术团队为线索策划系列采访,希望向外界传递杰出技术团队的做事方法 / 技术实践,让开发者了解他们的知识积累、技术演进、产品锤炼与团队文化等,并从中获得有价值的见解。

访谈录现开放长期报名通道,如果你身处传统企业经历了数字化转型变革,或者正在互联网公司进行创新技术的研发,并希望 InfoQ 可以关注和采访你所在的技术团队,可以添加微信:caifangfang842852,请注明来意及公司名称。

今日好文推荐

微软开始封禁商业开源:从 App Store 入手,7 月 16 日生效?!

迁移进行时,告别 GitHub 的时候到了?

腾讯安全回应数据产品线裁撤;马斯克称终止收购推特;拼多多“砍一刀”涉嫌欺诈案一审宣判 |Q 资讯

GitLab 技术选型为何如此不同:坚持用过气 Web 框架十多年、坚决不用微服务

点个在看少个 bug 

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接