我們公司的重點(diǎn)是幫助客戶(hù)實(shí)現他們的擴展性需求,也許你可以想到,經(jīng)常會(huì )有客戶(hù)這樣問(wèn):“我們應該何時(shí)對可擴展性進(jìn)行投資?”不必經(jīng)過(guò)大腦的答復是應該在需要該解決方案的前一天投資(部署)如果你能夠在需要擴展解決方案的前一天部署它,那么就會(huì )讓投資行為“即時(shí)”發(fā)生,恰到好處,從而像 Dell/公司那樣按需生產(chǎn)。這樣做,會(huì )使你的公司效益和股東權益最大。
不過(guò)我們要面對的問(wèn)題是,讓投資和部署成為即時(shí)的是不可能的,即使可能,如果沒(méi)有選對時(shí)機,也會(huì )帶來(lái)很大的風(fēng)險。退而求其次,部署擴展性方案的最好方法是 AKF Partners的設計一實(shí)現一部署(Design-implement-deploy)方法,即D- I -D方法。這三個(gè)階段與我們認識事物的三個(gè)階段一致,即針對問(wèn)題思考和設計解決方案、構建或編寫(xiě)該解決方案、實(shí)際地安裝或部署它。這種方法不提倡也不需要瀑布模型。
我們認為敏捷方法正是遵循的這個(gè)過(guò)程,體現了人的主觀(guān)能動(dòng)性。人們不會(huì )為還沒(méi)有注意到的問(wèn)題開(kāi)發(fā)解決方案,而一個(gè)方案,如果還沒(méi)有開(kāi)發(fā)出來(lái),也不可能被制造或發(fā)布出來(lái)。無(wú)論開(kāi)發(fā)的方法是什么(敏捷模型、瀑布模型、混合模型等),開(kāi)發(fā)的任何東西都需要基于一套成體系的理論和標準,它們定義并指導著(zhù)我們該做什么。

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