愛奇藝私有云Serverless實踐

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"近日,愛奇藝技術產品團隊舉辦了“i技術會”線下技術沙龍,本次技術會的主題是“雲原生落地探索與實踐”,邀請快手、百度和字節跳動的技術專家,與愛奇藝技術產品團隊共同分享與探討雲原生落地的實踐經驗。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其中,來自愛奇藝的技術專家尚劉炎爲大家帶來了愛奇藝私有云Serverless實踐的分享,本場分享一共有三個關鍵詞:Serverless、私有云和落地實踐。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"本次分享的第一部分內容是帶大家瞭解Serverless這個概念。第二部分說明下公有云和私有云下Serverless服務的區別。第三部分是愛奇藝具體落地的一些策略和方案,及其經驗分享。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"什麼是Serverless"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在介紹什麼是Serverless的時候,希望通過回答一些問題幫助大家瞭解什麼是Serverless。一個最好的問題就是——"},{"type":"text","marks":[{"type":"strong"}],"text":"Serverless是不是就是FaaS?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"下面是維基百科對“Serverless”的中文和英文的解釋:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/82\/824aae06c8ed0b4eaba12eab065ce6c4.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/d1\/d1af94d7ecf18fd61e849368b56cfc85.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"中文解釋爲Serverless就是FaaS;英文解釋就比較豐富了,它把Serverless分成Runtime和Databases,FaaS相當於是Runtime類別的產品,所以這方面的誤解還是挺多的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"現在市面上的一些Serverless服務,比如AWS和阿里雲:"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"AWS Serverless服務:"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/3b\/3baa92a3ccf2b1ceb1891091225f5896.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/d9\/d929bea1bcd54ddcd0ed0a60335c4548.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"阿里雲Serverless服務:"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/b2\/b2033366b5a887ad9b0fc28f7df527d5.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"阿里雲目前官網上的展示還不是很全面,實際上它的服務還要更多一些,與AWS差不多,但AWS區分比較合理,把Serverless服務分計算、應用集成、數據分佈,阿里也有一個劃分,不過沒有AWS的那麼詳細。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"到這裏就可以發現FaaS和Serverless有些區別了,整體來看FaaS服務,是Serverless計算服務的一部分。除此之外,亞馬遜還提供了ECS、EKS,也是可以提供Serverless計算的服務。另外應用集成在這方面的成果就更豐富了,最常用的是SQS,不需要關注資源的一個消息中間件,數據存儲也有Serverless的DB。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目前來講,提供無需關注底層基礎設施的服務可以稱爲Serverless,"},{"type":"text","marks":[{"type":"strong"}],"text":"那麼無需關注底層基礎設施可以怎麼理解呢?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先是我們不去維護這下面的底層基礎設施;其次是不關心它的資源的擴展情況,就像DB,我們知道它是可能運行在K8S集羣上,也知道它有內存有CPU有磁盤,但我們並不需要關心這些資源的情況。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"那麼"},{"type":"text","marks":[{"type":"strong"}],"text":"公司在做私有云時想去實施Serverless建設應該從哪兒開始做起?"},{"type":"text","text":"這也是一個問題。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"私有云和公有云的Serverless服務的區別"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"現在有這麼多Serverless服務,但在2018年的時候是沒有這麼多選擇的,而且我們看到維基百科(中文)從2019年沒有再更新,這不是偶然,因爲在這之前我們認爲Serverless就是FaaS。所以2018年,愛奇藝開始實施Serverless,"},{"type":"text","marks":[{"type":"strong"}],"text":"第一件事兒就是把FaaS搭建起來"},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在2018年,開源社區可參考的內容也是很少的。現在比較成熟的Serverless有兩個方案,Knative和OpenFaaS,Knative在2018年1月31號纔開源發佈出來,OpenFaaS當初是個人項目,後來才成立了公司。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"技術選型的時候我們也比較糾結,因爲沒有好的方案。作爲內部創新的項目,公司投入的人力非常少,我們當時特別希望社區能夠提供一些支持,但當時整個社區並沒有成熟的方案,也不確定未來哪個方案會成爲主流。後來我們選擇了Fn這個項目,現在已經16個月都沒有更新了,項目已經確定停更了。當時選擇這個項目,主要有以下幾點考量:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第一"},{"type":"text","text":",Fn項目是Oracle開源的Serverless項目,我們覺得Oracle是一家ToB端比較領先的公司,應該比較擅長做這類服務,項目發展應該會很順利;"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第二"},{"type":"text","text":",當時公司容器編排用Mesos,Fn在Mesos上的支持比較多。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"綜上所述,Fn項目對當時的愛奇藝來說是最合適的選擇。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們在Fn上面做了一些公司內部服務的集成,完成MVP版本後,想找一些業務作爲抓手驅動後續開發。當時參考了AWS的一個經典案例,彈性的圖片resize服務。這個案例非常貼切FaaS應用場景:FaaS的優勢是無需管理服務器,圖片resize也是比較簡單的函數操作,不需要很多的代碼去完成;另外FaaS本身是持續擴展的,其優勢是按調用次數計費,所以對於很多公司,尤其初創公司來說這是非常好的應用場景。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"愛奇藝也有圖片服務,我們也覺得這個案例很適合我們作爲第一個可以落地的場景推廣。但我們在和圖片服務團隊溝通的時候發生了一個比較戲劇化的場面。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/ee\/eea89c4ee1f25f42b29a5fe3d3205b27.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這次對接後,我們意識到,公有云推廣的方案在私有云不好使,主要原因有兩個:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1)FaaS確實做不了複雜的功能(2018年),而且容器編排服務已經很好用了(對後端工程師來說);"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2)按需付費這些功能,根本不在私有云的考慮範圍之內。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"那麼,私有云真的需要Serverless嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"如果需要,是什麼形式的呢?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"私有云真的需要Serverless嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先,公有云的FaaS的作用是爲了將其他公有云服務連接起來。它是雲計算成熟到一定程度(雲原生)的產物,而私有云一般達不到這種成熟度。並且,私有云推進基礎架構達到公有云的程度也不現實,因爲兩者目的不同。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"是不是我們提升私有云的基礎架構體系的成熟度,就可以再做Serverless這個方案了?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其實這也不現實,因爲從2015年到現在,公有云已經達到規模效應了。私有云做架構的時候有意的規避了這個問題,要和公有云做一些區別,更多的支撐我們自己的業務。所以,從這個角度來看,我們在做Serverless方案的時候如果參照公有云,其實是走不通的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"如果私有云真的需要一種Serverless服務,它應該是什麼樣的?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"公有云用Serverless連接公有云的服務,那麼私有云Serverless應該是連接私有云特有的服務、不能被公有云取代的服務,更多是應用級別的服務——私有云事件驅動的路線;"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"另外,對於後端工程師的技術棧來說,私有云的FaaS可能不那麼便捷,但對於前端來說就不一樣了,因爲前端對服務端不那麼瞭解。另外,我們可以看到阿里雲的Serverless的最佳實踐和案例上,都有很多的前端BaaS方向,這兩年前端比較大的趨勢也是這個方向;"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最後,Serverless對於私有云的幫助,主要是生產力的提升,而不是公有云宣傳的資源成本節約。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"如何落地Serverless方案?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"首先要因地制宜。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們本身團隊在基礎架構部門,離前端比較遠,應用事件驅動的方向比較適合我們團隊推進。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"公有云也有事件驅動方向的產品,比如AWS的EventBridge(下圖),一種Serverless的事件總線服務。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/fb\/fb65341caad392dc2dd596f769c195bf.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這個服務不僅可以通過事件觸發服務,還可以做事件的組合。舉個愛奇藝的實際例子,一個視頻生產完成、人工審覈通過且AI審覈沒有通過,當這三個事件都發生之後會觸發人工再審覈的操作。如果不用事件總線服務,這個流程其實很麻煩,要先緩存到這幾個事件,另外中間可能會接收大量的消息,這時還要單獨做一個組件去完成。使用Serverless的事件總線服務,可以節省我們很多維護成本,提升開發的效率,還能幫助架構做一些解耦。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2019年公司推進中臺化,團隊希望能在中臺化的過程中落實這個技術方案。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"分析中臺的架構後,我們發現很多中臺並不產生新的、更有效的服務,它只是把原有的服務組合起來。隨着中臺化演進,我們可以和負責中臺的團隊協作,讓他們把事件接入事件總線。我們有這個想法,也找了團隊去溝通,但還是有新的問題出現。中臺業務團隊的目的是爲了解決中臺化的問題,沒有多餘的精力幫助我們開放事件。於是我們又進一步分析了中臺團隊的主要問題。起先我們認爲,做中臺的架構無非是把原有的單體服務連接起來,但實際上,這些單體服務本身提供的服務的接口是異構的。另外,把這些服務組合起來看起來只是一個工作流,但可觀測性、任務重試、超時、熔斷等等一系列問題也要解決。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"於是我們想是不是可以設計一個Serverless服務,它可以支持不同的服務的調度,無需運維的,同時它的可觀測性是自動生成的。這樣的服務可以幫助中臺團隊解決工作上的問題。在實際應用中,無論AWS還是阿里雲也有這樣的服務,比如AWS的做Step Function。我們解決這個問題做的服務,就是Airworkflow。"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/d6\/d6b67b129f88668216f2e6092a647c3a.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖注:爲中颱而生的Serverless服務——Airworkflow"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"工作流通過一個狀態機描述語言進行定義,私有云沒有必要和公有云一樣,只需儘量解決自己的問題,採用了CNCF開源的Workflow標準,選擇其中應用比較廣泛的狀態優先實現;按照這個標準在底層用基於Knative Serving和Eventing基礎上做的實現。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"下面是觀測性問題的改造。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在觀測性問題方面,Airworkflow方案有特別大的便捷性,用戶在描述狀態機的時候,相當於直接將業務標籤提前打好了,代碼與狀態機配置相關聯,所以標籤可以自動生成,真正實現了,寫完代碼以後,後續的可觀測性內容是按照業務自動構建的。這對於中臺來說是一個特別便捷的一個功能。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"另外前文提到,我們團隊想讓中臺團隊把中間事件開放出來,所以其實在做workflow標準時,我們把這點也考慮進去了。如下圖黃色標記的,中間有一個關鍵字可以把結果按照一定標準格式開放出來。"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/2a\/2a6f0cc2b450fdf8d838ba1274257dcd.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"那麼什麼是業務事件?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"業務事件,是私有云、公有云最大的區別。公有云的事件是消息隊列裏面會多一條數據,而私有云事件,是一個服務級別的事件,是創建定單成功,支付成功等業務事件。如果開發的時候接收的都是這些事件,那麼我們的很多應用將非常容易擴展。"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/41\/41583bf2c9232825dff2abb6034913c0.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖注:業務事件"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如上圖所示,最右邊紫色的塊是log,是打好標籤的,可以很清楚的定義出屬於哪個步驟。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲了便於用戶接入,我們也開發了一個Dashboard平臺。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/b4\/b49243ffe82d9537400c766f37daaf67.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖注:Airworkflow Dashboard"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在對接Airworkflow的時候,團隊發現大家對Serverless的接受程度還是不高。雖然也有業務方願意接入,但都要我們做演示,把前因後果講述一遍,拿技術文檔一步步指引操作,整個對接週期一般要一週左右,換個人又得重新來一遍。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"公有云在做推廣的時候也遇到一樣的問題,他們解決的方法就是頻繁的佈道,這個方法需要很多人力,不適合私有云。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"上述問題不只我們面臨過,比如滴滴,在業務推廣初期面臨過沒有司機就沒有用戶,沒有用戶也沒有司機的問題,這個問題的解決需要建立起正向的循環,我們也希望通過構建服務,完成我們的增長飛輪。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/75\/757533149c32d280284095529285e311.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖注:構建增長飛輪"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"現在Airworkflow已經有服務接入了,團隊目前正在做事件總線Eventgateway。事件總線做完以後,可以推動我們FaaS迭代。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"用戶在用這些服務的同時,對Serverless接受程度會提高。接受度的提高會催使他使用別的服務,這樣我們最左邊的循環就能打通了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但這個打通的成本是什麼?是我們不遺餘力的推廣,甚至手把手的教用戶改造。由於人力的限制,我們希望構建一個生態,讓已經接入的用戶,把他們的經驗推廣出去。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"後續我們會做一個Dev App store,將一些事件和Function,以打包的形式作爲內部開源的產品交付給用戶。用戶通過這種低門檻的方式,接觸瞭解Serverless,進而提高對Serverless服務的接受程度,後續就更容易使用其他服務,這樣互相促進,完成我們整個的服務的閉環。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Q&A"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"提問"},{"type":"text","text":":目前Serverless平臺都是支持無狀態函數的,未來會不會支持有狀態函數?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"劉炎"},{"type":"text","text":":有狀態的服務相對無狀態要複雜的多,如果你的服務是有狀態的,應該先構建爲單體的微服務,業務場景經常要把這些微服務連接起來,這個“連接起來”就是我們Airworkflow要做的,目前最佳實踐是這樣的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"本文轉載自:愛奇藝技術產品團隊(ID:iQIYI-TP)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"原文鏈接:"},{"type":"link","attrs":{"href":"https:\/\/mp.weixin.qq.com\/s\/w-HptPgmb3VQocok-PPtew","title":"xxx","type":null},"content":[{"type":"text","text":"愛奇藝私有云Serverless實踐"}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章