為什么軟件開發(fā)公司在項(xiàng)目開發(fā)中要考慮系統(tǒng)的可擴(kuò)展性的?
從歷史上看,梳理其軟件項(xiàng)目的所有開發(fā)細(xì)節(jié)過度的。由于軟件開發(fā)人員對可變技術(shù)和系統(tǒng)需求的復(fù)雜解釋,軟件開發(fā)公司認(rèn)為這一過程非常乏味。因此,在系統(tǒng)可擴(kuò)展性方面,企業(yè)代表希望與軟件開發(fā)人員進(jìn)行一般業(yè)務(wù)需求討論,同時(shí)不討論所有的技術(shù)上的細(xì)節(jié)。如果企業(yè)主開始使用開發(fā)人員的語言,系統(tǒng)的質(zhì)量會倍增。特別是,這將有助于避免許多問題,而開發(fā)人員創(chuàng)建復(fù)雜的基于服務(wù)器的解決方案。
軟件開發(fā)
企業(yè)如何與軟件開發(fā)人員保持密切聯(lián)系,了解系統(tǒng)可擴(kuò)展性的細(xì)節(jié)?
讓我們考慮一個(gè)開發(fā)新系統(tǒng)的項(xiàng)目開始的情況。我們設(shè)計(jì)了5個(gè)問題,有助于簡化談判并將其引導(dǎo)到正確的軌道上。
5個(gè)主要系統(tǒng)的可擴(kuò)展性問題,從我們的經(jīng)驗(yàn)來看,開發(fā)人員在談?wù)撓到y(tǒng)可擴(kuò)展性時(shí)通常會提出5個(gè)主要問題:
1.做企業(yè)了解計(jì)劃的系統(tǒng)的特點(diǎn)是什么?
2.系統(tǒng)用戶的典型操作是什么?
3.系統(tǒng)是否有什么瓶頸?系統(tǒng)的哪一部分負(fù)載較重?
4.系統(tǒng)更重要的是:容錯(cuò)還是高性能?
5.可擴(kuò)展性的需求在哪里出現(xiàn)?
我們想仔細(xì)看看五個(gè)問題中的每一個(gè),并找出業(yè)務(wù)代表綜合答案的好處。
業(yè)務(wù)是否了解計(jì)劃系統(tǒng)的功能?
幕后:
可擴(kuò)展性是系統(tǒng)通過升級現(xiàn)有硬件或添加額外的新資源來應(yīng)對日益增長的負(fù)載的能力。系統(tǒng)必須保持適當(dāng)?shù)募軜?gòu)以允許后者。換句話說,當(dāng)后端開發(fā)人員開始系統(tǒng)開發(fā)時(shí),他們需要了解是否有可能將來擴(kuò)展系統(tǒng),這意味著其操作功能的增加。因此,他們需要知道企業(yè)主對系統(tǒng)特征和進(jìn)一步發(fā)展的計(jì)劃。例:
讓我們想象一下,購買機(jī)票的在線服務(wù)的所有者會制定計(jì)劃的網(wǎng)站流量的時(shí)間表。時(shí)間表可以是一天,一周,一個(gè)月,四分之一或一年。它可以覆蓋用戶和用戶活動(dòng)的類型,作為系統(tǒng)回答所需的時(shí)間。使用這個(gè)計(jì)劃,開發(fā)人員可以揭示網(wǎng)站上的負(fù)載變得更加密集的時(shí)代。例如,它可能會更接近一個(gè)周末。此外,業(yè)務(wù)代表可以在時(shí)間表中包括峰值負(fù)荷的點(diǎn),如假期,學(xué)校假期和促銷活動(dòng)。
架構(gòu)中的峰值負(fù)載不應(yīng)影響系統(tǒng)的性能,所以重要的是規(guī)劃它們。較好的方法之一是系統(tǒng)負(fù)載的圖形顯示。
小貼士:
制定明確的項(xiàng)目目標(biāo),制定預(yù)測網(wǎng)站流量的計(jì)劃或圖表。還要指出時(shí)間間隔。開發(fā)人員詢問有關(guān)系統(tǒng)能力的問題,而不是因?yàn)樗鼈冎皇呛闷妗K麄儽仨氼A(yù)見服務(wù)器增長的機(jī)會。如果一個(gè)企業(yè)計(jì)劃贏得世界,那就有必要明確說明目標(biāo)。假設(shè)當(dāng)10,000位獨(dú)特訪問者訪問了一個(gè)平均每天300名用戶的網(wǎng)站時(shí),系統(tǒng)必須生存下去。
系統(tǒng)用戶的典型動(dòng)作是什么?
幕后:
預(yù)測典型的操作允許開發(fā)人員分析系統(tǒng)上的負(fù)載。這也是一個(gè)機(jī)會,看看系統(tǒng)用戶是否會上傳大文件,或者需要實(shí)時(shí)聊天支持和其他功能。Web服務(wù)器之間的功能如何傳播取決于用戶操作的典型流程。
例:
我們可以參考推出移動(dòng)應(yīng)用的例子。用于安排會議的基于網(wǎng)絡(luò)的移動(dòng)應(yīng)用程序包括上傳照片的選項(xiàng)。開發(fā)人員使用中型用戶照片加載測試。然而,只要應(yīng)用程序啟動(dòng),用戶開始以原始大小上傳圖片。當(dāng)用戶和圖片的數(shù)量超過了Web服務(wù)器的數(shù)據(jù)存儲和處理能力時(shí),系統(tǒng)無法承受負(fù)載并開始崩潰。
小貼士:
如果您想防止系統(tǒng)不穩(wěn)定的不利影響,請?jiān)敿?xì)描述典型操作的場景。特別要考慮兩點(diǎn):
您希望用戶如何與系統(tǒng)進(jìn)行交互
它將如何實(shí)現(xiàn)
系統(tǒng)有什么瓶頸?系統(tǒng)的哪一部分負(fù)載較重?
幕后:
任何復(fù)雜的信息系統(tǒng)都可能包含至少兩個(gè)瓶頸。瓶頸是一個(gè)壓力點(diǎn),在特定時(shí)刻經(jīng)歷系統(tǒng)中較高的負(fù)載。當(dāng)開發(fā)人員知道系統(tǒng)中可能存在的瓶頸時(shí),如果服務(wù)器崩潰,他/她可以調(diào)整系統(tǒng)的工作。這有助于避免高峰負(fù)載時(shí)潛在用戶的損失。
找到瓶頸的問題與系統(tǒng)可擴(kuò)展性無關(guān)。不過,較好不要忘記。如果一個(gè)開發(fā)人員沒有定義瓶頸在哪里,那么它可以在任何可擴(kuò)展性方面取得進(jìn)展。即使在系統(tǒng)可擴(kuò)展性方面一切順利,有必要分析架構(gòu),以防止出現(xiàn)瓶頸
例:
入口點(diǎn)可能是瓶頸。例如,如果大量用戶同時(shí)打開網(wǎng)站,則無法承受高負(fù)載,沒有人繼續(xù)使用該網(wǎng)站。
信息系統(tǒng)的瓶頸
另一個(gè)瓶頸示例是通道寬度不足。想象一下,照片存儲中的照片之一迅速普及。數(shù)以千計(jì)的用戶打開這個(gè)流行的照片,但是Web服務(wù)器的容量不是為了這個(gè)數(shù)量。因此,上傳的照片停滯并對用戶產(chǎn)生負(fù)面影響。
小貼士:
只有有目的的測試可以詳細(xì)解答瓶頸在哪里的問題。然而,這并不意味著不可能評估潛在的瓶頸。
列出系統(tǒng)的基本部分。根據(jù)您的經(jīng)驗(yàn),突出顯示較脆弱的地方。
與開發(fā)團(tuán)隊(duì)討論清單。技術(shù)人員的經(jīng)驗(yàn)很有可能幫助您提供新的想法。
對系統(tǒng)更重要的是:
容錯(cuò)還是高性能?
幕后:
不同系統(tǒng)需要不同的方法。開發(fā)人員需要知道主要任務(wù)是:容錯(cuò)或高性能,或者兩者都是必需的。容錯(cuò)問題非常嚴(yán)重,沒有一個(gè)獨(dú)特的解決方案。它涉及系統(tǒng)在服務(wù)器遭受故障時(shí)每次響應(yīng)的能力。換句話說,用戶沒有達(dá)到理想的結(jié)果。例如,他或她不能訪問網(wǎng)站的其他頁面或通過應(yīng)用程序支付服務(wù)費(fèi)用。如果不清楚發(fā)生了什么,用戶將很可能拒絕再次使用該服務(wù)。為了避免用戶丟失,較好保護(hù)系統(tǒng)。例如,如果網(wǎng)站沒有對用戶請求做出反應(yīng)或會話被中斷,那么可能會向用戶發(fā)送有關(guān)該事件的簡要信息的消息以及有關(guān)該做什么的一些建議。高性能涉及系統(tǒng)承受數(shù)千用戶并同時(shí)顯示良好響應(yīng)時(shí)間的能力。換句話說,系統(tǒng)速度很重要。如果用戶花費(fèi)大量時(shí)間填寫表單,并且每次等待頁面加載緩慢,都會對其對公司的態(tài)度產(chǎn)生負(fù)面影響。
例:
我們假設(shè)一家銀行經(jīng)營者為接收貸款而運(yùn)行客戶查詢,并填寫系統(tǒng)中的數(shù)據(jù)。會話崩潰,系統(tǒng)同時(shí)停止對操作員的應(yīng)答。數(shù)據(jù)丟失,操作員沒有其他方式訪問系統(tǒng)。因此,操作員要求客戶等待系統(tǒng)恢復(fù)或第二天回來??蛻艋撕芏鄷r(shí)間,現(xiàn)在對這種情況不滿意。這意味著系統(tǒng)中出現(xiàn)故障。而客戶忠誠度取決于系統(tǒng)對類似故障的抵制。
容錯(cuò)
如果預(yù)見到容錯(cuò),可以以不同的方式解決可能故障的問題。例如,數(shù)據(jù)可以保存在系統(tǒng)的重復(fù)服務(wù)器上。然后銀行操作員可以簡單地連接到備份服務(wù)器并繼續(xù)工作。另一種方式是數(shù)據(jù)未被保存,但是有機(jī)會開始一個(gè)新的會話。因此,銀行經(jīng)營者提供客戶再次填寫信息。這些情況有數(shù)十億種解決方案。確定會話期間的數(shù)據(jù)丟失是重要的還是系統(tǒng)需要哪些任務(wù)要容易得多。
小貼士:
確定什么問題更重要,因?yàn)樗兄陂_發(fā)人員事先知道應(yīng)該首先考慮什么。當(dāng)開發(fā)人員明確目的時(shí),他們可以列出客戶的建議。
可擴(kuò)展性的需求在哪里出現(xiàn)?
幕后:
企業(yè)主希望開發(fā)人員能夠很好地了解他們的業(yè)務(wù)利基,從一開始就明白他們的信息系統(tǒng)是否需要可擴(kuò)展性。通常這些期望是假的。實(shí)際上,開發(fā)人員將重點(diǎn)放在軟件項(xiàng)目的具體目標(biāo)上。他們想定義出現(xiàn)系統(tǒng)可擴(kuò)展性需求的位置。它可以是大量的數(shù)據(jù),應(yīng)該在某個(gè)地方進(jìn)行保存和處理,或者在特定時(shí)刻需要的復(fù)雜計(jì)算過程和多階段操作。
例:
假設(shè)社交網(wǎng)絡(luò)計(jì)劃增加用戶數(shù)量,并開始在互聯(lián)網(wǎng)上進(jìn)行營銷活動(dòng)。社交網(wǎng)絡(luò)代表看到,他們需要考慮到同時(shí)訪問網(wǎng)絡(luò)的次數(shù),并在活動(dòng)期間增加了負(fù)載。訪客數(shù)量的大幅增加可能會影響系統(tǒng)性能。當(dāng)需求的來源變得清晰時(shí),開發(fā)人員可以轉(zhuǎn)向具體任務(wù)的解決方案。
小貼士:回答當(dāng)前軟件項(xiàng)目中系統(tǒng)可擴(kuò)展性的含義是什么?區(qū)分意義:
基地有10,000名用戶,您需要擴(kuò)展服務(wù)器的數(shù)據(jù)存儲能力
大約10,000名用戶同時(shí)訪問您的網(wǎng)站,服務(wù)器需要擴(kuò)展信息資源
需要可擴(kuò)展性
您可以根據(jù)您的答案選擇哪種方法更適合系統(tǒng)集群。換句話說,軟件開發(fā)人員可以根據(jù)業(yè)務(wù)需要在不同的服務(wù)器之間分配負(fù)載。系統(tǒng)可擴(kuò)展性是業(yè)務(wù)增長時(shí)增加負(fù)載問題的必要解決方案。這種具體能力使用新的信息資源提供了系統(tǒng)功能的擴(kuò)展。事實(shí)上,可擴(kuò)展性允許支持反應(yīng)速度以及越來越多的操作,事務(wù)或用戶的系統(tǒng)的一般性能。
對可擴(kuò)展性的需求激勵(lì)軟件開發(fā)公司和開發(fā)人員找到有效討論的方法。如果第一和第二語言是一種語言,他們對發(fā)展戰(zhàn)略,功能增長和系統(tǒng)技術(shù)特性的增加有一個(gè)共同的認(rèn)識。