關(guān)于淘寶共享開放平臺(tái)的技術(shù)討論
2月18日,已經(jīng)轉(zhuǎn)戰(zhàn)淘寶的著名技術(shù)人陳皓發(fā)布了一條微博,對(duì)淘寶內(nèi)部的共享開放平臺(tái)提出自己的見解:
今天了解了一下淘寶的共享開放平臺(tái),感覺面對(duì)阿里內(nèi)各種特殊異化的業(yè)務(wù)的需求,再加上各種降權(quán)開關(guān),性能優(yōu)化,這個(gè)平臺(tái)要干的事越來越復(fù)雜,承載的業(yè)務(wù)邏輯越來越多,越來越不好維護(hù)。采用服務(wù)化模塊化的解耦可以做到靈活性,但是還是不夠。感覺可能需要像Linux+Git的方式才能適應(yīng)高速開發(fā)。
他又補(bǔ)充了一條微博,指出:
可嘗試使用Linux+Git的方式,讓各個(gè)業(yè)務(wù)團(tuán)隊(duì)把代碼fork過去自行定制,一些定制過后的有價(jià)值的代碼穩(wěn)定后可以回到主干,各個(gè)fork出去的分支可以互相merge。而當(dāng)主干代碼升級(jí)后,各個(gè)fork出去的代碼同樣可以享受主干的升級(jí)。只有Git可以干這樣的事。(不過,這需要對(duì)代碼有強(qiáng)大掌控能力的團(tuán)隊(duì))
同在淘寶工作的拔赤認(rèn)為:
淘寶里舍得花時(shí)間玩git的人太少了。
雖然淘寶千丫指出:“咱有g(shù)it的”,但拔赤說:
嗯,多數(shù)人僅僅拿git存代碼,真真有些浪費(fèi)啊,呵呵 對(duì)此,淘李福認(rèn)為: 你說的挺對(duì),不過目前的困難主要還是代碼安全的問題,很多工程師想用git,但是沒有內(nèi)部開源就不能自由fork 淘寶玉伯: 如果能推動(dòng)公司購買 GitHub 企業(yè)版就好了,很多問題都可以解決,很多內(nèi)部平臺(tái)都可以節(jié)省掉。我試著推動(dòng)過公司去購買,最后集團(tuán)只搞了個(gè)半殘的免費(fèi)的 GitLab …… 企業(yè)版不是將代碼存放在 GitHub 網(wǎng)站上,而是在內(nèi)網(wǎng)部署一個(gè) GitHub,代碼很安全,就如我們安裝 Jira、Confluence 等軟件一樣。 …… 小團(tuán)隊(duì)不用購買企業(yè)版,開通私有庫就好。目前我自己掏銀子給團(tuán)隊(duì)買了些私庫用,實(shí)在不想折騰公司的 SVN。
敲代碼的張洋提到:
我也曾多次吐過這個(gè)嘈。不過我這種小啰啰也就是想一下而已。力薦Github企業(yè)版啊。
同在淘寶的玄澄的問題是:
具體可以替代哪些內(nèi)部平臺(tái)?
淘李福回復(fù):
目前 github + trello + travis + puppet + capistrano 可以符合研發(fā)過程的全部需求,唯一的缺失環(huán)節(jié)是聯(lián)調(diào)和系統(tǒng)測(cè)試環(huán)節(jié)的自動(dòng)化,這塊我們正在嘗試。
玉伯也指出:
和程序員相關(guān)的平臺(tái)基本都可以用 GitHub 企業(yè)版替代,比如源碼管理、文檔、QC、CR、CI,甚至發(fā)布、管控等都可以。其實(shí)我覺得阿里味也可以用 GitHub 企業(yè)版替代。
不僅僅是淘寶,豆瓣也有人出現(xiàn),andyh說:
豆瓣內(nèi)部有 code,高仿 Github,今天一周歲。
在知乎上,可以搜索到豆瓣負(fù)責(zé)技術(shù)管理的耿新躍在2012年4月發(fā)布的一段話:
豆瓣在用git,不過歷史遺留的東西還在svn里,某些原因?qū)е逻w移到git上還有困難(比如我們目前有些地方依賴svn的目錄級(jí)權(quán)限控制),在逐步解決中 另外,我們不單用了git,還用github發(fā)布開源項(xiàng)目,內(nèi)部還買了github enterprise用作日常開發(fā),大家用pull request的方式來實(shí)現(xiàn)code review和交流,效果不錯(cuò)。
當(dāng)然,github enterprise比較貴,我們目前只在部分團(tuán)隊(duì)用,同時(shí)我們?cè)趪L試自己做一個(gè)類似的東西,基本上是在trac基礎(chǔ)上增加github的功能。
對(duì)于陳皓提出的Linux+Git方案,火星前哨站3的看法是:
要求相當(dāng)高,不光是代碼掌控能力,還包括架構(gòu)設(shè)計(jì)能力。
onedear提出一個(gè)問題:
有價(jià)值的代碼回到主干,這個(gè)是否有專門的人來做這個(gè)工作?
余肖譽(yù)回復(fù):
一般是權(quán)威人做的工作,這個(gè)世界,這個(gè)工作做得最好的是Linus Torvalds本人。
Row_Li已經(jīng)認(rèn)識(shí)到了這樣做的關(guān)鍵:
跟咱們很神似,不過咱們沒有相關(guān)團(tuán)隊(duì)掌控代碼。最終弄成現(xiàn)在不堪入目?;静幌肟茨区B代碼第二遍。
@deljuven有同樣看法:
這是個(gè)理想的狀態(tài),需要許多人一直持續(xù)不斷的努力~~ 但是覺得能把分支理順的人實(shí)在太少了==說句實(shí)在話,我一直覺得我們的分支太少了==
morejam建議:
這個(gè)陳首席應(yīng)該有經(jīng)驗(yàn),搞網(wǎng)絡(luò)設(shè)備的,各種開局,各種新需求各種從主線拉分支。
對(duì)此,陳懷臨回應(yīng):
這個(gè)TOT和Branch的研發(fā)代碼的問題,是個(gè)很復(fù)雜的事情 …… branch之間不能做merge。branch出現(xiàn)一定要去“死”。必須保證TOT clean,回TOT要手工sync。
小米科技米聊產(chǎn)品研發(fā)經(jīng)理瞿晉萍認(rèn)為:
用Git? 由此造成的多版本問題在快速開發(fā),各個(gè)業(yè)務(wù)組獨(dú)立發(fā)展的情況下會(huì)不會(huì)得不償失?還是傳統(tǒng)點(diǎn),基于一個(gè)與業(yè)務(wù)無關(guān)的framework/mechanism, 各個(gè)業(yè)務(wù)在上面開發(fā)plugin/policy
丸子常在的一句話可作為本文的總結(jié):
中國和美國軟件企業(yè)的真正差距之一,軟件要擁有優(yōu)秀的管理設(shè)計(jì)思想才可以應(yīng)對(duì)未來復(fù)雜的業(yè)務(wù)需求 ,要不然基本上就會(huì)這樣,越做越復(fù)雜,越做質(zhì)量越差,越做需要的精力越大。
大家都在提GitHub的企業(yè)版,不妨讓我們看看GitHub企業(yè)版都提供哪些功能:
- 代碼審查:其中包括未來風(fēng)格的代碼審查、評(píng)論提交、分支分析、對(duì)比視圖等功能。
- 團(tuán)隊(duì)管理:30秒即可讓用戶訪問代碼,不需SSH key,同時(shí)提供進(jìn)度信息主動(dòng)更新。
- 工業(yè)標(biāo)準(zhǔn)的OVA:OVA是Open Virtualization Format(簡(jiǎn)稱OVF)的一種實(shí)現(xiàn),OVF是一種開放標(biāo)準(zhǔn),用來定義對(duì)虛擬機(jī)中運(yùn)行的虛擬應(yīng)用和軟件進(jìn)行打包和分發(fā)的標(biāo)準(zhǔn)。GitHub Enterprise版本以O(shè)VA格式分發(fā),兼容VMware和VirtualBox。
- 企業(yè)級(jí)的安全性:通過啟用SSL和私有模式,強(qiáng)制整個(gè)團(tuán)隊(duì)使用最安全的連接。
- LDAP和CAS集成:GitHub Enterprise版本可以直接集成到支持LDAP和CAS團(tuán)隊(duì)管理的基礎(chǔ)設(shè)施中。
當(dāng)然,還有出色的社區(qū)支持。
目前,GitHub企業(yè)版的知名用戶包括:暴雪、Rackspace和在線交易網(wǎng)站Etsy。