如今,各行各業都在談數字化轉型,尤其是新零售、傳媒、交通等行業。數字化的商業形态已經成為主流,逐漸替代了傳統的商業形态。在另外一些行業裡(如工業制造),雖然企業的商業形态并非以數字化的形式表現,但是在數字孿生理念下,充分利用資料科技進行生産營運優化也正在成為研究熱點和行業共識。
企業進行數字化轉型,從生産資料、生産關系、戰略規劃、增長曲線四個層面來看:
- 生産資料:資料成為最重要的生産資料,需求/風險随時變化,企業面臨巨大的不确定性。
- 生産關系:資料為中心,非基于流程和規則的固定生産關系。網絡效應令生産關系跨越時空限制,多連接配接方式催生新的業務和物種。
- 戰略規劃:基于資料決策,快速應對不确定的商業環境。
- 增長曲線:數字化技術帶來觸達海量使用者的能力,可帶來突破性的增長。
從雲服務商的角度來看雲的演進趨勢,在Cloud 1.0時代,基礎設施的雲化是其主題,采用雲托管模式,雲上雲下的應用保持相容,傳統的應用可以直接遷移到雲上,這種方式的核心價值在于資源的彈性和成本的低廉;在基礎設施提供了海量算力之後,怎麼幫助使用者更好地利用算力,加速企業創新的速度,就成為雲的核心能力。
如果仍在伺服器上建構基礎應用,那麼研發成本就會很高,管理難度也很大,是以有了Cloud 2.0,也就是雲原生時代。在雲原生時代,雲服務商提供了豐富的托管服務,助力企業數字化轉型和創新,使用者可以像搭積木一樣基于各種雲服務來建構應用,大大降低了研發成本。
雲原生應用要素
雲原生應用有三個非常關鍵的要素:微服務架構,應用容器化和Serverless化,靈活的軟體傳遞流程。
1. 微服務架構
單體架構和微服務架構各有各的特點,其主要特點對比如下圖所示。總的來說,單體架構上手快,但是維護難,微服務架構部署較難,但是獨立性和靈活性更好,更适合雲原生應用。

2. 應用容器化和Serverless化
容器是目前最流行的代碼封裝方式,借助K8s及其生态的能力,大大降低了整個基礎設施的管理難度,而且容器在程式的支撐性方面提供非常出色的靈活性和可移植性,越來越多的使用者開始使用容器來封裝整個應用。
Serverless計算是另外一種形态,做了大量的端到端整合和雲服務的內建,大大提高了研發效率,但是對傳統應用的相容性沒有容器那麼靈活,但是也帶來了很大的整潔性,使用者隻需要專注于業務邏輯的編碼,聚焦于業務邏輯的創新即可。
3. 靈活的應用傳遞流程
靈活的應用傳遞流程是非常重要的一個要素,主要包括流程自動化,專注于功能開發,快速發現問題,快速釋出上線。
Serverless 計算
1. 阿裡雲函數計算
Serverless是一個新的概念,但是其内涵早就已經存在。阿裡雲或者AWS的第一個雲服務都是對象存儲,對象儲存實際上就是一個存儲領域的Serverless服務;另外,Serverless指的是一個産品體系,而不是單個産品。目前業界雲服務商推出的新功能或者新産品絕大多數都是Serverless形态的。阿裡雲Serverless産品體系包括計算、存儲、API、分析和中間件等,目前雲的産品體系正在Serverless化。
阿裡雲Serverless計算平台函數計算,有4個特點:
- 和雲端無縫內建:通過事件驅動的方式将雲端的各種服務與函數計算無縫內建,使用者隻需要關注函數的開發,事件的觸發等均由服務商來完成。
- 實時彈性伸縮:由系統自動完成函數計算的彈性伸縮,且速度非常快,使用者可以将這種能力用在線上應用上。
- 次秒級計量:次秒級的計量方式提供了一種完全的按需計量方式,資源使用率能達到百分之百。
- 高可用:函數計算平台做了大量工作幫助使用者建構高可用的應用。
那麼,阿裡雲函數計算是如何做到以上4點呢?阿裡雲函數計算的産品能力大圖如下圖所示,首先函數計算産品是建立在阿裡巴巴的基礎設施服務之上的産品,對在其之上的計算層進行了大量優化。接着在應用層開發了大量能力和工具,基于以上産品能力,為使用者提供多種場景下完整的解決方案,才有了整個優秀的函數計算産品。函數計算是阿裡雲的一個非常基礎的雲産品,阿裡雲的許多産品和功能均是建立在函數計算的基礎上。目前阿裡雲函數計算已經在全球19個區域提供服務。
2. Serverless幫助使用者簡化雲原生應用高可用設計、實施的複雜度
雲原生應用的高可用是一個系統的工程,包括衆多方面,完整的高可用體系建構需要很多時間和精力。那麼Serverless計算是如何幫助使用者簡化雲原生應用高可用設計、實施的複雜度呢?
如下圖所示,高可用體系建設要考慮的點包括基礎設施層、運作時層、資料層以及應用層,且每一層都有大量的工作要做才可以實作高可用。函數計算主要是從容錯、彈性、流控、監控四方面做了大量工作來實作高可用,下圖中藍色虛線框所對應的功能均由平台來實作,使用者是不需要考慮的。藍色實線框雖然平台做了一些工作來簡化使用者的工作難度,但是仍需要使用者來進行關注,而橘紅色的實線框代表需要使用者去負責的部分功能。結合平台提供的功能和使用者的部分精力投入,可以極大地減輕使用者進行高可用體系建設的難度。
函數計算在很多方面做了優化來幫助使用者建設高可用體系。下圖展示了函數計算在可用區容災方面的能力。從圖中可知,函數計算做了相應的負載均衡,使得容災能力大大提升。
函數計算多可用區容災
下圖展示的是函數計算對事件的異步處理,其處理流水線主要包括事件隊列、事件分發、事件消費三個環節,在每一個環節上都可以進行水準伸縮,其中一個比較關鍵的點是事件的分發需要比對下遊的消費能力。另外,通過為不同函數指定不同數量的計算資源,使用者能友善地動态調整不同類型事件的消費速度。此外,還可以自定義錯誤重試邏輯,并且有背壓回報和流控,不會在短時間内産生大量請求時壓垮下一個服務。
函數計算事件異步處理
在函數計算的可觀測性上面,提供了日志收集和查詢功能,除了預設的簡單日志查詢功能外,還提供了進階日志查詢,使用者可以更友善地進行日志分析。在名額收集和可視化方面,函數計算提供了豐富的名額收集能力,并且提供了标準名額、概覽資訊等視圖,可以更友善使用者進行運維工作。
下圖是應用傳遞的一個示意圖,在整個應用的傳遞過程中,隻有每個環節都做好,才能夠建設一個靈活的應用傳遞流程,其核心是自動化,隻有做到了自動化,才能提升整個流水線的效率和靈活度。
靈活的應用傳遞流程
下圖展示了自動化應用傳遞流水線在每個環節的具體任務。其中需要注意的是做到基礎設施即代碼,才能進行模闆定義和自動化設定應用運作環境,進而實作自動化的持續內建等。
自動化應用傳遞流水線
做到了應用的自動化傳遞之後,對整個研發效率的幫助是非常大的。在Serverless應用上,阿裡雲提供了多種工具來幫助使用者實作基礎設施即代碼。Serverless的模型有一個很好的能力,就是同一份模闆可以傳入不同的參數,進而生成不同環境的定義,然後通過自動化地管理這些環境。
對于應用本身不同服務版本的傳遞和灰階釋出,函數計算提供了服務版本和服務别名來提供相應的服務,整個應用的灰階釋出流程可以簡化成一些API的操作,大大提升業務的效率。通過Serverless計算平台提供的這些能力,整個軟體應用的傳遞流水線自動化程度得到了大幅度的提高。
函數計算還有一個很有用的功能——對存量應用的相容性。通過Custom runtime,能夠适配很多的流行架構,相容傳統應用,使其能夠很容易地适配到Serverless平台上面,由控制台提供應用的建立、部署、關聯資源管理、監控等一系列服務。
除了函數計算,還可以用Serverless工作流對不同的應用環節、不同的函數進行編排,通過描述性的語言去定義工作流,由其可靠地執行每一個步驟,這就大幅度降低使用者對于複雜任務的編排難度。
應用場景案例
函數計算有幾個典型的應用場景,一個就是Web/API後端服務,阿裡雲已經有包括石墨文檔、微網誌、世紀華聯在内的多個成功應用案例。
函數計算的另外一個應用場景就是大規模的資料并行處理,比如往OSS上面上傳大量的圖檔、音頻、文本等資料,可以觸發函數做自定義的處理,比如轉碼、截幀等。這方面的成功案例包括虎撲、分衆傳媒、百家互聯等。
函數計算還有一個應用場景就是資料實時流式處理,比如不同的裝置産生的消息、日志發送到消息隊列等管道類似的服務中,就可以觸發函數來進行流式處理。
最後一個應用場景就是運維的自動化,通過定時觸發、雲監控事件觸發、流程編排等方式調用函數完成運維任務,大大降低運維成本和難度,典型的成功案例有圖森未來等。
圖森未來是一家專注于L4級别無人駕駛卡車技術研發與應用的人工智能企業,面向全球提供可大規模商業化營運的無人駕駛卡車技術,為全球物流運輸行業賦能。在路測過程中會有大量資料産生,而對這些資料的處理流程複雜多變,即使對于同一批資料,不同的業務小組也會有不同的使用及處理方式。如何有效管理不同的資料處理流程、降低人為介入頻率能夠大幅的提高生産效率。
路測不定時運作的特點使得流程編排任務運作時間點、運作時長具有極大的不确定性,本地機房獨自建立流程管理系統難以最大優化機器使用率,造成資源浪費。而圖森未來本地已有許多單元化業務處理腳本及應用程式,但因為各種限制而無法全量的遷移上雲,這也對如何合理化使用雲上服務帶來了挑戰。
針對上述情況,圖森未來開始探索資料處理平台的自動化。阿裡雲 Serverless 工作流按執行排程的次數計費,具有易用易內建、運維簡單等諸多優點,能夠很好的解決上述場景中所遇到的問題,非常适合這類不定時運作的離線任務場景。
Serverless 工作流還支援編排本地或自建機房的任務,圖森未來通過使用Serverless 工作流原生支援的消息服務MNS解決了雲上雲下的資料打通問題,使得本地的原有任務得到很好的編排及管理。
除了排程外,Serverless 工作流也支援對任務的狀态及執行過程中所産生的資料進行維護。圖森未來通過使用任務的輸入輸出映射及狀态彙報機制,高效的管理了流程中各任務的生命周期及互相間的資料傳遞。
在未來,随着業務規模的擴大,圖森未來将持續優化離線大資料處理流程的運作效率及自動化水準。通過各種探索,圖森未來将進一步提升工程團隊的效率,将更多的精力和資金投入到業務創新中去。
總結
Serverless 工作流是阿裡雲 Serverless 産品體系中的關鍵一環。通過 Serverless 工作流,使用者能夠将函數計算、視覺智能平台等多個阿裡雲服務,或者自建的服務,以簡單直覺的方式編排為工作流,迅速建構彈性高可用的雲原生應用。
自2017年推出函數計算起, 該服務根據應用負載變化實時智能地彈性擴縮容,1分鐘完成上萬執行個體的伸縮并保證穩定的延時。目前已經支撐微網誌、芒果TV、華大基因、圖森未來、石墨科技等使用者的關鍵應用,輕松應對業務洪峰。