無伺服器會成為企業應用開發的下一個大事情嗎?

banq發表於2018-08-23
無伺服器是目前軟體架構模式中的熱門話題之一,與軟體工程中的許多其他術語或趨勢一樣,無伺服器也沒有明確的定義。這篇文章中介紹無伺服器及示例。此外,還將探索無伺服器的潛力,並討論無伺服器相關的一些爭議。


什麼是無伺服器
根據MartinFowler.com定義:

無伺服器架構指的是嚴重依賴於第三方的服務(後端即服務或“BaaS”)的應用程式,或者是指在短暫容器中執行的自定義程式碼(函式即服務或“FaaS”)

簡單來說,如果你沒有力量自己維護或管理系統來執行你的應用程式,那麼你可以選擇雲平臺根據使用情況付費,同時能自動獲得所需的高可用性、可擴充套件性和容錯能力。從你的角度來看,你正在執行無伺服器應用程式。

你作為在無伺服器環境中執行的應用程式的所有者,可以將100%精力專注於業務邏輯,而無需擔心其執行的基礎架構,以及應用程式周圍的其他非功能性需求,如高可用性,故障容忍度和可擴充套件性。


無伺服器只是炒作嗎?
如果你是無伺服器的新手並且正在考慮將其作為架構,那麼這個問題可能是你遇到的主要難題之一。是的,無伺服器現在是一種炒作,但在考慮過去以及技術如何發展之後,我個人認為它不僅僅是一個短期炒作,而是至少會在未來3 - 5年內一直這樣。無伺服器周邊的技術將被更改或替換,但無伺服器背後的概念不會變。

技術如何實現無伺服器化?
在解釋無伺服器功能有多強大之前,讓我們先看看IT在過去幾年中是如何發展的。

“你必須瞭解過去才能理解現在。” - 卡爾薩根
這就是它隨著時間的推移而演變的方式......

1989-1991-由Tim Berners-Lee爵士發明的全球資訊網
1991-1995 - 裸金屬時代
1995年 - 網路託管的發明
1999年 - Salesforce推出了軟體即服務(SaaS)概念
2001年 - VMWare釋出ESXi,“伺服器虛擬化”成為一件大事
2002-2006 - AWS誕生(IaaS),人們開始談論“雲端計算”
2009年 - Heroku和“平臺即服務”(PaaS)的發明
2011 - Envolve / Firebase,實時資料庫即服務
2012年 - Parse.com和第一個後端即服務(BaaS)
2013年 - Docker,“容器優於虛擬機器”
2013-2015 - Kubernetes / Swarm / Nomad / CoreOs(大規模容器)
2014年 - 推出AWS Lambda(FaaS)
(參考 -  http://www.computerweekly.com/feature/A-history-of-cloud-computing)

隨著AWS lambda的誕生,無伺服器這個詞與FaaS一起出現在舞臺上。雖然我們將Lambda視為無伺服器的起點,但容器化是無伺服器運動的第一次浪潮。隨著Docker化概念的深入,世界領先的雲服務提供商能夠為其客戶提供“按使用付費”的概念,以及使用其基礎設施實現業務所需的大多數非功能性要求。

無伺服器應用程式的關鍵特性
無伺服器應用程式有四個關鍵特徵:

1. 沒有伺服器管理 - 顧名思義,對於無伺服器應用程式,應用程式所有這邊端沒有涉及任何物理伺服器。如果你是應用程式所有者,使用無伺服器後你不會不知道你的應用程式執行了多少臺伺服器及其物理位置。

2. 靈活的擴充套件 - 由於你不瞭解物理伺服器層,因此你不必擔心其可擴充套件性。你的應用程式將按需分配更多資源,以管理所需的容量級別(可以是處理,記憶體,磁碟,資料庫儲存等)。

3. 高可用性 - 冗餘和容錯是無伺服器框架的內建功能。你無需保留自己的伺服器即可使應用程式具有高可用性。如果存在處理節點故障,則底層框架將自動為你生成一個新節點或多個節點,你根本不會感覺到任何東西發生。

4. 永遠不用為空閒付費 - 在無伺服器環境中,你永遠不會為空閒時間付費,這是成本考慮的關鍵優勢之一:-)

FaaS和無伺服器都是一樣的嗎?
這是當前的一個熱門話題,因為有些人聲稱FaaS是無伺服器概念的技術實現,而有些人認為無伺服器不受FaaS限制,而是更廣泛適用的概念。我同意後一組,讓我解釋一下為什麼......

FaaS只是無伺服器架構的事件驅動處理部分,對於應用程式,還有許多其他必需的構建塊,例如資料永續性,資料流,訊息傳遞,使用者管理等等,以提供端到端的功能。最重要的是,可能存在一些沒有FaaS元件的應用程式,但仍然可以將其視為無伺服器應用程式。

例如,如果我們需要一些靜態Web託管,那麼現在我們可以在不考慮物理伺服器的情況下做到這一點,這要歸功於世界領先的雲服務提供商。如果我們將AWS視為我們的雲服務提供商,我們可以將我們的網頁內容託管在S3儲存桶中,並啟用靜態Web託管來託管我們的網頁。要使其完整,你可以使用Route 53 for DNS和CloudFront for CDN做CDN加速。

另一個例子是具有胖客戶端的Web應用程式,它將僅使用後端服務進行身份驗證和實現資料永續性,你可以自己實現此類應用程式,而無需擁有自己的物理伺服器或FaaS元件。你可以使用許多雲端服務進行身份驗證和資料永續性。

無伺服器將成為未來嗎?
在回答這個問題之前,我建議你檢視此頁面,這是AWS頁面的產品部分。如果仔細觀察,大約有100個“提供服務的產品”,涵蓋整個軟體開發生命週期,從開發到部署和維護。

你如何看待AWS的願景?我堅信他們將推動這項改變世界的努力,以便我們能夠在他們的解決方案之上完全開發,測試,部署和維護我們的應用程式。

如果你還沒有準備好相信我,請看看在過去兩年內AWS服務的增長情況,從基礎架構的角度來看,他們正在迅速擴充套件其範圍並增強其產品,以涵蓋軟體生命週期過程中的幾乎所有要求。是的,其中一些服務尚未100%完成(其中很少一部分已在過去兩個月內釋出)並且完全可以替換為內部部署產品。但是,在未來2 - 3年內,他們將確保你在為應用程式開發,部署和維護選擇基礎架構之前不必考慮雲產品。

那麼,這些雲服務提供商在哪裡進行軟體開發和維護?當然,他們的目標是在無伺服器方法下覆蓋所有可能的場景,併為他們的客戶提供一個舒適的區域,以確保他們只需要專注於他們的業務邏輯,並將能夠充分發揮其潛力。

FaaS能否達到所需的容量水平?
現在你可能會想到這一點 - 如果我們要轉向無伺服器正規化,FaaS有多大能力促進所需的處理能力水平?讓我用一個示例FaaS產品來解釋這一點,AWS lambda(當然AWS不是本節中唯一的主要參與者,但我選擇的是我更熟悉的那個:-))。是的,如果你考慮AWS lambda的當前限制/約束,你可以輕易地爭辯說AWS lambda沒有能力有助於許多常見的處理方案。但是,對我來說,幾乎所有這些限制都只是軟限制,完全可以根據客戶要求輕鬆放寬。相信我,將來,他們肯定會擴充套件這些限制,以確保lambda能夠覆蓋至少90%的案例。

最近的一份報告稱,到2021年,FaaS市場預計將增長到32.7%。這僅適用於FaaS;如果你看一下無伺服器範例的完整圖片,你就會明白它有多大的潛力。

結論
無伺服器目前是一個熱門話題,在未來幾年內肯定會成為一個重大事情。在未來,你不必擔心基礎架構,因為你的完整軟體生命週期將取決於雲服務提供商。如果你熱衷於瞭解該技術,我歡迎你熟悉無伺服器範例和這些雲產品。


Will serverless be the future of enterprise applic

相關文章