需要拆分主數(shù)據(jù)庫(kù)的擴(kuò)展項(xiàng)目,就像一個(gè)開(kāi)發(fā)功能的項(xiàng)目一樣,也需要平衡這四個(gè)約束因素。你會(huì)把自已大部分的高級(jí)工程師從開(kāi)發(fā)功能的項(xiàng)目中抽調(diào)出來(lái),從事拆分?jǐn)?shù)據(jù)庫(kù)的項(xiàng)目嗎?你會(huì)給自己的團(tuán)隊(duì)6個(gè)月或18個(gè)月時(shí)間來(lái)完成這個(gè)項(xiàng)目嗎?你會(huì)加人內(nèi)置的功能,從而在必要的時(shí)候進(jìn)一步拆分?jǐn)?shù)據(jù)庫(kù)嗎?你會(huì)縮短項(xiàng)目,只進(jìn)行一一次拆分嗎?這些都是你在項(xiàng)目過(guò)程中需要提出的問(wèn)題,也是為了平衡項(xiàng)目三角中的速度、成本、質(zhì)量和范圍而提出的問(wèn)題。
這些約束因素還會(huì)間接地影響可擴(kuò)展性。讓我們以AllScale公司的付款功能為例,它的側(cè)重點(diǎn)在于速度。這個(gè)功能必須在月底之前發(fā)布,這樣才能供月底的結(jié)算周期使用。錯(cuò)過(guò)了這個(gè)日期,就會(huì)造成需要手工處理付款,這樣會(huì)引人更多錯(cuò)誤,從而導(dǎo)致拒付和收人損失。軟件開(kāi)發(fā)團(tuán)隊(duì)的VP麥克,索福特從另一個(gè)項(xiàng)目上抽調(diào)了三位高級(jí)工程師,把他們分配到這個(gè)付款項(xiàng)目上,以便能夠按時(shí)完成它。一切都進(jìn)展得很順利,在月底之前的那個(gè)周末,這個(gè)功能就被發(fā)布了,這樣就能夠根據(jù)計(jì)劃處理賬單。
6個(gè)月后,AllScale公 司的HRM站點(diǎn)存儲(chǔ)的內(nèi)容的增加量超過(guò)了100%,而參與月底結(jié)算周期的用戶數(shù)量增加的百分比更大,他們?cè)诮Y(jié)算功能上產(chǎn)生的負(fù)載總量接近這個(gè)功能發(fā)布初期的負(fù)載總量的150%。迄今為止,它的處理時(shí)間仍然控制在12小時(shí)之內(nèi)。但這個(gè)月的用戶增長(zhǎng)使它發(fā)生了明顯的變化,處理時(shí)間一躍達(dá)到了38小時(shí)。由于這個(gè)服務(wù)被設(shè)計(jì)為單一應(yīng)用的附加功能, 所以不能在多個(gè)服務(wù)器上運(yùn)行。直到現(xiàn)在,這個(gè)6個(gè)月之前所做決策的后果才逐漸顯現(xiàn)出來(lái)。AllScale公司的運(yùn)營(yíng)團(tuán)隊(duì)必須給這個(gè)應(yīng)用分配一個(gè)更大的服務(wù)器才能完成下個(gè)月的結(jié)算工作,而這個(gè)服務(wù)器原本是計(jì)劃用作數(shù)據(jù)庫(kù)服務(wù)器的。當(dāng)然,這也會(huì)對(duì)硬件預(yù)算產(chǎn)生不好的影響。運(yùn)營(yíng)團(tuán)隊(duì)還需要花費(fèi)大量的時(shí)間為這次遷移進(jìn)行服務(wù)器的監(jiān)控、準(zhǔn)備、配置和測(cè)試。此外,這個(gè)項(xiàng)目可能還會(huì)引人軟件開(kāi)發(fā)工程師和質(zhì)量保證工程師,以對(duì)變更提出建議,并最后驗(yàn)證該應(yīng)用能夠在新服務(wù)器上運(yùn)行。由于這個(gè)置換新硬件的項(xiàng)目對(duì)用戶而言的高風(fēng)險(xiǎn),它必須在維護(hù)的時(shí)間窗內(nèi)進(jìn)行,同時(shí)它也用去了這一周系統(tǒng)允許的風(fēng)險(xiǎn)的大部分。另外的數(shù)據(jù)庫(kù)拆分的項(xiàng)目則必須推遲了,因?yàn)樾枰嗁?gòu)新的硬件才行了,這樣增加了數(shù)據(jù)庫(kù)過(guò)載而造成問(wèn)題的風(fēng)險(xiǎn)。
從我們的例子中你會(huì)發(fā)現(xiàn),最初的網(wǎng)站制作功能開(kāi)發(fā)階段所做的決策會(huì)給整個(gè)系統(tǒng)的可擴(kuò)展性帶來(lái)許多未知的影響。這是否意味著當(dāng)初的權(quán)衡和決策是錯(cuò)誤的呢?不,事實(shí)上,即使有后見(jiàn)之明,你仍然會(huì)覺(jué)得迅速地把這個(gè)功能投人到生產(chǎn)環(huán)境中,是個(gè)正確的決定。對(duì)于這個(gè)場(chǎng)景,我們大概同意這種看法。從這個(gè)例子中我們學(xué)到的重要點(diǎn), 不是個(gè)決策是對(duì)還是錯(cuò), 而是對(duì)于一個(gè)決策會(huì)造成長(zhǎng)期和短期的后果,你可能不能完全了解。
本文地址:http://m.blackside-inc.com//article/3862.html