如何將移動互聯網廣告系統搬到雲上?

匯量科技(Mobvista)是領先的移動廣告及營銷服務技術平臺,爲全球應用開發者提供移動廣告及數據分析服務。憑藉其強大的大數據和AI能力,Mobvista爲2000多家廣告主提供獲客服務,向累計超過70億臺獨立移動設備投放廣告;同時,超過700個開發者的逾5,300款應用使用其變現服務。此外,Mobvista的移動分析SaaS平臺已追蹤分析49,000多款遊戲的數據。目前,公司已於全球15大城市設立辦公室,團隊規模超700人。

這樣一家體量如此之大的移動互聯網科技公司,如果說其整體架構完全都是構建在AWS雲之上,相信會令不少人略感驚訝。一般來說,目前All in Cloud的企業通常都是一些初創或者高度依賴雲來開展業務的公司,而在廣告這種領域,則鮮有聽說有企業大規模上雲的,更別說“All in Cloud”了。這是因爲,廣告平臺是一個非常龐大複雜的系統,如此複雜的系統實現“All in Cloud”,其實是一件非常困難的事情,不僅僅要涉及技術,可能還要考慮成本、資源、時間等各種因素,可以說是對企業IT部門各種能力的綜合挑戰,因此,鮮有企業敢進行這樣大膽的“變革”,但Mobvista不僅做,而且還把這件事情做成了。那麼,Mobvista到底是如何做到的呢?爲此,老孫和匯量科技技術副總裁兼首席架構師蔡超聊了聊。

複雜系統的All in Cloud

“我們整體的架構是All in Cloud,就是Mobvista提供的全站式的移動廣告平臺,包括SSP、DSP、AdExchange、數據分析,所有這些系統沒有任何一個是建立在本地機房的,都是在雲端完成。我們應用了雲端幾乎所有的這些技術,比如雲端的數據存儲、Amazon DynamoDB、Amazon Redshift,也包括現在流行的Serverless、AWS Lambda等等,我們公司也以此爲榮,並大量地使用了Amazon EC2 Spot Instance競價實例來降低成本。”匯量科技技術副總裁兼首席架構師蔡超在談到Mobvista的All in Cloud時,不乏自豪。

“其實簡單來說,我們在談到某一些系統的時候,總是會想,什麼樣的架構纔是好的架構,但大家經常看到的高可用、高可擴展、高可靠性、可維護性就是雲計算能夠帶來的。把系統構建在雲端上,比傳統本地的系統更容易獲得可伸縮性,企業可以利用雲服務讓系統變得更加可持續。”蔡超說。

不過,Mobvista並不是一家初創公司,而Mobvista的幾大業務系統,包括頭部媒體、承銷廣告都是一個本地的龐大單體系統。將這樣龐大的單體系統遷移到雲上,對於任何人來說,都不是一件容易的事情。擁有超過15 年的軟件開發經驗,九年任世界級IT公司軟件架構師/首席軟件架構師的蔡超當然深知這一點。

蔡超表示,如果將這樣的單體系統直接遷移到雲端,雖然可以實現可伸縮的彈性,但當要進行橫向擴展時,就是系統的任何一個功能成爲瓶頸的時候,就必須去複製整個單體系統,這就需要更大的計算資源,所以就必須對它進行了一個公共的流處理部分的提取,而這就首先要用到微服務。這是因爲,通過微服務切分與系統瓶頸相關聯的服務,可以使系統獲得更細顆粒度的擴展性。

然而,雖然微服務能夠使Mobvista的系統獲得更加細顆粒度的擴展性,使得Mobvista的上雲過程變得更加順利,但對於蔡超以及很多上雲的企業而言,上雲的成本問題其實才是企業所遇到的更大問題。

解決上雲成本的挑戰

實際上,降低成本就是蔡超當年來到Mobvista的主要任務。而爲了實現這個目標,就需要在很多方面下功夫,也會遇到很多坑,比如在構建微服務的時候,要考慮引入面向容錯、面向故障恢復的架構和混沌工程,從而構建一個高可用的微服務架構。混沌工程(Chaos Engineering)是針對於像Mobvista這樣的大規模的公司。蔡超表示,對於Mobvista,使用Amazon EC2 Spot Instance競價實例來節省成本具有巨大的意義。因爲Mobvista有超過五千臺以上的Instance在雲端的,沒有辦法去構建一個具有足夠擴展性的測試環境,而這隻有通過混沌工程來解決問題。

而爲了做這些事,就需要做很多其他額外的工作。比方說,要開發限流、熔斷、也要使用到Metrics,因爲沒有Metrics的話,在接下來做混沌工程的時候將很難評估目前的系統指標。因此,在開發一個微服務的時候,10%的工作是在寫核心邏輯,而90%的工作量都是在做與業務無關的基礎性工作,爲了簡化微服務的開發及提高微服務開發的質量,Mobvista開發了自己的微服務框架,並且已將這一框架開源。

蔡超還介紹說,當服務變得更加彈性、更可恢復的時候,其實反倒可以找到更低的成本方式。實際上,Spot Instance的價格是On demand價格的1折到2折,利用這一點,其實可以找到一種節省成本的方法。比如,Spot Instance有一種競價計費的方式,只要競價高於當前的Spot Instance的價格,就可以用當前的市場價格拿到Spot Instance。但如果使用了大量的Spot Instance,當資源緊張時,Spot Instance也會被回收,但當你的系統擁有足夠的彈性時,在保證SLA的情況下,也能獲得成本的節省。而Mobvista 70%的在線系統的Instance都是Spot Instance,通過這樣的方法,蔡超幫助Mobvista達成了單次請求成本降低65%的效果。爲了幫助更多的開發者利用高彈性雲端資源來構建低成本的大規模系統,Mobvista還利用自己的經驗和技術創建了SpotMax項目,SpotMax向開發者提供了雲端架構的諮詢指導,混沌工程實施諮詢以及大規模Spot Instance集羣智能管理系統。

構建適配雲計算的理念

蔡超表示,“All in Cloud”不僅僅需要企業大膽地採用像微服務、無服務器、Lambda函數、混沌工程等創新技術,更重要的是要企業的工程師和開發人員具有適配雲計算的理念。雲端的系統是一種特定的架構,與傳統本地系統架構很大的不同。但企業中大量的工程師和開發人員,都是從經典的本地系統架構構建學起的。這就需要企業的工程師和開發人員在思想和理念上有所改變,在知識方面有所更新,要用雲的思路來構建系統,這樣,才能更好地理解雲計算,更好地使用好雲計算。

“今天,大多數企業面臨的共性問題是,我們大量的工程師和我們以前設計的思想都來自於非雲時代。但云的演化非常快,每次的AWS re:Invent都有幾百、上千的新功能放出來,對於很多工程師來說,在雲上進行工作的時間或者是在雲上構建架構的時間並不長,這就需要工程師和開發人員花更多的時間去摸索、實踐。非常感謝有AWS這樣一個平臺,可以和全世界最優秀的工程師一起,去打造一個更加優化、成本更低的平臺。”蔡超最後說。

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