写点什么

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、现代数据架构、新型数据库、业务出海的思考、大前端变革等角度与你探讨。


2023-02-28 21:014981

评论

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

使用 docker manifest 构建跨平台镜像

江湖十年

Docker Desktop docker image docker build Docker 镜像

“分割一切”大模型SAM、超轻量PP-MobileSeg、工业质检工具、全景分割方案,PaddleSeg全新版本等你来体验!

飞桨PaddlePaddle

计算机视觉 飞桨 图像分割

基于阿里云物联网平台设计的实时图传系统_采用MQTT协议传输图像

DS小龙哥

三周年连更

Java枚举和注解

timerring

Java 三周年连更

Intents ,快速完成任务的最强辅助

鼎道智联

AI

DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍

汀丶人工智能

人工智能 自然语言处理 深度学习 ChatGPT

软件架构生态化-多角色交付的探索实践

京东科技开发者

架构 架构师 交付能力 企业号 4 月 PK 榜

跨平台应用开发进阶(五十)uni-app ios web-view嵌套H5项目白屏问题分析及解决

No Silver Bullet

uni-app ios 跨平台应用开发 三周年连更 web-view

Karmada v1.5发布:多调度组助力成本优化

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

SAP Emarsys 的前后台技术栈

汪子熙

SaaS Cloud SAP 思爱普 三周年连更

DAYU200关闭自动息屏的几种方式

坚果

OpenHarmony 三周年连更

Spring Boot整合多数据源实践

做梦都在改BUG

Java Spring Boot

《设计模式之禅》Proxy_Pattern--代理模式

浅辄

设计模式 代理模式 三周年连更

MobPush Android SDK厂商通道申请指南

MobTech袤博科技

企业微信接入系列-自建应用

六月的雨在InfoQ

企业微信 应用配置 三周年连更 自建应用

实习生疑问:为什么要在需要排序的字段上加索引呢?

架构精进之路

MySQL 数据库 索引 三周年连更

再聊 MySQL 聚簇索引

江南一点雨

Java MySQL

《社区人员管理》实战案例设计&个人案例分享

京东科技开发者

架构 测试 编码 在线设计平台 企业号 4 月 PK 榜

华为云网站安全解决方案助力客户——构建风险全面可控的网站安全架构

YG科技

华为云网站安全解决方案:中小型企业的云上云下安全守护专家

YG科技

跨平台图像浏览器:XnViewMP 中文激活版

真大的脸盆

Mac Mac 软件 图像查看 图像浏览

一篇神文就把java多线程,锁,JMM,JUC和高并发设计模式讲明白了

做梦都在改BUG

Java 多线程 高并发

leetcode-2335. 装满杯子需要的最短总时长

肥晨

三周年征文

Java线程中的wait、notify和notifyAll解析

共饮一杯无

Java 多线程 三周年连更

全栈开发实战|Spring Boot文件上传与下载

TiAmo

Spring Boot 三周年连更 Apache Commons 文件上传下载

通过小程序容器技术让App实现灰度发布

没有用户名丶

MySQL8.0 优化器介绍(三)

GreatSQL

MySQL greatsql greatsql社区

如何在业务开发中使用适配器模式?

做梦都在改BUG

Typescript-类型检测和变量的定义

格斗家不爱在外太空沉思

typescript 三周年连更

CentOS7 离线安装 Zabbix5.0

A-刘晨阳

Linux zabbix 三周年连更 离线安装

Springboot如何手动连接库并获取指定表结构|超级详细,建议收藏

bug菌

springboot 三周年连更

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