無服務和微服務架構,誰是業務計算的未來?
譯文【51CTO.com快譯】無服務器計算(通常簡稱為無服務器)是一種極具潛力的云端技術模型。近年來,它經常出現在應用程序的開發,以及軟件體系架構中。為了讓無服務器框架發揮巨大的潛力,諸如Google、Microsoft、IBM和Amazon之類的軟件巨頭,已經開始向客戶提供了能夠將本地所有運營業務,遷移并托管到他們的旗艦無服務器平臺(如:AWS Lambda和Azure Functions)上的方法與工具。
簡而言之,無服務器架構是一種事件和請求驅動的技術解決方案。它允許應用開發人員在云端創建可操作的工作環境。該環境提供了實現編碼流能夠順暢運行的所有必要的計算資源。該框架在時間緊、且任務相當耗費資源的情況下,顯得非常實用。
此外,在選擇無服務器服務,以簡化應用開發流程的同時,您也可以用它來大幅改善諸如DevOps和敏捷實踐等其他業務優化計劃。
無服務器和微服務模型的區別?
總的說來,這兩種架構的相似之處在于:它們都能夠最大程度地降低運營的成本,縮短應用部署的周期,滿足不斷變化的開發需求,以及優化那些對于時間和資源敏感的日常任務。那么,微服務和無服務器模型之間的不同之處在哪里呢?
首先,微服務屬于一種小型的SOA(面向服務的體系架構)技術解決方案。它可以為程序員提供對于托管在云服務器上相關庫的完全訪問權限,并允許他們部署各種功能模塊,以及諸如JSON、RESTful、AMQP、SOAP等多種協議和API。
通常,微服務體系架構是通過諸如Docker之類的可執行程序包,來實現數據的容器化,并在開發人員訪問某些給定的API時,按需解壓縮所有的必要數據。因此,多個微服務模型可以確保運維人員通過在云平臺上的各項操作,來持續部署應用程序。
不過,由于企業配置的那些閑置的微服務也會處于活動狀態,因此,用戶必須持續按照每個服務每天的標準為占用的容量和資源支付費用。顯然這會讓企業深感微服務架構價格不菲。
而無服務器的各項功能函數僅在滿足了既定事件時,才會被觸發。而在完成操作后,功能函數將根據用戶輸入的命令,執行一系列操作。也就是說,無服務器平臺運用一組預處理的算法和規則,來處理計算,并得出相應的結果。可見,這會讓應用程序開發人員覺得無服務器架構更有吸引力。畢竟,它是按需提供的云端執行環境的。
通過對比,我們不難發現,微服務更適合于電子商務網站等用例,它們需要優先考慮各種大型數據集的容器化。在優化開發成本和時間方面,無服務器則展示了其巨大的潛力。
此外,如果您的業務流程是基于事件的,而且您不想一直運行某些操作任務的話,那么您最好選擇便是無服務器架構。它對于那些時常觸發各類警報與通知的物聯網驅動型應用來說尤為適用。下面,我們將進一步討論無服務器的工作原理和各種特性。
無服務器的工作原理
作為由預配置事件驅動的開發模型,無服務器利用多種基于云端的分布式服務,來簡化軟件部署的工作流。通常,它能夠提供如下兩種互補的服務模型:
- 后端即服務(Backend as a Service,BaaS)
- 服務即服務(Function as a Service,FaaS)
其中,BaaS就是利用第三方多租戶架構的功能,來增強用戶應用的部署和交付效率。此類通用功能通常是以SDK或API網關的形式被提供出來,并且所有的必需操作都僅能在云中執行。因此,它為傳統的本地部署架構有效地提供了代碼數據。同時,此方案享有真正快速的開發周期。它能夠將全部軟件和基礎架構的維護責任,移交給BaaS的服務提供商。此外,應用開發人員還可以隨時擴展其部署的流程。
而諸如AWS Lambda之類的FaaS平臺則屬于事件驅動開發架構的類型。它可以通過按使用付費的模型方式,提供強大的托管服務,而且僅在預定的功能或事件被滿足的情況下被觸發。因此,此類激活FaaS功能的常見觸發器包括:各種預定的事件、文件的上載、對存儲庫新的提交、電子郵件、數據庫的更新、以及HTTP API的調用等。
無服務器通過將BaaS和FaaS模型相結合,幫助開發人員處理復雜的資源密集型任務,其中包括:各種托管數據、基礎架構、以及業務邏輯元素等廣泛的功能。
使用無服務器的好處
- 可設計出自動擴展的服務。通過自帶的靈活性,無服務器方案可以按需擴展其計算資源和功能。相反,在訪問高峰時段結束后,其支撐的云端工作環境能夠針對較少的負載處理需求,進行自動收縮。
- 改進了部署。借助無服務器功能,程序員對于應用的開發和部署,會變得非常容易和便捷。他們不再需要考慮諸如:基礎架構的維護、以及數據及時同步之類的附加方面。可見,無服務器架構的靈活性,能夠使得大多數工作流程得以順利地自動化推進。
- 穩定性。無服務器架構會將企業的大部分數據和基礎架構管理職責轉移給了云服務提供商。它釋放了您團隊的大量工作時間,使您不必像過去在傳統的本地軟件平臺上那樣,去關注基礎設施的簡化,編排和分配代碼數據,以及處理停機問題。
- 成本效益。實際上,成本最小化才是真正能夠使無服務器,在眾多基于云端的解決方案中脫穎而出的原因。正如我們在前面比較過的,按使用付費的方法,有助于企業避免產生不必要的應用開發和部署費用。只有在那些預先設定的事件引發了云端相應的操作時,企業才需要為服務器的運行時間付費。
- 減少延遲。由于企業的所有數據資產,都被托管在基于云端的服務器上,因此無服務器能夠讓企業將資源分配到,最接近最終用戶的那臺服務器上。據此,數據的順暢連接和互操作性,不但得到了保障,而且大幅減少了那些時間緊迫的故障和系統停機時間。
綜上所述,您是不是會認為無服務架構就絕對比位服務架構好呢?不一定。在實踐中,您還是需要根據自己手頭業務的實際需求,通過綜合比較,再做出恰當的選擇。
原文標題:Serverless vs. Microservices Architecture: Is This the Future of Business Computing?,作者:Dana Kozubska
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】