發(fā)布于:2021-01-21 16:23:40
0
108
0
在21世紀頭十年,我們看到了從使用物理硬件到虛擬化的轉變。這種轉變是由現(xiàn)代cpu中時鐘頻率和內核數(shù)量的增加所驅動的。在單個物理服務器上運行單個應用程序不再具有成本效益。開源和商用虛擬機監(jiān)控程序解決方案開始在服務器市場獲得巨大的普及。
今天,我們看到了另一個從虛擬機到容器的轉變。容器是運行在操作系統(tǒng)內核之上的虛擬運行時環(huán)境,模擬操作系統(tǒng)本身。虛擬機和容器之間的區(qū)別在于虛擬機模擬硬件,而運行在虛擬機上的容器只模擬操作系統(tǒng)。
操作系統(tǒng)仿真有許多好處。在容器中運行的進程彼此隔離。容器可以快速啟動和終止,因為它們的占用空間或大小通常是最小的,這使它們成為快速擴展的最佳選擇。
虛擬機和容器允許軟件更好地利用購買的硬件。多個應用程序可以在同一硬件上同時運行。對于財政部門來說,高利用率意味著資本支出的有效利用。
這就是無服務器模式的用武之地。無服務器計算將應用程序體系結構描述為托管云服務的集合。像AWS Lambda、Aurora或CloudFront這樣的托管服務提供了高附加值,并允許您快速構建應用程序。您將時間花在開發(fā)業(yè)務邏輯上,而不是擺弄基礎設施,比如確保數(shù)據(jù)庫作為集群運行。無服務器應用程序模型可以幫助您加速應用程序堆棧,并輕松組織和管理與應用程序關聯(lián)的云資源的狀態(tài)。
集裝箱空間的重大技術進步使無服務器計算成為可能。云提供商努力減少開銷,并允許在他們的平臺上快速調配資源,很快發(fā)現(xiàn)有必要開發(fā)新型的硬件加速虛擬機監(jiān)控程序。
硬件加速的hypervisor(如awsnitro)和虛擬機監(jiān)視器(如awsfielcracker)的結合允許快速部署和執(zhí)行容器環(huán)境。由于新一代的硬件加速虛擬機監(jiān)控程序,像AWS Lambda這樣的計算服務現(xiàn)在提供了更高的CPU、磁盤和網(wǎng)絡I/O性能。
一個經(jīng)濟高效的云環(huán)境完全是關于所提供資源的高利用率。無服務器計算保證您始終以100%的利用率運行應用程序。在無服務器上運行應用程序時,您的資源調配總是完美的,因為您只需為實際使用的機器時間付費。
與經(jīng)典的計算服務(如EC2)相比,無服務器計算可以很好地適應傳入的流量。使用經(jīng)典EC2進行擴展通常涉及另一個稱為auto Scaling的服務。自動伸縮本身是一項復雜的功能,它可以跟蹤選定的指標,如CPU負載或虛擬機的網(wǎng)絡利用率。自動縮放使用這些度量觸發(fā)警報,以向上或向下縮放EC2實例群。正如您所知,EC2艦隊擴展涉及很多步驟,而且很容易遺漏一些東西,因為每個應用程序都非常不同。
使用無服務器,您可以忘記所有的復雜性。無服務器應用程序擴展實際上只是復制最終的容器來選擇hypervisor,執(zhí)行它,并將所有傳入的事件路由到它。如果您的無服務器應用程序符合容器大小和運行時內存限制,那么您就可以開始了,您的應用程序將可以適當?shù)財U展。這是由運行在硬件附近的容器和虛擬機監(jiān)控程序實現(xiàn)的。Serverless幾乎沒有操作系統(tǒng)開銷,因為它只運行內核代碼和容器中的應用程序。
可伸縮性是serverless擅長的,但它也有一些局限性。無服務器是基于事件處理的完美計算模型。web上的大多數(shù)工作負載都是基于事件的,或者可以轉換為事件。目前,serverless不能很好地處理長時間運行的進程,因為AWS Lambda和其他云服務有執(zhí)行限制。經(jīng)典的VM計算或其他類型的基于容器的計算仍然更適合長時間運行的進程。只要您的工作負載可以是事件驅動的,并且處理事件的速度相對較快,而且資源需求較低,那么無服務器應該可以很好地滿足您的需要。當前的無服務器限制似乎都不是永久性的,服務產(chǎn)品應該隨著時間的推移而發(fā)展和改進。昨天有問題的限制明天可能就不存在了。
最后,最重要的是:成本。開發(fā)和運行無服務器應用程序要便宜多少?我得說這取決于應用程序。當您的應用程序擴展良好時,它們將為您和您的用戶提供更好的價值。你可以便宜一點。無服務器的幫助是,消除了對不使用的計算資源的過度配置和過度支付。雖然serverless改進了可伸縮性,但其他收費利用率仍然適用您仍然應該考慮您使用了多少帶寬、存儲和數(shù)據(jù)庫卷。無服務器目前無法幫助您更好地利用這些資源,這仍取決于您和您的應用程序。
你可能在網(wǎng)上看到過關于無服務器和供應商鎖定的帖子。我想說,您仍然可以在應用程序的體系結構中控制這些方面。無服務器計算有許多好處—性能優(yōu)異、安裝簡單、開發(fā)和部署迅速。這就是為什么serverless成為我工具箱中的一個重要工具,用于構建高性能的應用程序,同時保持低成本。如果你還沒試過做仆人,你應該做。從探索無服務器應用程序模型開始。