那么,這些關(guān)于成本、質(zhì)量、速度和范圍的決策如何影響系統(tǒng)的可伸縮性呢?如前一章所述,可伸縮性與擴展項目或基礎(chǔ)設(shè)施項目的這些權(quán)衡之間存在著直接的關(guān)系。常熟做網(wǎng)頁的目的就是產(chǎn)生網(wǎng)站。簡單的信息如文字,圖片(GIFs, JPEGs,PNGs)和表格,都可以通過使超言、可擴展超文本標記語言等標示語言放置到網(wǎng)站頁面上。常熟網(wǎng)頁設(shè)計要能充分吸引訪問者的注意力,讓訪問者產(chǎn)生視覺上的愉悅感。因此在網(wǎng)頁創(chuàng)作的時候就必須將網(wǎng)站的整體設(shè)計與網(wǎng)頁設(shè)計的相關(guān)原理緊密結(jié)合起來。常熟做網(wǎng)頁更復雜的信息如矢量圖形、動畫、視頻、聲頻等多媒體檔案則需要插件程序來運行,同樣地它們亦需要標示語言移植在網(wǎng)站內(nèi)。對于開發(fā)函數(shù)的項目,這些約束的權(quán)衡決定將影響函數(shù)和整個系統(tǒng)的可伸縮性。這是權(quán)衡決策和可伸縮性之間的一種間接關(guān)系。
一個需要拆分主數(shù)據(jù)庫的擴展項目,就像開發(fā)函數(shù)項目一樣,也需要平衡這四個約束。你會不會把你的大部分高級工程師從這個項目中拉出來,去開發(fā)這個功能,并致力于分解數(shù)據(jù)庫的項目?你會給你的團隊六到十八個月的時間來完成這個項目嗎?如果需要的話,您會增加內(nèi)置的特性來進一步拆分數(shù)據(jù)庫嗎?你能縮短這個項目,然后一個地把它分開嗎?這些是您在項目過程中需要問的問題,它們也是平衡項目三角的速度、成本、質(zhì)量和范圍的問題。
這些限制也將間接影響可擴展性。讓我們AllScale公司的支付功能,例如,它的重點是速度。該功能必須在當月的為了年底結(jié)算周期使用結(jié)束前公布。錯過了這個日期將導致需要進行支付的人工處理,將引入更多的錯誤,導致非支付和收入的損失。副總裁邁克·軟件開發(fā)團隊,從索爾福德三名高級工程師的另一個項目繪制,分配他們支付的項目,才能夠完成它的時間。一切都進行得很順利,直到周末結(jié)束,這個功能被釋放,所以它可以按計劃辦理結(jié)算。
6個月后,Allscale的人力資源管理網(wǎng)站的內(nèi)容存儲量增加了100%以上,而參與月末結(jié)算周期的用戶數(shù)量增加了更大的百分比。它們在沉降功能上的總荷載接近釋放功能開始時總荷載的150%。目前,其處理時間仍控制在12小時以內(nèi)。但本月的用戶增長已經(jīng)大大改變了它,處理時間躍升到38小時。由于此服務是作為單個應用程序的附加功能設(shè)計的,因此不能在多個服務器上運行。直到現(xiàn)在,六個月前作出的決定的后果已經(jīng)逐漸顯現(xiàn)出來。allscale的操作團隊將不得不為應用程序分配一個更大的服務器,以完成下個月的結(jié)算,該結(jié)算最初計劃用作數(shù)據(jù)庫服務器。當然,這也會對硬件預算產(chǎn)生負面影響。操作團隊還需要花費大量時間監(jiān)視、準備、配置和測試用于此遷移的服務器。此外,該項目可能會吸引軟件開發(fā)工程師和質(zhì)量保證工程師提出更改建議,并最終驗證應用程序是否可以在新服務器上運行。