最受印度用戶歡迎的相機產品之一,美圖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 開放平臺,後負責美圖海外服務端業務,通過雲平臺服務美圖海外億級用戶。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章