大家好,我是易安。 設(shè)計(jì)架構(gòu)的第一步是需求分析。那么,為什么要做需求分析?如何做好需求分析?今天我們一起聊一聊需求分析這件事兒 為什么要做需求分析首先,我們開發(fā)軟件的目的是為了滿足用戶的需求,因此我們需要清晰地定義用戶的需求。其次,我們需要定義需求的邊界,即我們需要明確我們的產(chǎn)品能夠滿足哪些需求,以及我們與合作伙伴之間的分工。最后,我們需要進(jìn)行架構(gòu)設(shè)計(jì),這需要我們對(duì)用戶需求進(jìn)行歸納和抽象,同時(shí)需要避免過度設(shè)計(jì)。過度設(shè)計(jì)指的是為了應(yīng)對(duì)不可能發(fā)生的情況而進(jìn)行的設(shè)計(jì),因此我們需要對(duì)需求未來的演化進(jìn)行判斷。 在需求分析的過程中,我們需要回答一些核心問題,例如:
這也是為什么很多非常優(yōu)秀的架構(gòu)師換到一個(gè)新領(lǐng)域后,一上來并不能保證一定能夠設(shè)計(jì)出良好的架構(gòu),而是往往需要經(jīng)過幾次迭代才趨于穩(wěn)定。 原因就在于:領(lǐng)域的需求理解是需要一個(gè)過程的,對(duì)客戶需求的理解不可能一蹴而就。 怎么做需求分析那么怎么才能做好需求分析? 首先,心態(tài)第一,心里得裝著用戶。 除了需要 “在心里對(duì)需求反復(fù)推敲” 的嚴(yán)謹(jǐn)態(tài)度外,對(duì)用戶反饋的尊重之心也至關(guān)重要。 其次,對(duì)問題刨根究底,找到根源需求。 有很多用戶反饋需求的時(shí)候,往往已經(jīng)帶著他自己給出的解決方案。 這種需求反饋已經(jīng)屬于二次加工的需求,而非原始需求。這個(gè)時(shí)候我們要多問多推敲,把它還原到不帶任何技術(shù)實(shí)現(xiàn)假設(shè)的根源需求。 如上圖所示,根源需求可能會(huì)有非常非常多的技術(shù)方案可以滿足它。我們上面示意圖中的小圓點(diǎn)是一個(gè)個(gè)用戶反饋的需求。在用戶提這些需求的時(shí)候,往往可能會(huì)帶著他熟悉的技術(shù)方案的烙印。 對(duì)于那些我們明顯不關(guān)心的需求,如上圖的小紅點(diǎn),相對(duì)容易排除在外。畢竟產(chǎn)品的邊界意識(shí)大家還是會(huì)有的,產(chǎn)品不可能無限制膨脹下去。 但是對(duì)于上面的小綠點(diǎn),決策上就比較難了。不做?可能會(huì)丟了這個(gè)客戶。做?如果我們手放寬一點(diǎn),最后產(chǎn)品需求就會(huì)被放大(如上圖中藍(lán)色的圓圈),做出一個(gè)四不像的產(chǎn)品。 最后,在理清楚需求后,要對(duì)需求進(jìn)行歸納整理。 一方面,將需求分別歸類到不同的子類別中。另一方面,形成需求的變化點(diǎn)和穩(wěn)定點(diǎn)的基本判斷。 在需求分析時(shí),要區(qū)分需求的變化點(diǎn)和穩(wěn)定點(diǎn)。穩(wěn)定點(diǎn)往往是系統(tǒng)的核心能力,而變化點(diǎn)則需要對(duì)應(yīng)地去考慮擴(kuò)展性上的設(shè)計(jì)。 要注意的是,在討論需求的變化點(diǎn)和穩(wěn)定點(diǎn)的時(shí)候,我們需要有明確參考的坐標(biāo)系。在不同視角下,穩(wěn)定點(diǎn)和變化點(diǎn)的判斷是完全不同的。 所以 需要明確的一點(diǎn)是,當(dāng)我們說需求的變化點(diǎn)和穩(wěn)定點(diǎn)時(shí),這是站在我們要設(shè)計(jì)的產(chǎn)品角度來說的。 比如我們要設(shè)計(jì)一臺(tái)計(jì)算機(jī),那么多樣化的外部設(shè)備是一個(gè)變化點(diǎn)。但是如果我們今天是在設(shè)計(jì)一臺(tái)顯示器,問題域就完全變了,需求的變化點(diǎn)和穩(wěn)定點(diǎn)也就完全發(fā)生了變化。 本質(zhì)上來說,對(duì)變化點(diǎn)的梳理,是一次產(chǎn)品邊界的確立過程。所謂的開放性設(shè)計(jì),就是說我把這個(gè)功能交給了合作伙伴,但是我得考慮怎么和合作伙伴配合的問題。 開放性設(shè)計(jì)并不是一個(gè)純粹的用戶需求問題,它通常涉及技術(shù)方案的探討。因此,產(chǎn)品邊界的確立不是一個(gè)純需求,也不是一個(gè)純技術(shù),而是兩者合而為一的過程。 對(duì)變化點(diǎn)的梳理至關(guān)重要。產(chǎn)品功能必須是收斂的,必須是可完成的。 如果某個(gè)子類別的需求呈現(xiàn)出發(fā)散而無法收斂的趨勢(shì),這個(gè)事情,團(tuán)隊(duì)一定要坐下來一起去反復(fù)推敲。不斷拷問,不斷明確響應(yīng)需求的正確姿勢(shì)到底為何。 產(chǎn)品定義需求分析的目標(biāo)和最終結(jié)果,都是要最終形成清晰的產(chǎn)品定義。產(chǎn)品定義并不是簡單的產(chǎn)品需求的歸類。 上面我也說過,產(chǎn)品是橋,它一端連接了用戶需求,一端連接了先進(jìn)的技術(shù)。所以產(chǎn)品定義不可能做到和技術(shù)方案完全沒關(guān)系。 首先,需要明確產(chǎn)品中有哪些元素,或者叫資源,以及這些資源的各類操作方式。 如果我們從技術(shù)的視角來理解,這就是定義對(duì)象和方法。當(dāng)然這僅僅是這么理解,實(shí)際上一個(gè)我們技術(shù)上的對(duì)象方法,從產(chǎn)品需求角度會(huì)有多條路徑的操作方式來達(dá)到相同的目的。 其次,需要對(duì)產(chǎn)品如何滿足用戶需求進(jìn)行確認(rèn)。 用戶的使用場(chǎng)景未必全部是我們的產(chǎn)品所能直接滿足的,面向特定的行業(yè),有可能需要相應(yīng)的行業(yè)解決方案,把我們的產(chǎn)品整合進(jìn)去。 我們要避免把行業(yè)方案視作產(chǎn)品的一部分。更多的情況下,需要我們更加開放的心態(tài)來看待這件事情,優(yōu)先尋找合作伙伴來一起完成這類行業(yè)的需求覆蓋。 最后,產(chǎn)品定義還需要考慮市場(chǎng)策略,我們的產(chǎn)品如何進(jìn)入市場(chǎng),和既有市場(chǎng)格局中的其他主流解決方案的關(guān)系是什么樣的。 我們希望獲取的用戶,可能大部分都已經(jīng)有一個(gè)既有的產(chǎn)品和技術(shù)方案,在滿足他的需求。在考慮如何讓客戶從既有方案遷移到我們的產(chǎn)品后,我們確定產(chǎn)品的邊界時(shí)又會(huì)復(fù)雜很多。 在一些極其關(guān)鍵的市場(chǎng),我們有可能會(huì)把遷移需求視作產(chǎn)品需求的一部分。但更多的情況下,我們產(chǎn)品上只為這些市場(chǎng)上的主流方案提供遷移路徑,而不是完整的遷移方案。 需求分析實(shí)戰(zhàn)-打造 “互聯(lián)網(wǎng)”從對(duì)信息科技的影響面來說,最為標(biāo)志性的兩個(gè)事件,一個(gè)是計(jì)算機(jī)的誕生,另一個(gè)是互聯(lián)網(wǎng)的誕生。 我們以 “互聯(lián)網(wǎng)” 這個(gè)產(chǎn)品為題,看看應(yīng)該怎么去做需求分析。 我們想象一下,把我們自己置身于互聯(lián)網(wǎng)誕生之前?;ヂ?lián)網(wǎng)并不是第一張網(wǎng)。在此之前的信息世界中,更多的是某個(gè)企業(yè)專用的局域網(wǎng)。不同的企業(yè)會(huì)選擇不同公司所提供的網(wǎng)絡(luò)方案。這些網(wǎng)絡(luò)方案缺乏統(tǒng)一的規(guī)劃,彼此并不兼容。 那么,怎么才能打造一個(gè)連接人與人、企業(yè)與企業(yè),甚至是物與物,能夠 “連接一切” 的 “互聯(lián)網(wǎng)”? 首先,從根源需求來說,我們期望這不是某個(gè)巨頭公司的網(wǎng),也不是政府的網(wǎng)。這是需求的原點(diǎn),這一點(diǎn)上的不同,產(chǎn)生的結(jié)果可能就很不一樣。 如果我們忽略這一點(diǎn),就有可能會(huì)把它做成微信網(wǎng)(WechatNet),或者中國網(wǎng)(ChinaNet)。它們可能會(huì)是一張巨大的網(wǎng),但都不是 “互聯(lián)網(wǎng)”。 所謂 “互聯(lián)網(wǎng)” 首先應(yīng)該是一張開放的網(wǎng)。它應(yīng)該可以讓很多國家很多公司參與其中,形成合力。它不應(yīng)該存在 “造物主”,一個(gè)可以在這張網(wǎng)絡(luò)中主宰一切的人。 開放,最基礎(chǔ)的層次來說,意味著需要定義網(wǎng)絡(luò)協(xié)議標(biāo)準(zhǔn),尤其是跨網(wǎng)的數(shù)據(jù)交換標(biāo)準(zhǔn)。這里的跨網(wǎng),指的是跨不同的網(wǎng)絡(luò)設(shè)備,不同的網(wǎng)絡(luò)運(yùn)營商。 開放,從另一個(gè)角度來說,是對(duì)應(yīng)用程序軟件的開放。想要 “互聯(lián)網(wǎng)” 真正能夠連接一切,只是把物理的網(wǎng)絡(luò)連接在一起是不夠的,還要有能夠豐富的 “連接一切” 的應(yīng)用。 為了能夠讓更多應(yīng)用可以更便捷地連接網(wǎng)絡(luò),我們需要提供方便應(yīng)用接入的高層協(xié)議。這個(gè)協(xié)議需要屏蔽掉網(wǎng)絡(luò)連接的復(fù)雜性(丟包重傳等)。 但這還不夠?!盎ヂ?lián)網(wǎng)” 這樣的基礎(chǔ)設(shè)施,啟動(dòng)階段沒有應(yīng)用去吸引用戶是不行的。所以我們需要 “吃自己的狗糧”,開發(fā)若干互聯(lián)網(wǎng)應(yīng)用的典型代表。 有一些需求可能非常非常重要,但是我們需要階段性放棄,例如安全。加密傳輸并沒有作為互聯(lián)網(wǎng)的內(nèi)建特性,這極大降低了互聯(lián)網(wǎng)的實(shí)施難度。 從另一個(gè)角度考慮,為什么不把安全放在最底層,也要考慮方案的可持續(xù)性。一個(gè)安全方案是否能夠長期有效,這非常存疑。 但是物理網(wǎng)絡(luò)一旦存在,就很難做出改變(想想我們從 IPv4 過渡到 IPv6 需要多少年吧)。所以從這個(gè)角度來說,我們也不希望安全是一個(gè)網(wǎng)絡(luò)的底層設(shè)施。 這并不意味著安全問題可以不解決,只是把這事兒留給了軟件層,留給操作系統(tǒng)和應(yīng)用程序。這是一個(gè)極其明智的選擇。相比物理網(wǎng)絡(luò)而言,軟件層更加能夠經(jīng)受得起變更。 總結(jié)來說,要想把 “互聯(lián)網(wǎng)” 這個(gè)項(xiàng)目做成,需要考慮這樣一些事情。
讓我們先來看下物理網(wǎng)絡(luò)的構(gòu)建。 首先,構(gòu)建骨干網(wǎng)絡(luò)。不同城市可以由若干個(gè)骨干網(wǎng)路由器相連。骨干路由器可以看做是由一個(gè)負(fù)責(zé)路由算法的計(jì)算機(jī),和若干網(wǎng)絡(luò)端口構(gòu)成,如下圖所示。 每個(gè)端口可能和其他城市相連,也可能和該城市內(nèi)的某些大型局域網(wǎng)相連。一個(gè)局域網(wǎng)和城際網(wǎng)絡(luò)從抽象視角看,沒有非常本質(zhì)的不同,只不過是采用的網(wǎng)絡(luò)技術(shù)有異,使用的網(wǎng)絡(luò)協(xié)議有異。 一個(gè)局域網(wǎng)可以簡化理解為由若干臺(tái)交換機(jī)連接所有的計(jì)算機(jī)設(shè)備。而交換機(jī)同樣也可以看做是由一個(gè)負(fù)責(zé)路由算法的計(jì)算機(jī),和若干網(wǎng)絡(luò)端口構(gòu)成,如下圖所示: 剩下的問題是怎么對(duì)接骨干網(wǎng)絡(luò)和局域網(wǎng)。這需要有人負(fù)責(zé)進(jìn)行網(wǎng)絡(luò)協(xié)議轉(zhuǎn)換,它就是路由器。一臺(tái)路由器上有兩類端口,一類端口為本地端口,連接局域網(wǎng)內(nèi)的設(shè)備,比如交換機(jī),或者直接連普通的計(jì)算機(jī)。另一類端口為遠(yuǎn)程端口,負(fù)責(zé)接入互聯(lián)網(wǎng)。 理清楚了物理網(wǎng)絡(luò)后,我們?cè)賮砜磻?yīng)用構(gòu)建。我們打算打造兩個(gè)殺手級(jí)應(yīng)用(Killer Application):電子郵件(Email)和萬維網(wǎng)(WWW)。 在考慮應(yīng)用的用戶交互體驗(yàn)時(shí),我們發(fā)現(xiàn),物理網(wǎng)絡(luò)能夠處理的 IP 地址,和人類方便記憶的地址非常不同,故而我們決定引入域名(domain)作為人與人交流用途的地址。為此,我們引入了 DNS 地址簿協(xié)議,用于將域名解析為物理網(wǎng)絡(luò)可理解的 IP 地址。 綜上分析,最終我們得到 MVP 版本的 Internet 項(xiàng)目的各子系統(tǒng)如下: 需求分析實(shí)戰(zhàn)- “對(duì)象存儲(chǔ)”對(duì)象存儲(chǔ)是非常新興的一種存儲(chǔ)系統(tǒng)。是什么樣的需求滿足方式的變化,導(dǎo)致人們要?jiǎng)?chuàng)造一種新的存儲(chǔ)呢? 對(duì)象存儲(chǔ)是伴隨互聯(lián)網(wǎng)的興起,尤其是移動(dòng)互聯(lián)網(wǎng)的興起而產(chǎn)生的。 首先,互聯(lián)網(wǎng)應(yīng)用興起,軟件不再是單機(jī)軟件,用戶在使用應(yīng)用軟件的過程中產(chǎn)生的數(shù)據(jù),并不是跟隨設(shè)備,而是跟隨賬號(hào)。 這樣,用戶可以隨心所欲地切換設(shè)備,不必考慮數(shù)據(jù)要在設(shè)備間倒來倒去的問題。 數(shù)據(jù)跟隨賬號(hào),這是互聯(lián)網(wǎng)應(yīng)用的第一大特征,區(qū)別于單機(jī)軟件的關(guān)鍵所在。 其次,用戶交互方式的變化。 用戶不再打字用純文本溝通,而是用照片、視頻、語音等多媒體內(nèi)容來表達(dá)自己的想法。 移動(dòng)化加劇了這一趨勢(shì),在手機(jī)上打字是非常痛苦的事情。拍拍照、拍拍視頻、說說話(語音輸入)更加符合人的天性,尤其是手機(jī)用戶覆蓋面越來越寬,大部分用戶屬于沒有經(jīng)過專業(yè)培訓(xùn)的普通用戶,這些手段是最低準(zhǔn)入門檻的交互方式。 最后,用戶體驗(yàn)訴求的提升。 計(jì)算機(jī)顯示器早年是黑白的,后來有了256色,有了真彩色(TrueColor);顯示器的屏幕分辨率,也從320x240,到640x480,到今天我們?cè)僖膊魂P(guān)心具體分辨率是多大。隨之發(fā)生變化的,是一張照片從100K,到幾兆,到幾十兆。 這些趨勢(shì),對(duì)存儲(chǔ)系統(tǒng)帶來的挑戰(zhàn)是什么? 其一,規(guī)模。 那么多用戶的數(shù)據(jù),一臺(tái)機(jī)器顯然放不下了,要很多很多臺(tái)機(jī)器一起來保存。 其二,可靠。 用戶單機(jī)對(duì)存儲(chǔ)的要求并不高,機(jī)器硬盤出問題了,不會(huì)想著找操作系統(tǒng)廠商或者軟件應(yīng)用廠商去投訴。但是,用戶數(shù)據(jù)在服務(wù)端,數(shù)據(jù)丟了那就是軟件廠商的責(zé)任,要投訴。 其三,成本。 從軟件廠商來說,那么多的用戶數(shù)據(jù),怎么做才能讓成本更低一些。 其四,并發(fā)吞吐能力。 大量的用戶同時(shí)操作,有讀有寫,怎么保證系統(tǒng)是高效的。 另外,從存儲(chǔ)系統(tǒng)的操作接口來說,我們分為關(guān)系型存儲(chǔ)(數(shù)據(jù)庫,結(jié)構(gòu)化數(shù)據(jù))和文件型存儲(chǔ)(非結(jié)構(gòu)化數(shù)據(jù))。我們今天的關(guān)注點(diǎn)在文件型存儲(chǔ)上。 對(duì)于文件型存儲(chǔ)來說,相關(guān)的備選解決方案有很多,我們簡單羅列如下。 第一類是大家最熟悉的、最古老的存儲(chǔ)系統(tǒng):本地文件系統(tǒng)。 雖然有很多種具體的實(shí)現(xiàn)方案,但是它們的使用接口大同小異,實(shí)現(xiàn)方案也只是在有限的幾種選擇中平衡。 第二類是網(wǎng)絡(luò)文件系統(tǒng),可以統(tǒng)稱為 NAS,如上面的 NFS、FTP、Samba(CIFS)、WebDAV,都只是 NAS 存儲(chǔ)不同的訪問接口。 第三類是數(shù)據(jù)庫,它通常用于存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù),比較少作為文件型存儲(chǔ)。但也有人在這么做,如果單個(gè)文件太大,會(huì)切成多個(gè)塊放到多行。 第四類是 SAN,它是塊存儲(chǔ)。塊存儲(chǔ)和關(guān)系型存儲(chǔ)、文件型存儲(chǔ)都不同,它模擬的是硬盤,是非常底層的存儲(chǔ)接口。很少會(huì)有應(yīng)用直接基于塊存儲(chǔ),更多的是 mount 到虛擬機(jī)或物理機(jī)上,然后供應(yīng)用軟件需要的存儲(chǔ)系統(tǒng)使用。 第五類是分布式文件系統(tǒng) GFS/HDFS。GFS 最早是為搜索引擎網(wǎng)頁庫的存儲(chǔ)而設(shè)計(jì),通常單個(gè)文件比較大,非常適合用于日志類數(shù)據(jù)的存儲(chǔ)。這也是為什么 Hadoop最后從大數(shù)據(jù)領(lǐng)域跑出來,原因就是因?yàn)榇髷?shù)據(jù)處理的就是日志。 你可以看到,除了數(shù)據(jù)庫和 SAN,我們不用細(xì)分析就知道它們不是文件型存儲(chǔ)的最佳選擇,其他幾類包括本地文件系統(tǒng)、NAS、GFS/HDFS 有一個(gè)共同特征,就是它們的使用接口都是文件系統(tǒng)(FileSystem)。 那么,我們就來看下文件系統(tǒng)(FileSystem)對(duì)于大規(guī)模的文件型存儲(chǔ)來說有什么問題。 最大的問題是,文件系統(tǒng)是一棵樹(Tree)。除了對(duì)單個(gè)文件的操作只需要鎖住該文件外,所有對(duì)樹節(jié)點(diǎn)的修改操作,比如把 A 節(jié)點(diǎn)移到 B 處,都是一次事務(wù)操作,需要鎖住整棵樹。 這對(duì)規(guī)模和并發(fā)吞吐能力都是傷害。從規(guī)模來說,分布式事務(wù)是很難的(這也是為什么分布式數(shù)據(jù)庫很難做的原因),做出來性能也往往好不到哪里去。從并發(fā)吞吐能力來說,如果系統(tǒng)存在大鎖,即在鎖里面執(zhí)行費(fèi)時(shí)的操作,就會(huì)大幅降低系統(tǒng)的并發(fā)吞吐能力。 傳統(tǒng)的 NAS 出現(xiàn)比較早,所以它沒有考慮“大規(guī)模條件下存儲(chǔ)會(huì)有什么樣的挑戰(zhàn)”是非常正常的。 GFS/HDFS 為什么沒有考慮大規(guī)模問題?這是 Google 設(shè)計(jì) GFS 的背景導(dǎo)致的,網(wǎng)頁庫存儲(chǔ),或者日志型存儲(chǔ)的共同特征是單個(gè)文件很大,可以到幾個(gè) G 級(jí)別,這樣的話文件系統(tǒng)的元數(shù)據(jù)就會(huì)減少到單臺(tái)機(jī)器就可以存儲(chǔ)的級(jí)別。 所以對(duì)象存儲(chǔ)出現(xiàn)了。它打破了文件型存儲(chǔ)訪問接口一定是文件系統(tǒng)(FileSystem)的慣例。它用的是鍵值存儲(chǔ)(Key-Value Storage)。 從使用接口來說,首先選擇文件所在的桶(Bucket),它類似于數(shù)據(jù)庫的表(Table),只是一個(gè)邏輯劃分的手段;然后選擇文件的鍵(Key),就可以存取文件了。 這意味著文件之間并不存在關(guān)聯(lián)(樹型結(jié)構(gòu)是文件之間的一種關(guān)聯(lián)),可以通過某種算法將文件元信息分散到不同的機(jī)器上。 那么為什么文件型存儲(chǔ),不必考慮文件之間的關(guān)聯(lián)?因?yàn)殛P(guān)系都在數(shù)據(jù)庫里面,文件型存儲(chǔ)只需要負(fù)責(zé)文件內(nèi)容的存儲(chǔ),有個(gè)鍵(Key)能夠找到文件內(nèi)容即可。 從本質(zhì)上來說,這是因?yàn)榉?wù)端和桌面軟件面臨的用戶場(chǎng)景是完全不同的。文件系統(tǒng)是在桌面軟件下的產(chǎn)物,桌面系統(tǒng)是單用戶使用的,沒有那么高的并發(fā)訪問需求。 服務(wù)端一上來就面臨著并發(fā)訪問的問題,所以很早就出現(xiàn)了數(shù)據(jù)庫這樣的存儲(chǔ)中間件。數(shù)據(jù)庫的出現(xiàn),其實(shí)已經(jīng)證明文件系統(tǒng)并不適合服務(wù)端。只不過因?yàn)槲募痛鎯?chǔ)在早期的服務(wù)端開發(fā)的比重并不大,所以沒有被重視。 但是,互聯(lián)網(wǎng)的發(fā)展極大地加速了文件型存儲(chǔ)的發(fā)展?;ヂ?lián)網(wǎng)增加的 90% 以上的數(shù)據(jù),都是非結(jié)構(gòu)化數(shù)據(jù),包括圖片、音頻、視頻、日志。 對(duì)象存儲(chǔ)能夠支撐的文件數(shù)量規(guī)模上非常非常大。比如七牛云存儲(chǔ),我們已經(jīng)支持萬億級(jí)別的文件。 這在傳統(tǒng) NAS 這種基于文件系統(tǒng)訪問接口的存儲(chǔ)是難以想象的,我們看到的 NAS 存儲(chǔ) POC 測(cè)試要求,基本上都是要能夠支持 1-2 億級(jí)別的文件存儲(chǔ)規(guī)模。 另外,對(duì)象存儲(chǔ)的高速發(fā)展,很大程度上會(huì)逐步侵蝕 Hadoop 生態(tài)的市場(chǎng)。因?yàn)?HDFS 這種日志型存儲(chǔ),其實(shí)只是對(duì)象存儲(chǔ)里面的一個(gè)特例。在人們習(xí)慣了對(duì)象存儲(chǔ)后,他們并不希望需要學(xué)習(xí)太多的存儲(chǔ)系統(tǒng);所以大數(shù)據(jù)的整個(gè)生態(tài)會(huì)逐步過渡到以對(duì)象存儲(chǔ)為基石。 總結(jié)需求分析并不是純技術(shù)的東西,和編程這件事情無關(guān)。它關(guān)乎的是用戶需求的梳理、產(chǎn)品的清晰定義、可能的演變方向。 怎么提升需求分析能力,尤其是預(yù)判能力? 首先,心態(tài)第一,心里得裝著用戶。除了需要 “在心里對(duì)需求反復(fù)推敲” 的嚴(yán)謹(jǐn)態(tài)度外,對(duì)用戶反饋的尊重之心也至關(guān)重要。 其次,對(duì)問題刨根究底,找到根源需求。 最后,對(duì)需求進(jìn)行歸納整理。一方面,將需求分別歸類到不同的子類別中。另一方面,形成需求的變化點(diǎn)和穩(wěn)定點(diǎn)的基本判斷。 需求分析的目標(biāo)和最終結(jié)果,都是要最終形成清晰的產(chǎn)品定義。產(chǎn)品定義將明確產(chǎn)品的元素,明確產(chǎn)品的邊界,與產(chǎn)業(yè)上下游、合作伙伴的分工。 通過對(duì)打造“互聯(lián)網(wǎng)”和“對(duì)象存儲(chǔ)”這兩個(gè)案例的分析,我們可以看出不同市場(chǎng)差異還是很大的?!盎ヂ?lián)網(wǎng)” 這個(gè)產(chǎn)品它并不是替換某種既有的方案,而是把既有的方案連接在一起。所以 “互聯(lián)網(wǎng)” 的歷史包袱很少,基本上不太需要考慮歷史問題。 “對(duì)象存儲(chǔ)” 產(chǎn)品則不同。在對(duì)象存儲(chǔ)之前,存儲(chǔ)已經(jīng)經(jīng)歷了很長時(shí)間的發(fā)展。只不過因?yàn)槲募偷臄?shù)據(jù)爆發(fā)式的增長,帶來了存儲(chǔ)系統(tǒng)的新挑戰(zhàn),從而給對(duì)象存儲(chǔ)這樣的新技術(shù)一個(gè)市場(chǎng)機(jī)會(huì)。 當(dāng)然,另外一個(gè)原因是云服務(wù)的誕生,讓存儲(chǔ)有了新的交付形態(tài)。我們不再需要拿著硬件往用戶家里搬,這就出現(xiàn)了一個(gè)新的空白市場(chǎng)。 但是解決了空白市場(chǎng)的需求后,對(duì)象存儲(chǔ)還是要面臨 “既有市場(chǎng)中用戶采用的老存儲(chǔ)方案怎么搬遷” 的問題。所以存儲(chǔ)網(wǎng)關(guān)這樣的產(chǎn)品就出現(xiàn)了。存儲(chǔ)網(wǎng)關(guān)做什么?簡單說,就是把對(duì)象存儲(chǔ)包裝成 NAS,提供 NFS、FTP、Samba(CIFS)、WebDAV 這些訪問接口給用戶使用。 |
|