關(guān)于我們

質量為(wèi)本、客戶為(wèi)根、勇于拼搏、務(wù)實創新(xīn)

< 返回新(xīn)聞公共列表

從單體(tǐ)邁向 Serverless 的避坑指南(nán)

發布時(shí)間(jiān):2021-03-26 18:44:35

從單體(tǐ)邁向 Serverless  的避坑指南(nán)

作(zuò)者|不是阿裏巴巴雲的資深技術專家

導讀:的用戶需求和雲發展兩條線,推動了(le)雲原生(shēng)技術的興起、發展和大規模應用。本文将主要討(tǎo)論什(shén)麽是雲本地應用,什(shén)麽是雲本地應用,什(shén)麽是無服務(wù)器(qì)計算(suàn),以及無服務(wù)器(qì)如(rú)何簡化(huà)技術複雜性,幫助用戶應對快(kuài)速變化(huà)的需求,實現(xiàn)靈活和高可用性的服務(wù),這(zhè)些(xiē)都将通過具體(tǐ)的案例和場(chǎng)景進行說(shuō)明。

如(rú)今,各行各業都在談論數字化(huà)轉型,尤其是新(xīn)零售、媒體(tǐ)、交通等行業。數字商(shāng)業形式已經成為(wèi)主流,逐漸取代傳統商(shāng)業形式。在其他行業(如(rú)工業制造),雖然企業的業務(wù)形式沒有以數字化(huà)的形式表現(xiàn)出來(lái),但(dàn)在數字雙胞胎的概念下(xià),充分(fēn)利用數據技術優化(huà)生(shēng)産運營正成為(wèi)研究熱點和行業共識。

企業從生(shēng)産資料、生(shēng)産關(guān)系、戰略規劃、成長曲線四個(gè)方面進行數字化(huà)轉型:

生(shēng)産資料:數據成為(wèi)最重要的生(shēng)産資料,需求/風(fēng)險随時(shí)變化(huà),企業面臨很大的不确定性;

生(shēng)産關(guān)系:不以過程和規則為(wèi)基礎的以數據為(wèi)中心的固定生(shēng)産關(guān)系。網絡效應使生(shēng)産關(guān)系跨越時(shí)空限制,多種連接方式催生(shēng)新(xīn)的業務(wù)和品種;

戰略規劃:基于數據決策,快(kuài)速應對不确定的商(shāng)業環境;

增長曲線:數字技術帶來(lái)的能(néng)力達到大量用戶,可以帶來(lái)突破性增長。從雲服務(wù)提供商(shāng)的角度來(lái)看,雲的演進趨勢,在雲1.0時(shí)代,基礎設施的雲化(huà)是其主題。使用雲托管模式,雲下(xià)的應用程序保持兼容,傳統應用程序可以直接遷移到雲。這(zhè)種方法的核心價值在于資源的靈活性和低(dī)成本;在基礎設施提供海量計算(suàn)能(néng)力後,如(rú)何幫助用戶更好(hǎo)(hǎo)地利用計算(suàn)能(néng)力,加快(kuài)企業創新(xīn)速度,成為(wèi)雲的核心能(néng)力。

如(rú)果基本應用程序仍然建立在服務(wù)器(qì),上(shàng),R&D的成本将非常高,管理(lǐ)将非常困難,因此有雲2.0,這(zhè)是雲原生(shēng)時(shí)代。雲原生(shēng)時(shí)代,雲服務(wù)提供商(shāng)提供豐富的托管服務(wù),幫助企業數字化(huà)轉型創新(xīn)。用戶可以像構建模塊一(yī)樣基于各種雲服務(wù)構建應用程序,這(zhè)大大降低(dī)了(le)研發成本。

雲本機應用程序元素

雲本地應用程序有三個(gè)關(guān)鍵要素:微服務(wù)架構、應用程序容器(qì)化(huà)和無服務(wù)器(qì),以及敏捷軟件交付流程。

1.微服務(wù)架構

單一(yī)架構和微服務(wù)架構各有特點,主要特點如(rú)下(xià)圖所示。一(yī)般來(lái)說(shuō),單一(yī)架構移動快(kuài),但(dàn)是微服務(wù)架構維護部署困難,但(dàn)是更加獨立敏捷,更适合雲原生(shēng)應用。

從單體(tǐ)邁向 Serverless  的避坑指南(nán)

單片架構VS微服務(wù)架構

2.應用程序容器(qì)化(huà)和無服務(wù)器(qì)

容器(qì)是目前最流行的打包代碼的方式。在K8s及其生(shēng)态能(néng)力的幫助下(xià),整個(gè)基礎設施的管理(lǐ)難度大大降低(dī)。而且容器(qì)在程序支持方面提供了(le)極好(hǎo)(hǎo)的靈活性和可移植性,越來(lái)越多的用戶開始使用容器(qì)來(lái)封裝整個(gè)應用。無服務(wù)器(qì)計算(suàn)是另一(yī)種形式,它做了(le)大量的端到端集成和雲服務(wù)集成,大大提高了(le)研發效率。但(dàn)是與傳統應用的兼容性沒有容器(qì)靈活,但(dàn)也(yě)帶來(lái)了(le)極大的整潔。用戶隻需要關(guān)注業務(wù)邏輯的編碼和業務(wù)邏輯的創新(xīn)。

3.敏捷應用交付流程

敏捷應用交付流程是一(yī)個(gè)非常重要的元素,主要包括流程自動化(huà),專注于功能(néng)開發,快(kuài)速發現(xiàn)問題,快(kuài)速在線發布。

無服務(wù)器(qì)計算(suàn)

1.阿裏巴巴雲功能(néng)計算(suàn)

無服務(wù)器(qì)是一(yī)個(gè)新(xīn)概念,但(dàn)其内涵已經存在。阿裏巴巴雲或者AWS的第一(yī)個(gè)雲服務(wù)是對象存儲,對象存儲實際上(shàng)是存儲領域的無服務(wù)器(qì)服務(wù);另外,無服務(wù)器(qì)指的是一(yī)個(gè)産品系統,而不是單一(yī)的産品。目前行業内雲服務(wù)提供商(shāng)推出的新(xīn)功能(néng)或産品大多是無服務(wù)器(qì)的。阿裏巴巴雲無服務(wù)器(qì)産品體(tǐ)系包括計算(suàn)、存儲、API、分(fēn)析和中間(jiān)件等。目前,雲産品系統正在變得無服務(wù)器(qì)化(huà)。

阿裏巴巴雲無服務(wù)器(qì)計算(suàn)平台的功能(néng)計算(suàn)有四個(gè)特點:

與雲的無縫集成:雲中的各種服務(wù)以事(shì)件驅動的方式與功能(néng)計算(suàn)無縫集成。用戶隻需要關(guān)注功能(néng)的開發,事(shì)件的觸發由服務(wù)提供商(shāng)完成;

實時(shí)彈性展開:系統自動完成函數計算(suàn)的彈性展開,速度非常快(kuài),用戶可以在在線應用中使用這(zhè)一(yī)能(néng)力;

亞秒(miǎo)計量:亞秒(miǎo)計量提供了(le)完整的按需計量方式,資源利用率可達100%;

高可用性:功能(néng)計算(suàn)平台為(wèi)幫助用戶構建高可用性應用做了(le)大量工作(zuò)。那麽,阿裏巴巴雲函數計算(suàn)怎麽做呢(ne)

上(shàng) 4 點呢(ne)?阿裏雲函數計算(suàn)的産品能(néng)力大圖如(rú)下(xià)圖所示,首先函數計算(suàn)産品是建立在阿裏巴巴的基礎設施服務(wù)之上(shàng)的産品,對在其之上(shàng)的計算(suàn)層進行了(le)大量優化(huà)。接着在應用層開發了(le)大量能(néng)力和工具,基于以上(shàng)産品能(néng)力,為(wèi)用戶提供多種場(chǎng)景下(xià)完整的解決方案,才有了(le)整個(gè)優秀的函數計算(suàn)産品。函數計算(suàn)是阿裏雲的一(yī)個(gè)非常基礎的雲産品,阿裏雲的許多産品和功能(néng)均是建立在函數計算(suàn)的基礎上(shàng)。目前阿裏雲函數計算(suàn)已經在全球 19 個(gè)區域提供服務(wù)。

從單體(tǐ)邁向 Serverless 的避坑指南(nán)
阿裏雲函數計算(suàn)産品能(néng)力大圖

2. Serverless 幫助用戶簡化(huà)雲原生(shēng)應用高可用設計、實施的複雜度

雲原生(shēng)應用的高可用是一(yī)個(gè)系統的工程,包括衆多方面,完整的高可用體(tǐ)系構建需要很多時(shí)間(jiān)和精力。那麽 Serverless 計算(suàn)是如(rú)何幫助用戶簡化(huà)雲原生(shēng)應用高可用設計、實施的複雜度呢(ne)? 如(rú)下(xià)圖所示,高可用體(tǐ)系建設要考慮的點包括基礎設施層、運行時(shí)層、數據層以及應用層,且每一(yī)層都有大量的工作(zuò)要做才可以實現(xiàn)高可用。函數計算(suàn)主要是從容錯、彈性、流控、監控四方面做了(le)大量工作(zuò)來(lái)實現(xiàn)高可用,下(xià)圖中藍色虛線框所對應的功能(néng)均由平台來(lái)實現(xiàn),用戶是不需要考慮的。藍色實線框雖然平台做了(le)一(yī)些(xiē)工作(zuò)來(lái)簡化(huà)用戶的工作(zuò)難度,但(dàn)是仍需要用戶來(lái)進行關(guān)注,而橘紅(hóng)色的實線框代表需要用戶去負責的部分(fēn)功能(néng)。結合平台提供的功能(néng)和用戶的部分(fēn)精力投入,可以極大地減輕用戶進行高可用體(tǐ)系建設的難度。

從單體(tǐ)邁向 Serverless 的避坑指南(nán)
函數計算(suàn)高可用

函數計算(suàn)在很多方面做了(le)優化(huà)來(lái)幫助用戶建設高可用體(tǐ)系。下(xià)圖展示了(le)函數計算(suàn)在可用區容災方面的能(néng)力。從圖中可知,函數計算(suàn)做了(le)相應的負載均衡,使得容災能(néng)力大大提升。

從單體(tǐ)邁向 Serverless 的避坑指南(nán)
函數計算(suàn)多可用區容災

下(xià)圖展示的是函數計算(suàn)對事(shì)件的異步處理(lǐ),其處理(lǐ)流水線主要包括事(shì)件隊列、事(shì)件分(fēn)發、事(shì)件消費三個(gè)環節,在每一(yī)個(gè)環節上(shàng)都可以進行水平伸縮,其中一(yī)個(gè)比較關(guān)鍵的點是事(shì)件的分(fēn)發需要匹配下(xià)遊的消費能(néng)力。另外,通過為(wèi)不同函數指定不同數量的計算(suàn)資源,用戶能(néng)方便地動态調整不同類型事(shì)件的消費速度。此外,還可以自定義錯誤重試邏輯,并且有背壓反饋和流控,不會在短時(shí)間(jiān)内産生(shēng)大量請求時(shí)壓垮下(xià)一(yī)個(gè)服務(wù)。

從單體(tǐ)邁向 Serverless 的避坑指南(nán)
函數計算(suàn)事(shì)件異步處理(lǐ)

在函數計算(suàn)的可觀測性上(shàng)面,提供了(le)日志收集和查詢功能(néng),除了(le)默認的簡單日志查詢功能(néng)外,還提供了(le)高級日志查詢,用戶可以更方便地進行日志分(fēn)析。在指标收集和可視(shì)化(huà)方面,函數計算(suàn)提供了(le)豐富的指标收集能(néng)力,并且提供了(le)标準指标、概覽信息等視(shì)圖,可以更方便用戶進行運維工作(zuò)。 下(xià)圖是應用交付的一(yī)個(gè)示意圖,在整個(gè)應用的交付過程中,隻有每個(gè)環節都做好(hǎo)(hǎo),才能(néng)夠建設一(yī)個(gè)敏捷的應用交付流程,其核心是自動化(huà),隻有做到了(le)自動化(huà),才能(néng)提升整個(gè)流水線的效率和敏捷度。

從單體(tǐ)邁向 Serverless 的避坑指南(nán)
▲ 敏捷的應用交付流程

下(xià)圖展示了(le)自動化(huà)應用交付流水線在每個(gè)環節的具體(tǐ)任務(wù)。其中需要注意的是做到基礎設施即代碼,才能(néng)進行模闆定義和自動化(huà)設置應用運行環境,進而實現(xiàn)自動化(huà)的持續集成等。

從單體(tǐ)邁向 Serverless 的避坑指南(nán)
自動化(huà)應用交付流水線

做到了(le)應用的自動化(huà)交付之後,對整個(gè)研發效率的幫助是非常大的。在 Serverless 應用上(shàng),阿裏雲提供了(le)多種工具來(lái)幫助用戶實現(xiàn)基礎設施即代碼。Serverless 的模型有一(yī)個(gè)很好(hǎo)(hǎo)的能(néng)力,就(jiù)是同一(yī)份模闆可以傳入不同的參數,進而生(shēng)成不同環境的定義,然後通過自動化(huà)地管理(lǐ)這(zhè)些(xiē)環境。

對于應用本身(shēn)不同服務(wù)版本的交付和灰度發布,函數計算(suàn)提供了(le)服務(wù)版本和服務(wù)别名來(lái)提供相應的服務(wù),整個(gè)應用的灰度發布流程可以簡化(huà)成一(yī)些(xiē) API 的操作(zuò),大大提升業務(wù)的效率。通過 Serverless 計算(suàn)平台提供的這(zhè)些(xiē)能(néng)力,整個(gè)軟件應用的交付流水線自動化(huà)程度得到了(le)大幅度的提高。

函數計算(suàn)還有一(yī)個(gè)很有用的功能(néng)——對存量應用的兼容性。通過 Custom runtime,能(néng)夠适配很多的流行框架,兼容傳統應用,使其能(néng)夠很容易地适配到 Serverless 平台上(shàng)面,由控制台提供應用的創建、部署、關(guān)聯資源管理(lǐ)、監控等一(yī)系列服務(wù)。

除了(le)函數計算(suàn),還可以用 Serverless 工作(zuò)流對不同的應用環節、不同的函數進行編排,通過描述性的語言去定義工作(zuò)流,由其可靠地執行每一(yī)個(gè)步驟,這(zhè)就(jiù)大幅度降低(dī)用戶對于複雜任務(wù)的編排難度。

應用場(chǎng)景案例

函數計算(suàn)有幾個(gè)典型的應用場(chǎng)景,一(yī)個(gè)就(jiù)是 Web/API 後端服務(wù),阿裏雲已經有包括石墨文檔、微博、世紀華聯在内的多個(gè)成功應用案例。

函數計算(suàn)的另外一(yī)個(gè)應用場(chǎng)景就(jiù)是大規模的數據并行處理(lǐ),比如(rú)往 OSS 上(shàng)面上(shàng)傳大量的圖片、音(yīn)頻、文本等數據,可以觸發函數做自定義的處理(lǐ),比如(rú)轉碼、截幀等。這(zhè)方面的成功案例包括虎撲、分(fēn)衆傳媒、百家互聯等。

函數計算(suàn)還有一(yī)個(gè)應用場(chǎng)景就(jiù)是數據實時(shí)流式處理(lǐ),比如(rú)不同的設備産生(shēng)的消息、日志發送到消息隊列等管道類似的服務(wù)中,就(jiù)可以觸發函數來(lái)進行流式處理(lǐ)。

最後一(yī)個(gè)應用場(chǎng)景就(jiù)是運維的自動化(huà),通過定時(shí)觸發、雲監控事(shì)件觸發、流程編排等方式調用函數完成運維任務(wù),大大降低(dī)運維成本和難度,典型的成功案例有圖森未來(lái)等。

圖森未來(lái)是一(yī)家專注于 L4 級别無人(rén)駕駛卡車技術研發與應用的人(rén)工智能(néng)企業,面向全球提供可大規模商(shāng)業化(huà)運營的無人(rén)駕駛卡車技術,為(wèi)全球物流運輸行業賦能(néng)。在路(lù)測過程中會有大量數據産生(shēng),而對這(zhè)些(xiē)數據的處理(lǐ)流程複雜多變,即使對于同一(yī)批數據,不同的業務(wù)小組也(yě)會有不同的使用及處理(lǐ)方式。如(rú)何有效管理(lǐ)不同的數據處理(lǐ)流程、降低(dī)人(rén)為(wèi)介入頻率能(néng)夠大幅的提高生(shēng)産效率。

路(lù)測不定時(shí)運行的特點使得流程編排任務(wù)運行時(shí)間(jiān)點、運行時(shí)長具有極大的不确定性,本地機房(fáng)獨自建立流程管理(lǐ)系統難以最大優化(huà)機器(qì)利用率,造成資源浪費。而圖森未來(lái)本地已有許多單元化(huà)業務(wù)處理(lǐ)腳本及應用程序,但(dàn)因為(wèi)各種限制而無法全量的遷移上(shàng)雲,這(zhè)也(yě)對如(rú)何合理(lǐ)化(huà)使用雲上(shàng)服務(wù)帶來(lái)了(le)挑戰。

針對上(shàng)述情況,圖森未來(lái)開始探索數據處理(lǐ)平台的自動化(huà)。阿裏雲 Serverless 工作(zuò)流按執行調度的次數計費,具有易用易集成、運維簡單等諸多優點,能(néng)夠很好(hǎo)(hǎo)地解決上(shàng)述場(chǎng)景中所遇到的問題,非常适合這(zhè)類不定時(shí)運行的離線任務(wù)場(chǎng)景。

Serverless 工作(zuò)流還支持編排本地或自建機房(fáng)的任務(wù),圖森未來(lái)通過使用 Serverless 工作(zuò)流原生(shēng)支持的消息服務(wù) MNS 解決了(le)雲上(shàng)雲下(xià)的數據打通問題,使得本地的原有任務(wù)得到很好(hǎo)(hǎo)的編排及管理(lǐ)。

除了(le)調度外,Serverless 工作(zuò)流也(yě)支持對任務(wù)的狀态及執行過程中所産生(shēng)的數據進行維護。圖森未來(lái)通過使用任務(wù)的輸入輸出映射及狀态彙報(bào)機制,高效地管理(lǐ)了(le)流程中各任務(wù)的生(shēng)命周期及相互間(jiān)的數據傳遞。

在未來(lái),随着業務(wù)規模的擴大,圖森未來(lái)将持續優化(huà)離線大數據處理(lǐ)流程的運行效率及自動化(huà)水平。通過各種探索,圖森未來(lái)将進一(yī)步提升工程團隊的效率,将更多的精力和資金(jīn)投入到業務(wù)創新(xīn)中去。

總結

Serverless 工作(zuò)流是阿裏雲 Serverless 産品體(tǐ)系中的關(guān)鍵一(yī)環。通過 Serverless 工作(zuò)流,用戶能(néng)夠将函數計算(suàn)、視(shì)覺智能(néng)平台等多個(gè)阿裏雲服務(wù),或者自建的服務(wù),以簡單直觀的方式編排為(wèi)工作(zuò)流,迅速構建彈性高可用的雲原生(shēng)應用。

自 2017 年推出函數計算(suàn)起,該服務(wù)根據應用負載變化(huà)實時(shí)智能(néng)地彈性擴縮容,1 分(fēn)鍾完成上(shàng)萬實例的伸縮并保證穩定的延時(shí)。目前已經支撐微博、芒果 TV、華大基因、圖森未來(lái)、石墨科技等用戶的關(guān)鍵應用,輕松應對業務(wù)洪峰。

課程推薦

為(wèi)了(le)更多開發者能(néng)夠享受到 Serverless 帶來(lái)的紅(hóng)利,這(zhè)一(yī)次,我們集結了(le) 10+ 位阿裏巴巴 Serverless 領域技術專家,打造出最适合開發者入門的 Serverless 公開課,讓你即學即用,輕松擁抱雲計算(suàn)的新(xīn)範式——Serverless。

點擊即可免費觀看課程: https://developer.aliyun.com/learning/roadmap/serverless

“ 阿裏巴巴雲原生(shēng)關(guān)注微服務(wù)、Serverless、容器(qì)、Service Mesh 等技術領域、聚焦雲原生(shēng)流行技術趨勢、雲原生(shēng)大規模的落地實踐,做最懂雲原生(shēng)開發者的公衆号。”


/template/Home/Zkeys/PC/Static