Posted on 2011-05-22 10:30
dennis 閱讀(6270)
評(píng)論(6) 編輯 收藏 所屬分類:
模式與架構(gòu) 、
涂鴉 、
軟件工程
一個(gè)公司大了,總有部分人要去做一些通用的東西給大家用,我這里說(shuō)的基礎(chǔ)產(chǎn)品就是這類通用性質(zhì)的東西,不一定高科技,但是一定很多人依賴你的東西來(lái)完成各種各樣的功能。做這樣的東西,有些體會(huì)可以說(shuō)下。
首先,能集中存儲(chǔ)的,就不要分布存儲(chǔ),數(shù)據(jù)集中存儲(chǔ)有單點(diǎn)的危險(xiǎn),但是比之分布式存儲(chǔ)帶來(lái)的復(fù)雜度不可同日而語(yǔ)。況且集中式的存儲(chǔ)也可以利用各種機(jī)制做備份,所謂單點(diǎn)風(fēng)險(xiǎn)遠(yuǎn)沒(méi)有想象中那么大。
其次,能利用開(kāi)源框架的,就不要重復(fù)造輪子。程序員都喜歡造輪子,但是造輪子的周期長(zhǎng),并且不一定造的更好。在強(qiáng)調(diào)開(kāi)發(fā)效率的互聯(lián)網(wǎng)時(shí)代,如果能直接利用現(xiàn)有框架組裝出你想要的東西,迅速占領(lǐng)市場(chǎng),比你造的高性能、高可用、高科技的輪子更實(shí)用。這個(gè)跟做新產(chǎn)品開(kāi)發(fā)有點(diǎn)類似,迅速組裝,高效開(kāi)發(fā),然后再想辦法改進(jìn)。
第三,要文本,不要二進(jìn)制。協(xié)議要文本化,配置要文本化。不要擔(dān)心性能,在可見(jiàn)的時(shí)間里,你基本不會(huì)因?yàn)槲谋净膯?wèn)題遇到性能瓶頸。
第四,要透明,不要黑盒。基礎(chǔ)產(chǎn)品尤其需要對(duì)用戶透明,你的用戶不是小白用戶,他們也是程序員,而程序員天生對(duì)黑盒性質(zhì)的東西充滿厭惡,他們總想知道你的東西背后在做什么,這對(duì)于查找問(wèn)題分析問(wèn)題也很重要。怎么做到透明呢?設(shè)計(jì),統(tǒng)計(jì),監(jiān)控,日志等等。
第五,要擁抱標(biāo)準(zhǔn),不要另搞一套。已經(jīng)有了久經(jīng)考驗(yàn)的HTTP協(xié)議,你就不要再搞個(gè)STTP,有了AMQP協(xié)議,你就不要再搞個(gè)BMQP。被廣泛認(rèn)可的標(biāo)準(zhǔn)是一些業(yè)界的頂尖專家制定出來(lái)的,他們?cè)缇蛯⒛銢](méi)有考慮到的問(wèn)題都考慮進(jìn)去了。你自己搞的那一套,隨著時(shí)間推移你會(huì)發(fā)現(xiàn)跟業(yè)界標(biāo)準(zhǔn)越來(lái)越像,因?yàn)槊鎸?duì)的問(wèn)題是一樣的。使用標(biāo)準(zhǔn)的額外好處是,你有一大堆可用的代碼或者類庫(kù)可以直接使用,特別是在面對(duì)跨語(yǔ)言的時(shí)候。
第六,能Share nothing,就不要搞狀態(tài)復(fù)制。無(wú)狀態(tài)的東西是最可愛(ài)的,天然的無(wú)副作用。水平擴(kuò)展不要太容易。
第七,要將你的系統(tǒng)做的越不“重要”越好,如果太多的產(chǎn)品依賴你的系統(tǒng),那么當(dāng)你的系統(tǒng)故障的時(shí)候,整個(gè)應(yīng)用就完蛋了。我們不要擔(dān)這個(gè)責(zé)任,我們要將系統(tǒng)做的越來(lái)越“不重要”,別人萬(wàn)一沒(méi)了你也能重啟,也能一定時(shí)間內(nèi)支撐正常的工作。
第八,要專注眼前,適當(dāng)關(guān)注未來(lái)。有遠(yuǎn)見(jiàn)是好事,但是太多遠(yuǎn)見(jiàn)就容易好高騖遠(yuǎn)。為很小可能性設(shè)計(jì)的東西,沒(méi)有機(jī)會(huì)經(jīng)歷實(shí)際檢驗(yàn),當(dāng)故障真的發(fā)生的時(shí)候,你也不可能完全信賴它。更好的辦法是將系統(tǒng)設(shè)計(jì)得可介入,可在緊急情況下人工去介入處理,可介入是不夠的,還要容易介入。
第九,不要對(duì)用戶有假設(shè),假設(shè)你的用戶都是smart programmer,假設(shè)你的用戶不需要位運(yùn)算,假設(shè)你的用戶要同步不要異步。除非你對(duì)這個(gè)領(lǐng)域非常熟悉并實(shí)際使用過(guò)類似的東西,否則還是不要假設(shè)。
第十,咳咳,似乎沒(méi)有第十了,一大早憋了這么篇無(wú)頭無(wú)腦的Blog,大伙將就看看。
評(píng)論
不錯(cuò)的總結(jié)。有感覺(jué)。謝了!
嚴(yán)重贊同這些觀點(diǎn),可否稍微解釋一下“第六,能Share nothing,就不要搞狀態(tài)復(fù)制?!保覜](méi)能太理解這一點(diǎn),謝謝!
yzx226@gmail.com
保持狀態(tài)一致性比較麻煩,復(fù)雜容易出錯(cuò)吧@yzx226
這些深有同感,很不錯(cuò)。不過(guò)做基礎(chǔ)產(chǎn)品想不重要都難啊。。。
不改變大家的開(kāi)發(fā)習(xí)慣,擴(kuò)展原有的標(biāo)準(zhǔn)
# re: 做基礎(chǔ)產(chǎn)品的體會(huì)[未登錄](méi) 回復(fù) 更多評(píng)論
2011-05-26 00:17 by
哎,現(xiàn)在有時(shí)候很浮躁,無(wú)法靜心去做事情,有時(shí)候盲目,或錢或其他......