無服務器計算(Serverless Computing)來了,設備商先別急著跑,這其實是軟件開發人員和管理者的春天。所謂“無服務器”是一種抽象概念,開發人員編好代碼上傳到云,無需配置或管理服務器即可運行代碼,按照所編好的被管理代碼計算時間付費。如果說DevOps(開發運維一體化)是敏捷協作的代表,那么無服務器計算強調的則是NoOps。
什么是NoOps?當然不是完全放棄運維,而是要突出自動化運維,避免更多的人工干預,與無服務器計算的思路有著異曲同工之妙。既然無法擺脫“顯性”的基礎設施,干脆就把應用程序從原有的框架中取出來。在一定程度上,算是改變了軟件的開發和部署模式,對于開發者來說最直觀的影響就是付費。事實上,隨著虛擬機轉向容器和微服務,這也為無服務器計算概念的推廣奠定了基礎,帶來了更加細分化的需求。
原有整體交付的方式可以被拆分為單獨功能或代碼實現,即一段完整的業務流不僅能夠體現為一段視頻或一幅圖片,也可以是一行代碼,這些代碼形成的片段均可實現完整功能。借助無服務器計算,系統能夠自行編排代碼片段。應用程序會直接在服務器上運行,幾乎所有的管理工作交由服務商來負責,使用者無需進行預置、擴展、維護等操作,即可運行數據庫、存儲或軟件程序。
無論是虛擬機還是容器,都可以看作是通過代碼實現的方案,本質上與無服務器計算并不沖突。操作過程中,開發人員無需考慮選擇什么容器,只要安心編寫代碼,由服務商將片段加以整合管理,節省了軟件創建時的付出,讓雙方做各自擅長的事情,效率更高。在彈性基礎架構中,開發者能夠將應用“切成”小塊通過高度擴展的方式部署。從某種程度上來說,無服務器計算為資源使用提供了新模式,其定位更像是介于IaaS和PaaS之間。
計費方面,開發者不用像原來那樣為了數分鐘或數小時的應用實例支付整套費用,而是只需支付某一段函數運行的幾毫秒,這種方式是更精準的按需付費。按照這個邏輯,無服務器計算平臺在云端似乎更適用于由眾多微服務“拼接”而成的應用。無論是基礎設施管理還是應用構建,均節省了不少“無用功”。
目前,涉足無服務器計算的不僅包括亞馬遜(AWS Lambda)、微軟(Azure Functions)、谷歌(Cloud Functions)、IBM(OpenWhisk)這樣的巨頭公司,還有Iron.io這樣的垂直公司。這些服務各有特色,例如OpenWhisk主打開源,Azure Functions結合了微軟IoT、SaaS方案,Iron.io則是希望構建主流公有云和私有云的全平臺兼容,確保高度可移植性。
盡管有大廠商撐腰,無服務器計算也并非盡善盡美,至少在操作難易度、運行時間效率、開發語言支持等方面仍需完善。同時,由于開發者的代碼控制權有所削弱,隨之而來的安全性問題也必須引起重視。對于企業客戶來說,微服務、容器、無服務器計算只是豐富了更多選項,至于如何在實踐中提升效率,還要看開發者對架構和應用的評估,畢竟Serverless Computing不是萬能藥。