無服務器計算的應用趨勢如今正在上升,但這并不意味著它適用于每個場景或組織。而組織是否為采用無服務器做好了準備?
無服務器計算是一種軟件架構模型,也就是用戶采用云計算服務提供商的服務器并動態管理計算資源的分配。“無服務器”這個術語是一個誤稱,因此在某種意義上,服務器仍然參與到計算過程中。此外,這種類型服務的定價基于應用程序消耗的實際資源量而不是預先購買的容量單位。
根據調研機構Markets and Markets公司2018年發布的調查報告,無服務器架構市場規模在2018年為42.5億美元,預計到2023年將達到149.3億美元,在這個預測期間的復合年增長率(CAGR)為29%。預計北美地區在預測期內將占據最大的市場份額,其部分原因是云計算服務的早期采用。
預計推動市場增長的主要因素是組織消除對服務器的管理需求,從而降低基礎設施成本,簡化部署、管理和執行。微服務架構的廣泛應用也有助于推動增長。
Markets and Markets公司表示,自動化和集成服務在無服務器架構的部署中發揮著重要作用。自動化服務有助于有效管理部署在混合IT平臺上的微服務,以提供更快的響應,以及計算資源的最佳使用。
Gartner公司也看好無服務器計算的應用增長。該研究機構將無服務器計算列為其影響2019年基礎設施和運營的十大趨勢之一,并指出新出現的軟件架構模型將消除對基礎設施供應和管理的需求。
無服務器計算對IT管理員的吸引力
德勤公司的云計算實踐主管Ken Corless表示,無服務器不僅對應用程序開發人員很有吸引力,而且對系統運營人員也很有吸引力。
無論是由超大型云計算提供商提供,還是組織采用市場上的各種解決方案實現內部部署,無服務器計算的目標都是一樣的。“組織采用自動化和自助服務,以加快軟件開發生命周期。”Corless說。
對于IT管理員來說,無服務器可以減少基于票證的工作負載的“請求-響應”周期,并允許管理員專注于更高級別的任務,例如基礎設施設計或創建更多自動化。
Corless提出了兩個主要用例。一個是在應用程序開發中,用于創建基于服務的現代松散耦合應用程序。功能即服務(FaaS)和后端即服務(BaaS)這兩種支持無服務器計算的云服務,都可以通過保持小規模團隊而顯著提高軟件交付團隊的生產力。
另一個重要的用例是系統管理員。“他們所尋求的自動化可以通過無服務器技術快速、輕松、漸進地實現。”Corless說。例如,在德勤公司的云計算管理業務中,該公司廣泛使用無服務器來自動化產品的運營。
然而,正如云計算服務一樣,在某些情況下,無服務器可能比支付虛擬機的費用更高,Corless表示,目前在虛擬機上運行的應用程序,在無服務器環境中,連續使用率達到80%可能會更高。
“盡管如此,無服務器的真正承諾是讓更少的人完成IT業務的一些平凡任務,例如軟件修補和備份。”Corless說。這有兩個好處。首先,執行這些平凡任務的人員可以專注于在IT或企業中的其他地方創造價值。
Corless說,“沒有人會為那些使DNS域名系統發生變化而感到高興,這些人可能重新開發新功能。而推動更多自動化是人們看到的最重要的事情。”
第二個好處是,可以使中小企業也具有更強的自我決定能力。Corless說,“隨著基礎設施管理的專業知識和指南的自動化,團隊可以自我服務,并安全地做到這一點。然而,這通常需要一些投資來實現標準和指南的自動化,因為我們從無服務器產品中看到的通常不夠安全,不需要某種類型的限制就無法使用。”
調研機構IDC公司的平臺即服務研究主管Larry Carvalho說,只要應用程序能夠利用事件驅動的計算和解耦服務,這是無服務器平臺的理想選擇。
Carvalho說,最常見的用例是物聯網(IoT)應用程序和需要事件驅動處理的移動后端。其他用例是批處理或流處理,用于對事件的實時反應。
無服務器計算最佳實踐
那么組織如何幫助確保無服務器的成功?以下是專家提出的一些建議和做法,將服務器產品的約束帶入設計過程。
市場營銷技術提供商Cordial公司物聯網平臺架構師Daniel Smith說,轉換為無服務器的工程團隊經常忽略即使是最靈活的產品也存在嚴格的限制。
Smith說,“組織要牢記無服務器只是其他人的服務器或容器,有自己的設計限制,這將對無服務器的成功有很大的幫助。在無服務器的堆棧中劃分責任的線要高得多,因此在設計和實現過程中需要考慮總運行時間、消耗的CPU時間或總體內存使用等約束。”
Cordial公司于2015年開始探索無服務器技術,其目標是在不可預測的資源使用期間建立可預測的成本模型。“作為一家初創企業,擁有一個可預測的、基于需求的成本結構是很有吸引力的。”Smith說。
2018年5月,該公司開始使用Cloudflare公司的Workers技術作為其部分系統的替代品。作為代表客戶為消費者服務的B2B公司,Cordial公司與消費者的互動需要盡可能快。
Smith說,“這通常需要將工作負載盡可能地靠近消費者。”
無服務器提供了這種服務。由于Cordial公司已經能夠減小微服務的規模,因此它愿意嘗試使用其他方式無法部署的編程語言,從而使企業能夠更快、更自信地提供更高效的產品。
設計有限的工作負載
Smith指出,組織應該將無服務器架構視為單一方法或功能的執行引擎。
Smith說,“進一步細化這個目標,功能的輸入和輸出應該是可以處理的最小的可能數據。不使用無服務器功能處理數據文件,而是將每行數據單獨地執行。”
通過減少每個工作單元的大小,可以加快開始轉向網絡在服務之間移動數據的速度。Smith說,“對于移動中的數據,人們可以開始將網絡視為一種易變的存儲設施,每秒為每個網絡接口提供10GB的存儲。硬盤是速度最慢的系統組件,因此需要避免采用。”
使功能盡可能是無狀態的
應用程序性能軟件提供商Dynatrace公司軟件工程師Daniel Dyla表示,整體應用程序中常見的全局變量不適用于無服務器應用程序,因為調用之間的全局狀態可能不會持久。
Dyla說,“為了解決這個問題,無服務器功能應盡可能是無狀態的。如果需要狀態,最好有一個功能從外部數據庫收集狀態,并調用另一個執行實際數據處理的無狀態功能。通過這種方式,企業可以將狀態隔離到指定的位置,以便更容易管理。”
Dyla說,Dynatrace公司在過去幾年中一直使用無服務器技術,受到低成本、擴展能力、事件驅動調用的吸引。該公司正在使用無服務器計算的輪詢系統,這些系統需要連續運行才能進行批處理。
Dyla說,“我們看到的主要好處是成本低,我們的無服務器功能往往是一小段代碼,突發負載可以從零開始迅速擴展。”
自動化部署和測試
電子發現軟件提供商Relativity公司高級軟件工程師Hristo Papazov表示,雖然有些工具可以輕松實現無服務器計算的人工部署,但部署的自動化使企業可以實現一致的實施,而且不會出現人為錯誤。
Papazov說,“自動化還允許組織內的其他團隊輕松采用這些技術。”
Relativity公司正在使用來自微軟Azure云服務的無服務器技術,作為通過確保其核心組件正常運行來改善其電子發現平臺的客戶體驗努力的一部分。Papazov說,該公司利用無服務器的內部監控工具,使用戶能夠處理大量的遙測數據,以快速檢測和解決問題。
隨著無服務器應用程序日益復雜,單元測試成為開發周期的一個關鍵部分,自動化也有助于實現這一點,Papazov說,“在微軟公司推出Azure功能時,進行單元測試是非常困難的。而從那時起已經發展了很長一段時間,現在向項目添加單元測試非常容易。”
了解現代應用程序架構
Carvalho說,管理者應該將應用程序分解為短期運行、獨立、分離的服務。他說,“構建一個無狀態應用程序,同時利用API管理等支持服務來實現用戶身份的通信和安全功能。”
Carvalho表示,“可以通過提取業務邏輯,并在無服務器框架中將它們作為微服務運行來分解連續運行以處理傳入事務的Web應用程序服務器。這可以消除持續運行服務器的成本,同時將故障轉移的難題交給云計算提供商。”
使網絡安全成為優先事項
雖然無服務器公司可能不必擔心修補服務器或運行防病毒軟件,但基于應用程序編程接口(API)的無服務器產品大大增加了解決方案的端點。Corless說,“如果企業的客戶或合作伙伴使用API,將會面臨更多的風險。”
企業可能需要重新考慮他們對防火墻規則的處理方式,“因為修改可以快速制造無法控制的混亂。”Corless說。