去年,我們根據(jù)所在產(chǎn)品線情況,整理了一份的開發(fā)要?jiǎng)t(部分參考12-factor的內(nèi)容和方式)。要?jiǎng)t潛移默化的影響了后續(xù)的系統(tǒng)設(shè)計(jì)開發(fā),使得新系統(tǒng)往更優(yōu)雅、更具競(jìng)爭(zhēng)力的方向發(fā)展?,F(xiàn)在把要?jiǎng)t放到博客和產(chǎn)品線技術(shù)匯,便于查閱與交流。
注:要?jiǎng)t雖然由根據(jù)云時(shí)代特征制定的,但同樣非常適合不在云跑的系統(tǒng)(文末有‘神書’推薦)
不要將兩個(gè)app混放放在同一個(gè)倉庫(repo). 用git submodules,這樣你可以單獨(dú)跟蹤它們的變化? ? ??
不要為不同環(huán)境(如開發(fā)、測(cè)試和生產(chǎn))設(shè)置不同的代碼庫
在很多在線系統(tǒng)中,會(huì)使用session(會(huì)話)來傳遞當(dāng)前的狀態(tài)。當(dāng)被調(diào)用方接收到session后,會(huì)將它保存下來,后續(xù)的請(qǐng)求,都會(huì)被路由到這個(gè)服務(wù)中。這時(shí)請(qǐng)求和請(qǐng)求之間,會(huì)有嚴(yán)格的調(diào)用順序。我們的原則是需要避免這種情況。
不應(yīng)該在git上面放jar包,或者binaryartifact,而是通過maven進(jìn)行聲明式依賴放git庫,各種版本依賴會(huì)非常容易出錯(cuò)
Backingservice 意味著你的代碼應(yīng)該對(duì)數(shù)據(jù)庫或其他存儲(chǔ)不可知(松耦合)。
PS:最近看了一本神書《Unix編程藝術(shù)》,雖然是2000前開始寫的,卻已涵蓋了以上要?jiǎng)t背后的理念,膜拜一下??v觀整個(gè)IT發(fā)展史,基本是往Unix設(shè)計(jì)哲學(xué)的理念方向發(fā)展(如微服務(wù),rest,敏捷編程的流行,符合了Unix的模塊原則,組合原則,簡(jiǎn)潔原則,文本化(透明原則),經(jīng)濟(jì)原則等等)