閱讀指南
開(kāi)發(fā)環(huán)境的追求
部署方案的要求
大廠環(huán)境因素
整合環(huán)境因素,導(dǎo)出方案
展望未來(lái)
QA
首先我們強(qiáng)調(diào)一點(diǎn),任何公司的技術(shù)基建都是隨時(shí)間推移去不斷改進(jìn)和建設(shè)的,任何純技術(shù)輸出都必然存在它的邊界。而業(yè)務(wù)拓展、組織架構(gòu)變遷、新興技術(shù)迭代等都是不斷發(fā)生的,這意味著技術(shù)基建必然也是不斷改進(jìn)的。
拿整個(gè)互聯(lián)網(wǎng)來(lái)說(shuō),也是由“石器時(shí)代”不斷演變而來(lái)。
而一切解決方案都是為了針對(duì)某類(lèi)需求。
開(kāi)發(fā)環(huán)境的追求
作為團(tuán)隊(duì)中的開(kāi)發(fā)者一員,無(wú)疑要追求美好的開(kāi)發(fā)體驗(yàn),具體可以列舉為:
高效的編譯速度
屏蔽環(huán)境搭建與配置,專(zhuān)注內(nèi)容開(kāi)發(fā)
團(tuán)隊(duì)編碼規(guī)范的顯式約束
編碼質(zhì)量的保障
各種運(yùn)行環(huán)境的快速切換
與對(duì)應(yīng)需求的綁定與關(guān)聯(lián)
部署方案的要求
部署成果的質(zhì)量與穩(wěn)定性保障
部署流程的快捷
高時(shí)效性的容災(zāi)處理
整合環(huán)境因素,導(dǎo)出方案
除開(kāi)以上普遍意義的需求,大廠本身的環(huán)境更是決定了解決方案的重要因素。 如阿里:
人員方面: 項(xiàng)目組眾多(開(kāi)發(fā)者數(shù)量多)、分內(nèi)勤和外包(開(kāi)發(fā)成員之間代碼力差距相對(duì)較大);
技術(shù)方面:技術(shù)棧相對(duì)統(tǒng)一(主要是業(yè)務(wù)方面: JAVA-SpringCloud,JS-react,veex… ), 技術(shù)輸出明確劃分內(nèi)網(wǎng)和開(kāi)源。
資源方面:有錢(qián)任性,相對(duì)寬松。
結(jié)合以上,我們將需求映射成需要解決的問(wèn)題:
在云IDE之前的年代里(包括現(xiàn)在大多項(xiàng)目組還是使用本地編譯器), 如何統(tǒng)一開(kāi)發(fā)者的開(kāi)發(fā)環(huán)境和規(guī)范?如何統(tǒng)一生產(chǎn)變量?(即如何確保本地打包環(huán)境統(tǒng)一,不會(huì)出現(xiàn)不同版本依賴(lài)或者丟包等打出預(yù)期之外的包)
說(shuō)白了,這個(gè)問(wèn)題可以簡(jiǎn)化為: 如何抹平不同開(kāi)發(fā)、生產(chǎn)環(huán)境的差異。
做部署流程的整合,提效。
來(lái)自阿里的答案
拿阿里的DEF工具舉例:
1、“研發(fā)套件”集成式腳手架
無(wú)論哪個(gè)項(xiàng)目組的業(yè)務(wù)開(kāi)發(fā),他們對(duì)于環(huán)境本身的配置其實(shí)大都是無(wú)感知的,以下圖為例
阿里的DEF工具,是通過(guò)對(duì)本地研發(fā)過(guò)程中進(jìn)行總結(jié)收斂,抽象出初始化、編譯預(yù)覽、構(gòu)建、測(cè)試、發(fā)布 這五個(gè)本地工具的通用功能節(jié)點(diǎn)。將原有的插件能力根據(jù)項(xiàng)目研發(fā)類(lèi)型進(jìn)行分類(lèi)后,總結(jié)沉淀出每一類(lèi)研發(fā)類(lèi)型的標(biāo)準(zhǔn)本地工具 --研發(fā)套件。
借助套件概念的封裝,用戶(hù)在不同項(xiàng)目之間研發(fā)的時(shí)候直接通過(guò)統(tǒng)一的命令,就能完成項(xiàng)目研發(fā)對(duì)應(yīng)工具服務(wù)的啟動(dòng)使用。
門(mén)神
在DEF中集成門(mén)神(相當(dāng)于提交代碼前后的鉤子,可類(lèi)比git-hooks的功能),負(fù)責(zé)團(tuán)隊(duì)開(kāi)發(fā)規(guī)范的約束(lint,cr,其他插件任務(wù)等)。
云端IDE
而在這兩年里,云IDE開(kāi)始嶄露頭角,整個(gè)開(kāi)發(fā)環(huán)境遷移至云端,更是直接從根本上解決了開(kāi)發(fā)環(huán)境差異的問(wèn)題。
2、統(tǒng)一的研發(fā)部署平臺(tái)
說(shuō)白了就是對(duì)于不同的項(xiàng)目,基于它們的技術(shù)選型進(jìn)行宏觀的分類(lèi),枚舉出每一種類(lèi)型的最佳部署體驗(yàn),集成到一個(gè)平臺(tái)。
讓用戶(hù)可以體驗(yàn)“一鍵發(fā)布”的功能,而不用關(guān)心具體的部署細(xì)節(jié)配置。
3、DEVOPS平臺(tái)
比如上圖云效平臺(tái),打通自產(chǎn)品需求-設(shè)計(jì)-開(kāi)發(fā)-測(cè)試-發(fā)布-運(yùn)維一條鏈路的流程管理平臺(tái),高效提升效率。 關(guān)于DEVOPS的介紹這里就不再做其他贅述,不太了解的同學(xué)可以自行搜索一下。
4、展望未來(lái)
近年來(lái),上云成了一種潮流,以云服務(wù)為核心擴(kuò)展出的解決方案比比皆是。目前來(lái)看,云依然面向未來(lái)。 而隨著對(duì)AI領(lǐng)域的不斷探索,各大廠也大多有相關(guān)建樹(shù)。
但無(wú)論如何,基建方案與規(guī)模的決定因素,永遠(yuǎn)在于業(yè)務(wù)與環(huán)境。
5、QA
Q: 大廠開(kāi)發(fā)時(shí)和部署時(shí)類(lèi)庫(kù)的引用和存放是一致還是不同?
A: 一般而言,我們要保障開(kāi)發(fā)和生產(chǎn)環(huán)境的統(tǒng)一,以確保產(chǎn)出與預(yù)期一致。當(dāng)然也有其他情況,這個(gè)要看項(xiàng)目本身有沒(méi)有不同的需求。 一句話,不要脫離業(yè)務(wù)講技術(shù),更不要蓋棺定論。
Q: 模塊是放在項(xiàng)目中還是放在CDN之類(lèi)的服務(wù)器?
A: 這個(gè)問(wèn)題中“模塊”這個(gè)概念可能不太清晰。這里指的是前端吧,前后端分離的模式下,前端生產(chǎn)出的包都是靜態(tài)資源包,一般都是扔到CDN里嘛。
Q: 渲染網(wǎng)頁(yè)用的是nginx還是其他動(dòng)態(tài)web服務(wù)器?
A: 還是那句話,不要脫離業(yè)務(wù)講技術(shù),更不要蓋棺定論。舉個(gè)例子,某項(xiàng)目純node服務(wù)+SSR輸出網(wǎng)頁(yè),本身就是一個(gè)web服務(wù)的項(xiàng)目何必再需要web服務(wù)器?
Q: 會(huì)選擇自己寫(xiě)模塊還是在社區(qū)里找模塊?
A: 理論上來(lái)講,要盡可能的避免重復(fù)造輪子。在已有可信任的滿足當(dāng)前需求的輪子的條件下,盡量不要自己造嘛,因?yàn)榇蠹业墓r(shí)都是很珍貴的。在保障不耽誤生產(chǎn)并且保障產(chǎn)品質(zhì)量的情況下,為了能優(yōu)化項(xiàng)目本身,也可以自己做嘛。
提倡做有意義的事,而不是多做事。
PASS: 對(duì)于以上所有問(wèn)題哈————無(wú)論什么技術(shù)方案,其本身都不是絕對(duì)的,技術(shù)是為了服務(wù)業(yè)務(wù)的。
更多關(guān)于html5培訓(xùn)的問(wèn)題,歡迎咨詢(xún)千鋒教育在線名師,如果想要了解我們的師資、課程、項(xiàng)目實(shí)操的話可以點(diǎn)擊咨詢(xún)課程顧問(wèn),獲取試聽(tīng)資格來(lái)試聽(tīng)我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門(mén)到精通。