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