2019年12月15日,蚂蚁金服研究员兼系统部负责人何征宇在OS2ATC 2019上分享了蚂蚁在金融级系统软件上的实践经验,以及对开源协做的理念和作法。如下为演讲整理:linux
我今天想和你们分享一下我在蚂蚁的一些工做,以及在金融级系统软件中需开源协做的探索和实践。数据库
金融行业其实是一个很是注重科技的行业,由于技术的价值能够获得很直观的展示,而后它是很是注重极致,很是追求技术的先进性的,技术上的先进性能够很快的转化为业务的领先性。安全
蚂蚁金服做为国内金融企业的领头羊,对于技术的追求是永无止境的。蚂蚁的梦想是服务20亿的消费者,1亿的全球小微经营者,这是一个很是大的愿景,而咱们相信只有不断发展的技术才能让这些不可能成为可能。例如咱们的310贷款能力,就是创建在一流的金融级大规模数据智能的技术能力之上的。服务器
那么咱们系统软件的挑战和作软件的压力是什么?若是用一句话来总结的话,就是在海量数据压力下的服务连续性保障和资损风险监控。首先是要达到一个很是高的可用率,这个跟咱们常说高可用系统,例如电信级系统不同,这个后面除了5个9以外,还有金融机构很是严格的一些要求,好比100%保证资金安全,这是蚂蚁金服一直在追求的能力。app
蚂蚁金服也确实在各个系统软件的方向上追求极致。首先从数据库的角度来说,OceanBase 在 TPC-C 评测中打破了 Oracle 多年的垄断,这一结果是 OceanBase 团队创新的实现了分布式关系数据库,而且获得了专业评审员的承认。其次是安全计算,咱们参与了 Occlum 可信执行环境开源项目,而且与清华展开学术合做,相关文章已经被 ASPLOS 收录,也参与制定国内第一个安全计算的标准。而后是云原生方向上,咱们自研了 SOFAMesh 并率先经过今年的双十一进行了大规模的验证。最后是安全容器技术,咱们的 Kata Containers 是 OpenStack 顶级开放基础设施项目。分布式
接下来我想讲一些咱们的观点。我一直以为,系统软件是一个手段,它并非一个目的,由于咱们必定要搞清楚的是咱们系统软件究竟是在作什么。右边这个图颇有意思,这是一个楼梯,可是这个楼梯是无法使用的,若是咱们作系统软件是为了作而作,有可能作出来就是像这个楼梯同样,目标达到了,可是没有任何价值。ide
任何一个基础软件、系统软件,好比一个新的操做系统,通常来讲都是花销巨大的,并且软件写出来总有一天会淘汰的。咱们到底作什么样的系统软件?我相信必定是为了解决什么问题而作,这是咱们系统工程师最须要考虑的事情。性能
接下来,我想结合我本身的一些经历,分享一下咱们是如何思考和利用系统软件解决问题的。区块链
第一个案例是你们正在作的容器化所带来的问题。在云原生大趋势下,你们正在将IT系统迁移到容器里,例如从 OpenStack 迁移到 Kubernetes,这里实际上有一个很大的问题,也就是从虚拟机迁移到容器时,咱们系统的隔离性,不论是从安全仍是性能方面来讲,都是有降低的。spa
蚂蚁金服正在作的安全容器,就是为了解决容器的隔离性问题,它的原理也很好理解。传统容器的隔离性实际上是依赖 linux 自己,包括 cgroup 和 namespace 等技术,可是应用仍是直接经过系统调用访问内核。安全容器作了一个中间层,利用新的内核,hypervisor 等等技术,让系统调用能够不用依赖底层的 linux,而安全容器自身对 linux 的依赖是彻底已知和固定的,并且小到能够作很是详细的审计,从而极大的下降主机被攻破的风险。
安全容器能够有效的保护主机,可是,金融业务自己仍然须要更强的隔离保护。
所幸的是,最近兴起的机密计算(Confidential Computing)技术可以很是有效保护应用程序。它的本质其实上就是在你们手机里应用很是普遍的 TEE 技术,可是随着 Intel SGX 这样的技术的发展,让每一台服务器支持TEE都成为可能。
TEE,如今通常也称为 Enclave,能够进行运行时的双向防御。简单说,应用程序用它的话,能够不相信底层的OS等软件。可是在 Enclave 技术目前存在一些问题,阻碍了它在实际生产环境中的应用,包括:
第一,须要改写应用,由于可信执行环境里面没有内核和基础库,因此无法把应用直接在 Enclave 中执行;
第二,须要分割应用,须要把业务程序划分为 Enclave 内和 Enclave 外的部分;
第三,未集群化,与客户端场景不一样,Enclave 中的应用如何 failover,容灾也是阻止其在数据中心中大规模使用的一个缘由。
因此说如今基于 TEE 的应用特别难作,基本上如今作的就是纯运算的一些东西,由于 IO 都解决不了。这里就引出来咱们的第二个案例,也就是咱们为何要作 Occlum。
Occlum 是咱们今年聚焦攻关的一个 Enclave LibOS,如今在世界上来讲应该是最早进的一个,使用它能够1分钟内将 Tensorflow Lite 移植到 Enclave 里面。这里我想说明的是,咱们不是为了作系统而作系统,咱们作系统是为了蚂蚁的业务例如共享智能,区块链等可以更好,更快的拿到机密计算这一新技术的红利。
咱们讲开源,像上面提到的系统软件同样,开源也是一种手段,不是目的。这里给你们分享一些咱们的思考。
首先给你们科普加拉帕戈斯综合症,这个其实能够对应到咱们的系统软件,若是咱们的系统软件从头至尾都是闭门造车,那么它必定会根据当时的现状加入妥协的部分,而且这种妥协会愈来愈多,最后面对开源开放的系统软件是没有竞争力的。
因此我以为,开放的生态是系统软件保持长久活力的关键。上面的图片里面,左边是在水族馆里面的杀人鲸,它们的背鳍永远是弯着的,显得无精打彩,右边是在开放水域的鲸鱼,它们的背鳍就是直的。因此,系统的生态是很重要的。我不想看到的是,不论是由于国家的政策也好,或者什么别的因素也好,咱们就在小池塘里面互相吃来吃去的,最后一个大鲨鱼过来所有被干掉了。
从蚂蚁金服的角度来看,咱们必定要保持开放,也但愿有很是多的良性竞争。中国的武侠必定是有少林和武当的,若是都是一个流派那就不行了,百花齐放,百家争鸣的状态才是最好的。
最后总结一下蚂蚁金服系统软件的发展思路,首先它必须知足业务竞争的需求,而后咱们会和顶尖学术机构一块儿合做创新,而且积极参与开源社区,承担应有的社会责任。
值得一提的是,蚂蚁金服系统软件上的学术合做也比较普遍。咱们和国内外的专家学者,包括清华大学,上海交通大学,浙江大学,UC Berkeley 都有合做项目,也拿到了不错的成果,例如上面提到的 Occlum 项目就是跟清华陈渝老师合做的。在这里,我想带出我此次分享最重要的目的,也就是很是但愿和在座的各位学术界和开源届的同行能有更多的交流和沟通,达成更多的合做,谢谢你们。