最受印度用户欢迎的相机产品之一,美图BeautyPlus和它背后的 Google Cloud

2019 年 12 月 31 日

最受印度用户欢迎的相机产品之一,美图BeautyPlus和它背后的 Google Cloud

近年来,美图在海外发展迅速,BeautyPlus 作为美图海外的旗舰 APP,截至 2019 年 6 月,总 MAU 达 6682 万,是目前最受印度用户喜爱的相机产品之一。


而美图海外背后提供支撑的云端平台正是 Google Cloud。美图海外业务架构全部基于 Kubernetes 进行容器化部署,同时依托于 Google 的资源,能及时、专业地解决难题。美图海外的业务迁移成为在 GCP(Google Cloud Platform) 上 Kubernetes 迁移部署的最佳实践之一。


其实在容器技术方向,特别是 Kubernetes 推进上,Google 一直是引领者,其 2015 年推出的 GKE(Google Kubernetes Engine)——Google 云容器引擎,在框架、安全性能以及其他 Google 基础设施能力依托下,具有独到的优势。


2019 Arch Summit 全球架构师峰会·北京站 Google Cloud 技术专场上,Google Cloud 工程师魏衡、美图海外高级服务端经理陈泽青分享了 GCP 上 Kubernetes 迁移部署最佳实践 相关内容。从容器集群技术方面分析了 Google Cloud 的优势及美图的实践,以下内容主要来自魏衡和陈泽青的分享。


Google 与 Kubernetes 的关系


Kubernetes 是 Google 开源的容器编排系统,2014 年对外宣布,2015 年发布 1.0 版本,同年 Google 与 Linux 基金会一起成立云原生计算基金会(CNCF-Cloud Native Computing Foundation),并把 Kubernetes 作为种子产品捐赠给了 CNCF。Google 一直在带领着 Kubernetes 的开发,我们也可以看到 CNCF 的 Kubernetes 项目代码贡献量,Google 所占比重是最高的。



(图片来自 stackalytics)


从 Borg 到 Kubernetes,Google 的容器技术时间线



Google 在容器领域拥有超过 15 年的经验。


  • 2003 年,Google 内部几个工程师做了一个集群自动化管理的工具,叫做 Borg;

  • 2012 年,Google Borg 升级成 Omega,实现容器的管理;

  • 2013 年,随着业界 Docker 发布,整个行业开始往容器方向迁移;

  • 2014 年,Borg/Omega 开源为 Kubernetes 项目;

  • 到如今,Kubernetes 已经成为整个容器编排的主流技术。


Kubernetes 脱胎于 Borg/Omega 的系统设计,而因为开源,使得社区能够合力去解决 Borg 的遗留问题。在 Kubernetes 面世后,Google 在开源、容器技术优化的道路上继续前行。


2018 年,Google、IBM 和 Lyft 联合开源了服务网格(Service Mesh)框架——Istio,发布 Istio1.0 版本;Google 又相继推出了 gVisor,Knative 云原生框架、GKE On-Prem ;2019 年 Google Cloud Next 大会上隆重推出 Anthos。


这些技术不断让容器领域大放光彩,Istio 是建立于 Kubernetes 上层的服务,用于进行微服务管理;Knative 扩展了 Kubernetes,专注于解决容器为核心的 Serverless 应用的构建、部署和运行问题,构建在 Kubernetes 和 Istio 平台之上;gVisor 作为新型沙箱解决方案,为容器提供安全的隔离措施,并且能够与 Docker 及 Kubernetes 实现集成,从而在生产环境中更轻松地建立起沙箱化容器系统。


而 Google 今年推出的 Anthos 其实是以 Kubernetes 为核心的混合云 / 多云管理平台,其下面就包括多种产品和解决方案,如 GKE 、GKE On-Prem、Istio on GKE 等……GKE On-Prem 是一种混合云软件,作为 Anthos 的核心组件,可将 GKE 引入本地数据中心。


GKE 架构与特色


什么是 GKE?


有了运行 Gmail 和 YouTube 等容器化服务超过 12 年的丰富经验,Google 2015 年推出的 GKE——Google 云容器引擎,是一个可用于生产的托管式环境,用于部署容器化应用。


通过 GKE,用户可以管理 Google 计算引擎(GCE)资源的逻辑集群,其中包括使用 Kubernetes 在集群节点上自动部署 Docker 容器。根据需要,GKE 将虚拟机的配置、启动和停止过程,以及在数量可变的 Docker 容器上部署容器化应用程序的过程自动化。


关于 GKE 架构


Kubernetes 的架构都由 Master (控制节点)和 Node(计算节点) 两种节点组成,通常,发布一个命令后,由控制节点分配到计算节点。



上图是 GKE 集群的结构框架演示,我们看到有 Master Node、Worker Node、Node Pool 等要素。Master Node、Worker Node,这两种角色对应的是控制节点、工作节点。控制节点由几个紧密协作的组件组合而成:API Server、controller-manager、scheduler、etcd,这部分是 Google 管理的项目,Master 内的通讯我们一般看不到。当控制节点分配任务到工作节点,Worker Node 开始发挥作用。


但在这个地方我们发现 GKE 多了一个 Node Pool 的概念,其实是把 Worker Node 进行分组,根据自身需求把相同硬件或者相同需求的计算资源分组,分成一个个 Node Pool。ReplicaSet、StatefulSet 等可以根据属性部署在不同的 Node Pool 上面,部署完成后,最后创建成 Service、Ingress,给到用户使用。


Pod 水平伸缩与垂直伸缩


谈到容器自动伸缩的问题,Kubernetes 有一个强大的功能,它能在运行的服务上进行编码并配置弹性伸缩。如果没有弹性伸缩功能,就很难适应部署的扩展和满足 SLAs。而 Pod 就是弹性伸缩的单位。Pod,而不是容器,是 Kubernetes 项目中最小的编排单位,我们可以把 Pod 看作是传统部署环境里的”虚拟机“,而容器是其中的”用户程序“,Pod 的设计可以让用户从虚拟机环境到容器环境的迁移变得更加平滑。Pod 水平扩展与收缩,是平台级项目必须具备的编排能力。


HPA(Horizontal Pod Autoscaling),是指 Kubernetes 中实现 Pod 水平自动伸缩的功能,按需实现部署的自动扩展和缩减。在 GKE ,除了支持 HPA ,还支持 VPA,VPA 即 Vertical Pod Autoscaler 纵向扩容,用来调整 CPU 和内存请求,目前只在 Google Cloud 上支持此功能。除了 Pod 的伸缩,其实更重要是计算资源的伸缩,Google Cloud 支持 Worker Node 自动部署,当 HPA / VPA 使用资源不够时可以自动部署 Node 节点。



GKE 的负载均衡


在 GKE 里可以直接享受 Google 强大的负载均衡。创建 Ingress 时,只要写一个 YAML 文件,Google Cloud 可自动创建一个全球负载均衡。同时可以支持 Secret 模式创建证书,同一 GCLB 支持多证书,以及支持 CDN 和网络安全属性服务。


另外 Google 还做了一个有趣的服务叫 Network Endpoint Group,把 Pod 作为后端负载均衡的节点,这样在服务发布的时候,遇到网络繁忙,直接检查 Pod 是否符合要求,如果可以就转发流量,相比分组方式常出现二次跳转的现象,优化了网络路径。



日志和监控 - 与 GCP Stackdriver 深度集成


Google 公司做大数据出身,日志和监控系统做的非常好,Stackdriver 产品可以监控和管理服务、容器、应用及基础架构,普遍用于混合云监控、日志记录和诊断。


除了 Kubernetes,配套的服务如容器镜像仓库、容器的可执行软件授权等,GKE 也是业界最早支持 Istio 的 Kubernetes 平台。GKE 是 Google Cloud 云上产品,如果想在自己数据中心部署,GKE On-Prem 可以帮助部署在自己的数据中心,通过 GKE On-Prem,可以使用到和在 Google Cloud 一样的 GKE Service。


Google Cloud 与美图海外的携手



以上产品都是美图出海的明星产品,BeautyPlus 和美图秀秀海外版在东南亚市场表现活跃,AirBrush 主要布局在欧美市场。在本文开篇我们也提到了 BeautyPlus 是美图海外的旗舰 APP,据美图财报显示,2019 年上半年,BeautyPlus 的月活跃用户数较 2018 年 12 月大涨 12% 达到 6682 万,是目前最受印度用户喜爱的相机产品之一。


亮眼成绩的背后离不开美图在出海策略上坚持高度本地化运营,注重与当地品牌合作,共同打造符合当地市场流行趋势及偏好的产品,


今年 4 月份美图正式发布 AI 开放平台,为美图全线产品提供云端图像处理能力,也为很多 B 端品牌客户提供 AI 技术的支持,比如 Bobbi Brown 的 WebAR 和五官分析,雅诗兰黛的多款定制化妆容,娇韵诗的上妆效果及拍照角度推荐等。



能够在海外取得这样的成绩,除了得益于美图自身本地化运营策略的成功,以及美图 AI 开放平台为其提供 AI 能力外,也离不开 Google Cloud 的大力支持。不管是 To C 的 BeautyPlus,还是 To B 的美图 AI 开放平台,都需要在海外有一个稳定强大的云端平台来做支撑。美图选择了 Google Cloud。


自 2016 年起美图便与 Google 开展深入合作,包括 Google Could、Firebase、Google AdMob、Google Ads 等方面,ARCore 是 Google 推出的搭建增强现实应用程序的软件平台,ARCore 技术也已成功应用在美图 BeautyPlus 的多款 AR 特效中。


美图为什么选择 Google Cloud


1、更低的成本


CP 有特有的持续使用折扣定价模式。计算实例定价不是固定的,而是随着使用时长不断降低,对于需要长期使用的实例,会越使用越便宜。


美图海外高级服务端经理陈泽青也提到 “我们的缓存实例占用总支出很大一部分,且对缓存实例的带宽依赖较大。但是,实例最大带宽是与实例规格是成正比的,为了大带宽只能开大规格的实例,造成其他资源(CPU、内存)的浪费。而 GCP 上,小规格的实例就能承载非常大的带宽,避免资源浪费。在我们的具体业务场景中显著的降低了成本。”


美图每种算法容器都需要不同的配置比,Google Cloud 可以进行任意的 CPU 和内存配置,与其他云服务的固定机器类型相比,在美图业务中提升了资源的利用率,更节省费用 。另外在业务高低峰期,请求量变化较大场景下如节假日,GKE 与 GCE 服务的弹性伸缩功能,使得整个业务平台都能在较低的成本下运行,并且还能在有大量突发请求时,保持业务的稳定性。


2、更先进的功能


Google 在全球部署了很多专线来打造一个骨干内网,以提升区域间访问的速度。基于 GCP 负载均衡和 AnyCast 技术也方便打造美图的全球化架构,使用负载均衡实现就近接入。


美图海外业务架构全部基于 Kubernetes 进行容器化部署,依托于 Google 的资源,能及时、专业地提供各类技术支持。


在运维层面,GCP 的 Cloud Shell 可以直接在浏览器中通过命令行访问云端资源,且无需安装 SDK。通过 Cloud Shell,可以随时使用最新且经过全面身份验证的 Cloud SDK 、gcloud 命令行以及其他必要的实用工具进行云端资源管理,并且有独立的用户数据空间,简化了云端资源的运维管理操作。


3、丰富的自定义监控和日志


GCP 上的 Stackdriver 平台正在为美图海外业务监控和日志分析的需求提供支持。包括收集各类云上资源运行指标和日志,并对日志进行各个维度的分析,及生成监控图表。同时,通过 Stackdriver 无缝结合 GCP 的其他功能比如 BigQuery 和大数据分析服务,对日志进行更多维度的分析。代替了美图海外自己搭建的监控日志平台,节省了资源成本和配置、管理成本。


“我们在迁移后统计,使用 GCP 平台,每月节省了近 44% 的成本。”陈泽青总结到。


分享嘉宾:


魏衡,Google Cloud 工程师,IT 从业 20 年,专注在网络、Linux 和容器领域。曾就职于 Cisco 和 Microsoft。


陈泽青,美图海外高级服务端经理,美图海外及 AI 云计算负责人,多年机器学习高性能计算及云计算研发经验。2017 年加入美图,组建团队架构美图 AI 开放平台,后负责美图海外服务端业务,通过云平台服务美图海外亿级用户。


2019 年 12 月 31 日 15:481051

评论 1 条评论

发布
用户头像
谷歌云能力强大
2019 年 12 月 31 日 22:20
回复
没有更多评论了
发现更多内容

高承实:区块链将对哪些场景赋能,如何赋能?

CECBC区块链专委会

区块链技术 产业 赋能

【摘】Git-从零单排 04期

卡尔

TiDB原理解析

Chank

图解 Vue1.0 响应式系统

前端黑板报

源码分析 Vue Reactive

记录一下,我的记录之道

非著名程序员

学习 程序员 提升认知 工作效率

二叉查找树的解读和实现

ytao

Java 数据结构

依赖倒置总结

石印掌纹

Cache类接口隔离设计

石印掌纹

Flink on Zeppelin (4) - 机器学习篇

章剑锋_Jeff

大数据 flink 学习 流计算 Zeppelin

架构师训练营第二周课程感想1

tuuezzy

Java 架构师

XSKY发布S3 Console,助力企业轻松玩转非结构化数据可视化管理

XSKY融合存储

如何看待年仅 28 岁的程序员实现财务自由,宣布从字节跳动退休?

非著名程序员

程序员 自由职业 程序人生 财富

《实现领域驱动设计》拆书稿 DDD入门 & 领域、子域和限界上下文

三界

架构 领域驱动设计 DDD

数仓大法好!跨境电商 Shopee 的实时数仓之路

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

软件设计原则作业

行下一首歌

极客大学架构师训练营

奈学教育《百万架构师》课程大纲(1)

奈学教育

架构师

奈学教育《大数据架构师》课程大纲(1)

奈学教育

大数据

奈学教育《大数据架构师》课程大纲(1)

古月木易

大数据

POJO类中布尔类型为啥不让用isXxx命名

Java课代表

实时即未来?一个小微企业心中的流计算

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

【玩转写作平台】如何让专业编辑青睐你的文章?被推荐置顶?

InfoQ写作平台

写作平台 InfoQ 玩转写作平台

使用 Python 制作酷炫多彩的 Jenkins 插件词云图

donghui2020

jenkins wordcloud

Spring源码-MVC启动

云淡风轻

spring

Flink 在快手实时多维分析场景的应用

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

第二周作业

Diven

奈学教育《百万架构师》课程大纲(1)

古月木易

极客大学架构师训练营

游戏夜读 | 中国的游戏制作人

game1night

【面向对象】—依赖倒置、接口隔离

不二架构

极客大学架构师训练营 依赖倒置 接口隔离原则

使用wavm运行wasi wasm程序

Foliage

细说几种内聚

落英亭郎

高内聚 面向对象设计 面向对象思想

架构师-第二周

师哥

最受印度用户欢迎的相机产品之一,美图BeautyPlus和它背后的 Google Cloud-InfoQ