容器:軟件性能測(cè)試的最佳環(huán)境
譯文【51CTO.com快譯】 軟件性能和可伸縮性是我們談?wù)搼?yīng)用程序開(kāi)發(fā)時(shí)經(jīng)常遇到的話題。一個(gè)很大的原因是應(yīng)用程序的性能和可伸縮性直接影響其在市場(chǎng)上的成功。一個(gè)應(yīng)用程序,不管它的用戶界面有多好,如果它的響應(yīng)時(shí)間很慢,就不會(huì)擁有高市場(chǎng)份額。這就是為什么我們花這么多時(shí)間改進(jìn)應(yīng)用程序的性能和可伸縮性,因?yàn)樗挠脩艋A(chǔ)在增長(zhǎng)。
日常測(cè)試失敗在哪?
幸運(yùn)的是,我們有很多工具來(lái)測(cè)試高負(fù)荷條件下的軟件行為,也可以幫助識(shí)別工具性能和可擴(kuò)展性存在的問(wèn)題。而其他基準(zhǔn)測(cè)試工具也可以要求測(cè)試系統(tǒng)在高負(fù)荷下提供系統(tǒng)穩(wěn)定性的測(cè)試。然而,當(dāng)我們嘗試使用這些工具來(lái)測(cè)試企業(yè)產(chǎn)品的性能時(shí),我們遇到了性能和規(guī)模工程的問(wèn)題。一般來(lái)說(shuō),這些產(chǎn)品不是單一的應(yīng)用程序,而是由幾個(gè)不同的應(yīng)用程序相互交互,以提供一致和統(tǒng)一的用戶體驗(yàn)。
如果我們只測(cè)試它的單個(gè)組件,我們就不能獲得關(guān)于產(chǎn)品性能和可伸縮性問(wèn)題的任何有意義的數(shù)據(jù)。只有在實(shí)際場(chǎng)景中測(cè)試應(yīng)用程序,即把整個(gè)企業(yè)應(yīng)用程序置于實(shí)際工作負(fù)載中,才能收集真實(shí)的數(shù)據(jù)。
問(wèn)題是:我們?nèi)绾文軌蛟谝粋€(gè)測(cè)試場(chǎng)景實(shí)現(xiàn)這一現(xiàn)實(shí)的工作量?
容器--救援集裝箱
答案是容器。為了解釋容器如何幫助我們測(cè)試產(chǎn)品的性能和可伸縮性,我們來(lái)看一個(gè)軟件配置管理工具puppet。Puppet使用C5體系結(jié)構(gòu),其中有一個(gè)或多個(gè)Puppet主機(jī)(服務(wù)器),以及使用Puppet運(yùn)行Puppet代理(客戶端)配置的系統(tǒng)。
為了理解應(yīng)用程序的性能和可伸縮性,我們需要在不同系統(tǒng)上運(yùn)行高負(fù)載的puppet-master。為此,我們可以在一個(gè)系統(tǒng)上安裝puppet-master,然后運(yùn)行我們的操作系統(tǒng)的多個(gè)容器,在這里,我們安裝和運(yùn)行puppet-agent。
接下來(lái),我們需要配置puppet-agent與puppet-master進(jìn)行交互,以管理系統(tǒng)配置。這在服務(wù)器處理請(qǐng)求時(shí)強(qiáng)調(diào)服務(wù)器,并在客戶端更新軟件配置時(shí)強(qiáng)調(diào)客戶機(jī)。
那么,容器在這里能起到什么作用呢?我們能不能只通過(guò)一個(gè)腳本模擬的Puppetmaster負(fù)載?答案是否定的。即使模擬了負(fù)載,我們也會(huì)對(duì)產(chǎn)品性能有不夠客觀的判斷。在現(xiàn)實(shí)生活中,除了puppet-agent或puppet-master之外,用戶系統(tǒng)還將運(yùn)行許多其他進(jìn)程,其中每個(gè)進(jìn)程消耗一定數(shù)量的系統(tǒng)資源,因此直接通過(guò)限制puppet可以使用的資源來(lái)影響puppet的性能。
這是一個(gè)簡(jiǎn)單的例子,但是在處理多個(gè)組件組合的產(chǎn)品時(shí),企業(yè)應(yīng)用程序的性能和規(guī)模工程可能會(huì)變得脆弱。這就是容器的優(yōu)勢(shì)所在。
為什么是容器而不是別的?
一個(gè)真正的問(wèn)題是:為什么要使用容器而不是虛擬機(jī)(VM)或僅僅是裸機(jī)?運(yùn)行容器背后的邏輯與我們可以啟動(dòng)的容器圖像的數(shù)量有關(guān),還有它們相對(duì)于替代品的成本問(wèn)題。
雖然VM提供了強(qiáng)大的機(jī)制,但它們也會(huì)占用巨大的系統(tǒng)資源,從而限制了可以在單個(gè)裸機(jī)服務(wù)器上復(fù)制的系統(tǒng)的數(shù)量。相比之下,在同一個(gè)系統(tǒng)上啟動(dòng)1000個(gè)容器是相當(dāng)容易的,這取決于您想實(shí)現(xiàn)什么樣的模擬,同時(shí)維持較低的開(kāi)銷(xiāo)。
使用裸機(jī)服務(wù)器,性能和規(guī)??梢愿鶕?jù)需要實(shí)現(xiàn),但一個(gè)主要問(wèn)題是成本開(kāi)銷(xiāo)。你會(huì)購(gòu)買(mǎi)1000臺(tái)服務(wù)器只是為了進(jìn)行測(cè)試嗎?這就是為什么容器總體上提供了一種經(jīng)濟(jì)的和可擴(kuò)展的方法來(lái)測(cè)試產(chǎn)品在實(shí)際情況下的性能,同時(shí)還能保持較低的資源成本和開(kāi)銷(xiāo)成本。
作者:SaurabhBadhwar
原文鏈接:https://opensource.com/article/17/8/containers-software-performance-and-scale
劉妮娜譯
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】