緣起
- 在任何一個大廠,譬如H司、Z司,都有自己的軟件開發平臺。陸續接觸過一些軟件平臺,略有所得,記錄于此。
- 本系列文章,不會去關注具體的平臺實現,僅關注平臺設計的一些考慮、建議、準則等。
何為平臺?
給平臺下一個定義比較困難,但可以用下面的方式來定義這個概念:
- 平臺不是底層的OS,如Andriod、 Linux這種;
- 平臺不是上層應用,如ftp客戶端、http服務器;
- 平臺和底層的OS、上層的應用有著密切的聯系;
粗略的講,掐頭去尾,平臺就是中間這段,平臺基于依賴底層的OS,同時為上層業務開發提供基礎設施,如定時器、進程抽象、日志等,相當于提供了系統的骨架、腳手架。
平臺之利
研發效率
- 隨著IT及互聯網行業的發展,IT相關行業競爭日益激烈,開發周期也變得越來越短,研發效率變得更加重要。LINUX教程。
- 如果沒有平臺,則每個產品開發都需要從0開始,那么在產品競爭中自然落于下風;而有了平臺這個腳手架,對于研發人員快速實現產品功能,會起到巨大的助力作用。
- 平臺也可以去除一些研發過程中的浪費,比如幾個模塊都需要日志輸出,如果分別搞一套日志框架或調試命令,是否太過于浪費了?
經驗保留
- 無平臺之前,各人都是單兵作戰,一些大牛雖然自己做的某個功能或框架非常NB,但是換個產品,換個人,就都不存在了,需要重新開發。而一旦該大牛畢業了,他的這套思想或實現就慢慢流落民間了。
- 有了平臺之后,可以把一些牛人的想法或設計的框架納入平臺的范疇,后續即使大牛走了,其之前設計的思想或框架被保留下來,這樣對公司的損失也會相應降低。
維護成本
- 沒有平臺的產品,一個需求,一千個人做,有一千個實現方案。UNIX/LINUX?有了平臺之后,基本上千篇一律。
- 比如進程間通訊,可以有N種方式,維護起來非常困難。如果平臺實現了進程間通訊的話,業務不需要太關注具體的底層實現,故障機會也降低了。
統一界面
- 平臺為產品提供了統一界面,比如所有的日志輸出都時同一個格式,所有進程注冊都是一個模式,這種模式非常利于新人上手干活,無需關注底層細節。
平臺之弊
大象跳舞
- 平臺是一把雙刃劍,平臺一旦建立起來,隨著產品需求的日益增加,平臺只能日益臃腫,大象還能跳舞嗎?
錘子與釘子
- 有了平臺之后,什么需求、產品都會往平臺上去靠,這樣是否合理?是否平臺限制了我們的選擇、或左右了我們的價值觀?
個人發展
- 平臺對于公司而言,可能的確有巨大的價值,從某種意義上而言,抹平(或縮小)了人與人的差距,但對個人技術的提高,卻不是一件好事。
- 有軟件平臺的開發,相當于用拐杖走路,走的多了,扔開拐杖是否依然會走路呢?
小結
- 本文簡單說明下平臺的概念,存在的利弊等,后續將繼續探討平臺設計的具體問題,敬請期待。
如本文對你有些許幫助,歡迎打賞或通過內文鏈接購買書籍:
支付寶打賞方式及我的購物小店