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

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

什麼是無服務器

根據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;如果你看一下無服務器範例的完整圖片,你就會明白它有多大的潛力。

結論

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

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


分享到:


相關文章: