NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

OPPO 全球混合云建设之路

  • 2023-02-28
    北京
  • 本文字数:6197 字

    阅读完需:约 20 分钟

OPPO 全球混合云建设之路

2023 年 2 月 5-7 日,QCon 全球软件开发大会在北京举行。OPPO 云服务中心高级总监韩建飞分享了题为《OPPO 全球混合云建设之路》的演讲,与现场开发者共同探讨 OPPO 在混合云领域的探索与实践,点击此处下载完整幻灯片。本文为韩建飞老师的现场演讲实录——


大家好,我今天分享的主题是《OPPO 全球混合云建设之路》。


众所周知,OPPO 是一家智能终端科技企业,我们今天将从用户视角出发,和大家分享 OPPO 的全球混合云建设和使用经验。


今天的分享会分为三个部分:首先介绍一下为什么 OPPO 需要混合云,其次我们会分享 OPPO 混合云的产品建设实践,最后是未来的发展规划。

全球化背景下的混合云需求及实施策略


作为一家全球化的企业,OPPO 在国内与海外均有业务。为了更好地支撑 OPPO 全球化的业务布局,混合云应运而生。


在去年的 OPPO 未来科技大会上,OPPO 发布了三大技术战略之一的“安第斯智能云”。作为智能终端科技企业,我们做的并非传统意义上的 IaaS、PaaS 或 SaaS。安第斯智能云是服务于个人和家庭开发者的一朵垂直云服务,通过云的能力,让终端变得更加智能。


当前,每个人拥有的终端设备数量日益增长,除了手机之外,还有手表、平板、手环、电视等。通过云赋能智能终端行业产生新的增长点,这是安第斯智能云发布和思考的关键方向。


OPPO 在全球有逾 5 亿用户,如何在全球范围内更好地为 5 亿用户提供技术支持,也是安第斯智能云落地的重要原因。

OPPO 云服务的业务形态


简单介绍一下 OPPO 的业务,包括商店、主题、游戏、浏览器、视频、锁屏、家居等等,主要以互联网业务为主。OPPO 的业务形态多种多样,这些业务可能只提供给部分国家或地区,里面会涉及到安全隐私合规等,这些特征与 OPPO 混合云策略息息相关。



除此之外,我们还服务于 IoT 与终端,比如手环、手表、电视等,OPPO 也有自己的芯片业务,同时也为手机提供服务。OPPO 底层的网络、性能、多媒体、AR 相关的业务,以及前端、后端、验证、算法、系统编译等芯片业务,甚至是 IT 的业务系统,都是在 OPPO 全球混合云上运行的。这是我们的业务场景。

全球化为什么依赖混合云


为什么 OPPO 要依赖于混合云呢?从目前的情况看,国内的基础设施建设可以说是相当不错,但是在海外一些国家或地区,存在着很多的业务不确定性,我们着重考虑的点包括:

  • 从智能终端科技企业的角度出发,边缘云是 5G 时代比较关键的竞争因素

  • 我们不可能在全部国家或地区自建基础设施,建机房、服务器,搞网络,总体来说投入太大。在海外有一些较小的业务,可以依托公有云的能力快速扩容和全球化

  • 在国内的情况下,私有云是成本和核心技术的保障

  • OPPO 混合云拥有统一的调度和多云管理能力

  • 安全隐私合规相关,很多互联网公司都提出海,在出海中更多是安全隐私合规的相关问


基于以上 5 点考虑,OPPO 混合云具有如下关键要素:

  • 全球发布体验一致的云

  • 基于多云管理的云,在云上构建一套技术架构和基础设施

混合云的目标与实施战略


这是 OPPO 混合云的目标:“晚于战略,先于业务”。什么是晚于战略呢?如果公司决定开拓海外市场,战略定下来之后我们就要开始行动。先于业务,就是在业务开始部署前,我们的云在那边已经准备好了。


在 OPPO 混合云策略设计之初,我们希望可以做到:统一管理;安全合规;一致体验;统一架构;敏捷灵活。


第一,统一管理。一是一个云管理多套异构的云资源,不管是 AWS、GCP、Azure 或者是阿里、腾讯以及华为等诸多的云厂商,我们可以通过统一的管理界面管理异构的资源。二是实现公有云无缝切换,迁移成本逐步降低。这里主要指的是计算和存储之间的网络,以及存储本身的迁移,对于我们来说是有一定成本的。三是达到海外资源负载阶段性高达 37%。我们需要尽可能地提升公有云的资源利用效率。海外的公有云如 AWS 成本较高,降本增效是我们的主要目标。


第二,敏捷灵活,一是主要利用公有云按秒级弹性计费的特点,弹性地使用公有云的资源;二是支撑大规模临时紧急的需求,如电商业务等,需要紧急快速扩容;三是海外快速开服,这个时间基本控制在一周之内,公司决定在哪个国家或地区扩展业务,我们就在哪个国家或地区相应的区域快速扩容;四是无关的基础设施交付周期,对于业务来说就是管好业务逻辑,我们提供已执行的体验;五是和公有云的合作,在国内常规的算力是自建的 IDC,负载基本能达到 80%-90%,自建机房的成本相对较低,尤其是 AI 对 GPU 的要求比较高,就将一些灵活的算力转移到公有云上。


第三,统一架构,就是混合云的基础架构一致。我们统计了一下手机版本不同的手机型号、不同的国家或地区、不同的配置,这样一个版本整体的软件包大概有一万多个版本。这一万多个版本需要考虑到云的复杂度,比如阿里云和腾讯云的区别,腾讯云和 AWS 的区别,AWS 和 GCP 的区别,对业务来说,如果以上版本的复杂度乘以公有云的复杂度,再加上语言的复杂度将是一个巨大的需求,我们的把目标是整个技术架构的一致性。


第四,一致体验。统一是架构交付,一致的业务使用体验和平台透明,降低技术的存在感。


第五,安全合规,安全合规隐私日益受到大家的关注,作为智能终端科技企业,我们必须保证安全合规,比如欧洲的 GDPR 要求核心的数据只能在本地保存,因而在混合云的建设过程中,尤其需要关注安全合规。

OPPO 混合云产品建设实践

安第斯智能云混合云平台管理


这是我们在 OPPO 智能云(大湾区)数据中心自建的有 12 万台机器的机房图。



底下一层是各个基础设施,往上走是计算、存储、网络这三个 IaaS 层的组件,再往上是中间件、数据库、安全、答案数据,更上一层是机器学习、数据产品、算法,旁边是运维和安全平台。


在这一过程中,OPPO 混合云的中间件、数据库所有能力都是在公有云上做的,我们主要使用公有云的四个产品,分别是 ECS 虚拟机、EBS 块存储、SLB 负载均衡和 S3 对象存储。

K8s 统一管理



这些都是底层的支撑,在此基础上,OPPO 构建了基于 K8s 的混合、编排、调度的一套能力,同时配合网络及存储,在部分场景实现了多租户,并在此上构建整个业务平台和运维管理服务。


值得一提的是,OPPO 混合云对 K8s 做了一些定制。OPPO 并非是一个完全的互联网公司,还有许多传统 IT 的部分,所以我们同时支持容器和虚拟机,当前我们所有的组件都是基于 K8s 来调度的,包括虚拟机。下面一层是 GPU、NPU,近期我们还自研了基于云原生的 GPU 虚拟化,上一层是 K8s 的版本,最上面的部分,一边是容器,一边是虚拟机,虚拟机之上还可以再部署容器。如果业务强要求合理,或是强安全性,我们在虚拟机里面跑,如果是一些内部的业务,我们可能就直接在裸机上跑 K8s 了。


总的来说,我们所有的应用都是在容器之内的,包括大数据的 Spark 和 Flink、中间件、数据库,包括应用网关都是运行在 K8s 之上的。从我们的使用角度来说,一是使用单一的云厂商容易被绑架,二是各家的云产品也有多样性,太复杂了。


面向第一点,如果平台可以实现多云管理,云上的许多产品包括网关、负载、计算、云原生产品等都是可以自由使用的,但是一旦熟悉了某个云厂商的产品,用户习惯是很难改变的,只能基于基础能力构建一套在公司内部统一的平台,不管底层是 AWS 还是阿里云,开发者用的都是你的平台,和底层公有云没有太大关联。这一布局和出海业务也有比较大的关联,公有云厂商也并非在各个地方都有布局,如何保障出海基础设施的完备性,就需要基于 K8s 进行统一管理。

弹性计算架构



这是 OPPO 混合云的弹性架构,底层架构和先前一致,包括 IDC 和公有云,上层是基础网络,计算和网络。上层有一个整体弹性伸缩的框架,这个框架并非仅限于在一个 K8s 集群内部的弹性伸缩,还包括在自建机房和公有云、公有云和公有云之间的弹性伸缩,当中需要配合的是存储迁移工具和同步工具,以保障整个弹性伸缩框架的一致。


第一,编译云、EDA 云和仿真云这三个场景,我们在内部叫 HPC,当中还包括机器学习的训练等,对机器的主频和规格要求比较高,所以我们可以做弹性伸缩。


第二,传统的互联网业务。


第三,机器学习,Notebook、Kubeflow 等。


第四,大数据,我们做了 spark-operator、YARN-operator、flink-operator、trino-operator,将 YARN 跑在 K8s 上,再通过 YARN 来调度整个大数据。


第五,运维平台。

敏捷弹性-弹性扩容


刚才我们讲到了敏捷弹性、弹性扩容。在线业务、大数据、机器学习和高性能学习四个场景,通过弹性伸缩,我们将内部无法支撑的算力调度到公有云上,好处是可以快速交付业务需求,其次是购买流程的服务较长,对于公有云厂商来说可以相互竞争,对业务而言可以实现无感交接,并在业务交付上尽量压缩周期。

资源弹性伸缩



这是资源弹性伸缩小的框架,主要分为几个单元:

  • 数据源

  • 触发单位,如何触发弹性伸缩

  • 计算单元,我们需要过滤掉一些指标,怎么弹性缩容,怎么弹性扩容,里面有许多坑,扩容比较好理解,但是缩容需要十分谨慎,我们会设置上限、下限等常规操作

  • 伸缩单元,垂直伸缩是基于事件还是基于故障,最终达到的就是资源的弹性交付

公私一体的混合网络架构



这是公私一体的混合网络架构,为了适配各种公有云厂商和自建机房,我们内部自研了一个叫做“NetHouse”的产品,除了没有开源之外,支持 IP、Ingress、VLAN 等,直播场景内部使用得较少,暂时不支持,我们会把 IP 分配的性能提得比较高。


基础网络和虚拟化网络有很多需要相互配合的工作,包括基础网络和 VPC 网络等,提供公私一体的混合网络架构,打通网络是后续工作开展的前提。


一致构建,全球分发



当前我们业务的构建主要是在国内,在这一部分我们做得相对简单,通过 CDN 或是 cache 的方式同步到海外的各个业务地区,和各个公有云专线打通,再从各个公有云内部的专线将数据同步到全球各个地区。

一致的可观测能力



基本上是日志和时序数据两个可观测点,区别在于受地缘政治和安全隐私的影响,如应欧洲 GDPR 的要求,个人隐私数据不能传回国内。从整体上看,我们的控制还是统一的,但在访问欧洲区域时,日志默认是无法查看的,只有从欧洲区域访问才能打开。


对于业务来说,无需关注是自建机房还是公有云,很多用户用公有云查询,有公有云的一套监控体系,我们基本都在这上面重建了,将时序数据库和日志服务,通过块存储和虚拟机的能力,或是通过 S3 的能力重新构建,基本上可以满足整体的需求。对接监控的需求可以做到比较好的、一体化的感觉,无论你位于那个区域,上层业务的开发人员对于堡垒机的体验也是一致的,对日志、时序数据监控发展的持续调用和可观测用户体感都是完全一致的。

敏捷弹性-GPU 混合云


GPU 也就是所谓的机器学习平台也是一样的,公有云只管底层的 IaaS 资源,我们构建了统一的 StarFire 机器学习平台,它会将 KubeDL、Kubeflow、Volcano 或者是底层的 K8s 都管理起来。除此之外,我们还做了 mGPU 虚拟化的产品,使得整个机器学习的 Serving 或 Training 服务对接公有云基本上是一致的。

标准的服务接口/协议一致的服务能力



不管是自建云还是公有云,协议接口均需要保持一致。基于 K8s 本身是一致的,有各种 Service 文件,机器学习整个行业中存储的接口,对象存储和 SI 也对齐了,基本语法都是差不多的。


在负载均衡的层面,我们实现了公有云的 SLB 对接服务,在内部我们通过 DPDK LB 搭建了负载均衡体系,将负载均衡的创建、域名解析的创建,包括整个容器网络的块存储、对象存储和时序数据库、KV 在公有云和私有云的差别,主要在于一个是 DPDK,一个是 kube-proxy,但是语法是统一的。基于此,业务对于公有云和私有云的体验可以保持一致。

统一的平台入口



这是统一的平台入口。对于业务来说,K8s 还是相对复杂,他们更多关注的是业务逻辑,所以我们搭建了一个控制平台,里面包括持续交付、弹性计算、数据库。对于业务来说,在控制台中可以选择公有云区域或自建机房区域,在业务选择区域后,部署将在这一平台上进行,除此之外,我们还提供快速的配置、迁移,除了语言包不一致,其它业务的快速配置迁移也提供同步工具,使得在不同国家或地区的配置可以快速迁移过去。


在安全隐私方面,我们采取一刀切的政策。对于业务而言,他们无需特别关注 GDPR 或是安全隐私方面的事情,平台会进行集中处理。

OPPO 混合云后续规划


OPPO 混合云发展到目前的阶段,在内部基建的层面已经完善得差不多了,在这一平台上,大概已经有 100 多个产品。那么对于我们而言,下一步应该做什么?在这里,我想从用户的视角,分析 OPPO 混合云可以做哪些事情。



OPPO 用云的时间相比于业内较晚,从 2019 年到 2023 年,OPPO 混合云一共经历了几个发展阶段:

  • 应用容器化,自动化部署和平台管理,最初是物理机,后续我们使用了比较多的策略,将原来的平台部署到容器上

  • 可扩展性,迁移到容器上之后,整体的可扩展能力较先前有所提升

  • 在实现可扩展性之后,我们开始打造容错性和弹性伸缩,打通从网关到后端服务到数据库,实现某段挂了之后自动摘除,数据库权限自动打通

  • 微服务架构的智能运维


从业务上云到混合云建设,再到生态构建,在过往的两到三年间,互联网行业蓬勃发展,我再简单介绍下,从云原生或是混合云角度,应当如何切入传统行业。


第一个场景,以芯片行业、仿真行业为例,它涉及很多前端、后端设计,如果用云端能力或是统一技术架构能力,如何为它提供较好的使用场景。为此,我们落地了一个名为 EDA 芯片云的项目,主要满足在芯片投产前弹性算力的需求,充分调度资源,优化整个平台的 CPU、内存的使用比例,降低公司成本。


在编译和芯片领域,我们也曾尝试 K8s、容器化的方式,但这条路是尝试了一下走不通。本质上来说,在互联网行业很多项目是开源的,它天然是云原生的,但是在传统行业,许多工具无法通过 K8s 解决,只能从虚拟化的角度解决。


先前我提到,很多公司是从虚拟化到容器,我们是从容器到虚拟化,是先做了容器,再回头看发现一些场景并不适用,虚拟化的效果更好一些,进行反向尝试,从而构建 OPPO 混合云的整体生态。


第二个场景是万物互融,OPPO 作为一家智能终端科技企业,我们想做的并不是公有云,而是通过云将万物互融场景下的用户服务好。原先一个人只有一台手机,但后来我们增添了很多设备,家庭里面也有很多设备,设备之间还会牵涉到连接方式。在设备与设备之间的同步和连接,主要通过两种方式落地,一是近场,通过蓝牙或是 NFC 等方式进行连接,如果你设定了一个出行时间点,在你也需要通知家人的时候,是否可以将这个信息同步到家人的设备上,让他也拥有同样的提醒。二是远场,主要是设备间的数据流转,当近场连接无法直接触达时,我们更多的是从云的角度看到这个问题。主要是通过云为设备间的互融提供比较好的通道和捷径,面向垂直行业提供 SaaS 解决方案。



后续我们还会做几个方向的尝试:


第一,端云协同的存储体验。


第二,端云协同的机器学习平台,在使用机器学习时,用户主要考虑的是算力问题,我们和影像以及 AI 的用户沟通实发现,他们更多考虑的是模型裁剪的问题,端侧的算力无法满足当前的需求,如何通过云端配合使业务场景更优,这是我们的切入点之一。


第三,虚拟现实,设备的发展从传到设备到 AR/VR 等多种设备,在虚拟现实的领域,算力也是受限的,需要在云端有强大的算力来支持,比如云游戏,在这一领域,我们也希望让终端更智能的战略,使云发挥更多垂直领域的作用。


作者简介


韩建飞,OPPO 云服务中心高级总监,2019 年加入 OPPO,负责计算、网络、研发效能及云监控的开发管理工作,先后服务于中兴通讯、京东等公司。入职 OPPO 后完成了 OPPO 全球混合云的建设及全公司上云的战略。在云计算领域有丰富的研发管理和实践经验。


今年 5 月,QCon全球软件开发大会即将落地广州,从下一代软件架构、金融分布式核心系统、现代编程语言、AIGC、现代数据架构、新型数据库、业务出海的思考、大前端变革等角度与你探讨。


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2023-02-28 21:014518

评论

发布
暂无评论
发现更多内容

API渗透测试的基本流程及关键点

阿泽🧸

11月月更 API渗透测试

K8S环境的Jenkin性能问题处理

程序员欣宸

Kubernetes jenkins 11月月更

面了个阿里拿38k出来的,让我见识到了基础顶端

程序知音

Java java面试 java架构 后端技术 Java面试八股文

算法题学习---判断一个链表是否为回文结构

桑榆

算法题 11月月更

云原生系列 【轻松入门容器基础操作】

叶秋学长

云原生 沙箱实验 11月月更 操作手册

三面头条 + 四面阿里 + 五面腾讯拿 offer 分享面经总结

程序知音

java面试 大厂面试 java架构 后端技术 Java面试八股文

复杂时序逻辑电路

智趣匠

Verilog 11月月更 时序逻辑

美团技术官手写的精品SpringBoot笔记,涵盖99%知识点,强到离谱

小小怪下士

Java spring 程序员 springboot

pytorch实现卷积神经网络实验

Studying_swz

人工智能 11月月更

用户特征分析的方法

穿过生命散发芬芳

11月月更 用户特征分析

码农必备?清华大学开源了一款写代码神器!

Jackpop

正则表达式学习笔记(二)

lxmoe

正则表达式 学习笔记 11月月更

[力扣] 剑指 Offer 第四天 - 数组中重复的数字

陈明勇

Go 数据结构与算法 力扣 11月月更

10道不得不会的 Java容器 面试题

JavaPub

Java 面试 后端

【LeetCode】无重复字符的最长子串题解

Albert

算法 LeetCode 11月月更

全网讲的最好的微服务,SpringCloud架构进阶

程序知音

Java 微服务 SpringCloud java架构 后端技术

【LeetCode】找到最高海拔Java题解

Albert

算法 LeetCode 11月月更

正则表达式学习笔记(一)

lxmoe

正则表达式 学习笔记 11月月更

2022-11-18:给定一个数组arr,表示连续n天的股价,数组下标表示第几天 指标X:任意两天的股价之和 - 此两天间隔的天数 比如 第3天,价格是10 第9天,价格是30 那么第3天和第9天的指

福大大架构师每日一题

算法 rust 福大大

【愚公系列】2022年11月 微信小程序-页面配置

愚公搬代码

11月月更

极客时间运维进阶训练营第四周作业

9527

这一次,带你深入浅出Go语言切片和数组

海风极客

Go 11月月更

YRCloudFile V6.9.0 加速企业在大数据应用技术创新

焱融科技

云计算 分布式系统 高性能 文件存储

【C语言】if 关键字

謓泽

11月月更

一款超好用的开源密码管理器!

Jackpop

Spring 5(六)新功能

浅辄

Spring5 JUnit 11月月更

计算机网络:VLAN基本概念与原理

timerring

计算机网络 VLAN 11月月更

综合实验——高级网络应用检测

我叫于豆豆吖.

11月月更

Meta开源新工具啊,Git地位危险了?

Jackpop

2022年最新版68道Redis面试题,20000字干货,赶紧收藏起来备用!

钟奕礼

Java 程序员 java程序员 java面试 java编程

昇腾AI创新大赛燃情上演,大咖齐聚共话人工智能发展新篇章

Geek_2d6073

OPPO 全球混合云建设之路_云原生_韩建飞_InfoQ精选文章