我們公司的重點是幫助客戶實現(xiàn)他們的擴(kuò)展性需求,也許你可以想到,經(jīng)常會有客戶這樣問:“我們應(yīng)該何時對可擴(kuò)展性進(jìn)行投資?”不必經(jīng)過大腦的答復(fù)是應(yīng)該在需要該解決方案的前一天投資(部署)如果你能夠在需要擴(kuò)展解決方案的前一天部署它,那么就會讓投資行為“即時”發(fā)生,恰到好處,從而像 Dell/公司那樣按需生產(chǎn)。這樣做,會使你的公司效益和股東權(quán)益最大。
不過我們要面對的問題是,讓投資和部署成為即時的是不可能的,即使可能,如果沒有選對時機(jī),也會帶來很大的風(fēng)險。退而求其次,部署擴(kuò)展性方案的最好方法是 AKF Partners的設(shè)計一實現(xiàn)一部署(Design-implement-deploy)方法,即D- I -D方法。這三個階段與我們認(rèn)識事物的三個階段一致,即針對問題思考和設(shè)計解決方案、構(gòu)建或編寫該解決方案、實際地安裝或部署它。這種方法不提倡也不需要瀑布模型。
我們認(rèn)為敏捷方法正是遵循的這個過程,體現(xiàn)了人的主觀能動性。人們不會為還沒有注意到的問題開發(fā)解決方案,而一個方案,如果還沒有開發(fā)出來,也不可能被制造或發(fā)布出來。無論開發(fā)的方法是什么(敏捷模型、瀑布模型、混合模型等),開發(fā)的任何東西都需要基于一套成體系的理論和標(biāo)準(zhǔn),它們定義并指導(dǎo)著我們該做什么。
1.設(shè)計
首先要說的是,討論和設(shè)計什么東西,比真正用代碼實現(xiàn)這一設(shè)計的投人少得多。考慮到設(shè)計的成本較低,那么在實際需要之前,可以討論并草擬出能夠使平臺具有高擴(kuò)展性的設(shè)計。但是,顯然我們并不想在生產(chǎn)環(huán)境中投人比實際需要多10倍、20倍或者100倍的容量,關(guān)于如何將容量擴(kuò)展到這種水平的討論相對來說成本小得多。那么,在D- I -D擴(kuò)二展模型的設(shè)計(Design)階段,重點就在于如何將平臺的容量擴(kuò)展到2倍以上,甚至到無窮大。我們的腦力成本是相當(dāng)高的,因為需要雇傭“大思想家”來考慮“大問題”。但是編程成本和資產(chǎn)成本卻是很低的,因為我們并沒有編寫代碼,也沒有部署系統(tǒng)。由小組的領(lǐng)導(dǎo)者和程序員參與的討論擴(kuò)展性問題的大會,能讓人發(fā)現(xiàn)在D- I -D方法的設(shè)計階段有哪些地方是必須擴(kuò)展的。
2.實現(xiàn)
隨著時間的流逝,我們所預(yù)見的對擴(kuò)展性的需求就會臨近,這日時就需要在軟件中實現(xiàn)(Implement)我們的設(shè)計了。我們要根據(jù)實際需要,把擴(kuò)展的范圍縮小,例如擴(kuò)展到當(dāng)前大小的3-20倍。這里使用“大小”這個詞,指的就是被認(rèn)為是系統(tǒng)擴(kuò)展的最大瓶頸,因此極需要進(jìn)行可擴(kuò)展性修改的元素。也許存在這樣的情況,即把系統(tǒng)擴(kuò)展到當(dāng)前大小的100倍(或更高)所需的成本和擴(kuò)展到20倍的成本一樣,那么我們還不如一次完成這些修改,而不是分成多次來做。在X對用戶需求進(jìn)行模塊化,把它們分布(或共享)到多(N)個系統(tǒng)和數(shù)據(jù)庫中時,就可能發(fā)生這種情況。我們可以編寫一個變量Cust MOD,隨著時間變遷,可以把它配置為1(當(dāng)前)到1000(5年后)。這種修改帶來的編程(或?qū)崿F(xiàn)現(xiàn))成本不會隨著N而變化,所以我們不如選擇這種方法。這種修改,帶來的是高編程成本、中等的腦力成本(在整個生命周期前期已經(jīng)討論過設(shè)計了)以及低資產(chǎn)成本,因為如果最初階段我們只打算部署1倍或者2倍的模塊,那么當(dāng)前就沒有必要部署100倍的系統(tǒng)。
3.部署
D-I-D方法的最后階段是部署(Deployment)。仍然用上面介紹的模塊化示例,我們想用即時方法部署系統(tǒng),沒有任何理由讓資產(chǎn)閑置從而減少股東的收益。如果我們是一個較高速增長的公司,那么可以在生產(chǎn)環(huán)境中投入1.5倍的峰值容量。如果是個超高速增長的公司,則可以在生產(chǎn)環(huán)境中投人5倍的峰值容量。我們常常告訴客戶,對于爆炸性的容量,要利用“云”,以免備用33%的資產(chǎn)去防范突然的客戶活動增長。在部署階段,需要高資產(chǎn)成本,而其他成本則屬中低水平。這類情況的總體成本趨于最高,部署一個相當(dāng)于需求的容量100倍的系統(tǒng),會讓很多公司倒閉。記住,擴(kuò)展性是個靈活的概念,它可以是擴(kuò)張,也可以是收縮,而我們的解決方案需要兩方面都考慮到。因此,靈活性至關(guān)重要,你可能需要根據(jù)客戶需求讓解決方案中的不同系統(tǒng)進(jìn)行擴(kuò)張或者收縮。
雖然D-I-D方法的每個階段都有不同的腦力、編程和資產(chǎn)成本,但整體成本卻是基本一致的。關(guān)于擴(kuò)展性的設(shè)計和思考成本相對較低,所以應(yīng)該經(jīng)常進(jìn)行。這些活動最好形成文檔,以便當(dāng)有需求時,程序員就能迅速地根據(jù)文檔編寫代碼。將設(shè)計好的解決方案編寫(開發(fā))成代碼可以稍后再進(jìn)行,開發(fā)的成本稍高,但是沒必要在生產(chǎn)環(huán)境中真正實施它。我們可以像上面的模塊化示例中所述的,修改少量代碼,而無需再購買一個相當(dāng)于現(xiàn)有容量100倍的系統(tǒng)。最后,采用這種方法,就可以只在有需求時再購買設(shè)備,可能是從主要網(wǎng)站建設(shè)的設(shè)備供應(yīng)商那里提前6周購買,或者極其緊急的情況下,讓系統(tǒng)管理員去當(dāng)?shù)氐姆?wù)器商店采購。
本文地址:http://www.islandpacificappraisals.com//article/3443.html