国产粉嫩无码不卡在线观看,酒店大战丝袜高跟鞋人妻,特级精品毛片免费观看,欧美亚洲日本国产综合在线

一文讀懂字節(jié)跳動(dòng)自研移動(dòng)研發(fā)工具鏈 MBox(字節(jié)跳動(dòng) 創(chuàng)新工具)

MBox 是由字節(jié)跳動(dòng)抖音基礎(chǔ)技術(shù)團(tuán)隊(duì)和 Client Infrastructure 團(tuán)隊(duì)根據(jù)移動(dòng)端研發(fā)出現(xiàn)的現(xiàn)狀與問題,結(jié)合移動(dòng)端研發(fā)工具相關(guān)實(shí)踐經(jīng)驗(yàn),自研的一款面向移動(dòng)端開發(fā)者的研發(fā)工具鏈產(chǎn)品。目前,MBox CLI (Command Line Tool) 已經(jīng)開源,后續(xù)將增加更多平臺(tái)支持,歡迎試用。

現(xiàn)狀與問題

隨著公司的快速發(fā)展,移動(dòng)端研發(fā)呈現(xiàn)出以下的現(xiàn)狀與趨勢:研發(fā)團(tuán)隊(duì)規(guī)模參差不齊,工程化與組件化方案不盡相同,跨端研發(fā)成為常態(tài),中臺(tái)業(yè)務(wù)不斷擴(kuò)大等,而這些現(xiàn)狀使得移動(dòng)端開發(fā)不得不面臨下面的問題:日益復(fù)雜的研發(fā)環(huán)境與工程架構(gòu)。

  • 研發(fā)環(huán)境

在大前端背景下,移動(dòng)端研發(fā)環(huán)境呈現(xiàn)出豐富的技術(shù)棧背景,這也導(dǎo)致了研發(fā)環(huán)境的復(fù)雜度提升。研發(fā)環(huán)境部署是編碼的前置工作,這也是新人對團(tuán)隊(duì)研發(fā)體驗(yàn)的第一印象,因此研發(fā)環(huán)境的問題會(huì)給團(tuán)隊(duì)帶來不少的麻煩。其實(shí),并非僅有新人才遇到研發(fā)環(huán)境的問題,隨著工程化推進(jìn),環(huán)境問題會(huì)持續(xù)困擾著團(tuán)隊(duì)所有成員,環(huán)境版本不一致、工程環(huán)境沖突、頻繁更新文檔,這些問題會(huì)使得研發(fā)人員將大量精力浪費(fèi)在環(huán)境上,而不是核心的編碼與測試階段。

  • 工程架構(gòu)

很多移動(dòng)端研發(fā)人員經(jīng)常面對著的是超大型工程或者多個(gè)工程并行開發(fā)的場景,項(xiàng)目的工程架構(gòu)往往十分復(fù)雜,這通常體現(xiàn)在多倉依賴管理困難、發(fā)布流程繁瑣、多人協(xié)作難度變大,極大地影響研發(fā)效率。這里又引發(fā)了另一個(gè)思考,上述的部分問題其實(shí)是我們在工程化改造過程中所引入的,而這是否與工程化提高效率、保證質(zhì)量的目的相違背呢?

漸漸地研發(fā)流程變得愈發(fā)繁瑣,研發(fā)效率將不可避免地受到影響,可能在這之初研發(fā)人員會(huì)怨聲載道,但長此以往便也習(xí)以為常了。

工具鏈面臨的挑戰(zhàn)

半自動(dòng)化的流程

在移動(dòng)端開發(fā)的場景下,研發(fā)人員盡管擁有看似豐富的研發(fā)工具來解決上面的環(huán)境與工程問題,但開發(fā)者們時(shí)常會(huì)有工具找不到、工具不會(huì)用與工具不好用的感受。理想狀態(tài)下,工具鏈中每個(gè)工具的輸出或者結(jié)果環(huán)境將成為下一個(gè)工具的輸入或起始環(huán)境,但在移動(dòng)研發(fā)的實(shí)踐中,工具鏈之間的輸出與輸入轉(zhuǎn)換時(shí)常需要研發(fā)人員手動(dòng)完成,這種大量的重復(fù)性操作也成為研發(fā)人員吐槽的焦點(diǎn)。

維基百科:工具鏈?zhǔn)且唤M編程工具,通常是另一個(gè)計(jì)算機(jī)程序或一組相關(guān)程序。

被割裂的流水線

每一個(gè)研發(fā)團(tuán)隊(duì)都有著自己的研發(fā)流水線(評(píng)審、開發(fā)、構(gòu)建、測試、修復(fù)、發(fā)布),在提升研發(fā)效能的實(shí)踐中我們往往會(huì)提供豐富的研發(fā)工具供研發(fā)人員在這些流程節(jié)點(diǎn)中使用,但這些工具真的有合理地融入到我們的研發(fā)流程中,形成一條完整的工具鏈嗎?

真實(shí)情況是,我們在實(shí)踐中常常過多地關(guān)注單一指標(biāo),例如通過對工具鏈的改造提升項(xiàng)目的工程化程度,工程化確實(shí)能帶來可維護(hù)性、工程質(zhì)量等指標(biāo)的提升,但是在其他環(huán)節(jié)中,如新人上手成本提升、依賴管理難度提高、代碼合入時(shí)間拉長、Bug 復(fù)現(xiàn)困難等方面也帶來了負(fù)面影響。

方案

我們對上述的現(xiàn)狀與問題進(jìn)行了分析,并結(jié)合在移動(dòng)端研發(fā)工具相關(guān)實(shí)踐經(jīng)驗(yàn),最終決定開發(fā)一款面向移動(dòng)端開發(fā)者的研發(fā)工具鏈產(chǎn)品 MBox。

一文讀懂字節(jié)跳動(dòng)自研移動(dòng)研發(fā)工具鏈 MBox(字節(jié)跳動(dòng) 創(chuàng)新工具)一文讀懂字節(jié)跳動(dòng)自研移動(dòng)研發(fā)工具鏈 MBox(字節(jié)跳動(dòng) 創(chuàng)新工具)

如上圖所見,MBox 最終所呈現(xiàn)的產(chǎn)品形態(tài)是一款包含 GUI (Graphical User Interface) 與 CLI (Command-Line Interface) 的 Navtive App。

理念

全覆蓋 All-in-one

我們期望開發(fā)一款能夠?qū)ρ邪l(fā)流程做到全場景覆蓋的工具鏈產(chǎn)品,用戶能夠在 MBox 中獲取所有需要的研發(fā)信息,并完成相應(yīng)的研發(fā)工作,同時(shí)確保在整個(gè)研發(fā)鏈路中擁有一致的研發(fā)體驗(yàn)。

可視化 Visualized

在最初迭代 CLI 版本的過程中,我們漸漸發(fā)現(xiàn)可視化的交互方式可以解決一些在 CLI 交互中難以解決的問題,盡管 GUI 相比 CLI 在編程實(shí)現(xiàn)上會(huì)復(fù)雜很多,但我們堅(jiān)信用戶體驗(yàn)的重要性,因此 MBox 為用戶提供了 GUI 與 CLI 兩種可供選擇的交互方式。

極簡化 Simple

這里的 Simple 并不是指簡單,而是交互設(shè)計(jì)上的簡約,在這里本質(zhì)上是可用性的體現(xiàn)。我們認(rèn)為研發(fā)工具應(yīng)該是為用戶解決困難而不是制造困難的,任何無關(guān)的或是分散研發(fā)人員注意的信息都是不必要的,簡單好用是對一款研發(fā)工具的最美稱贊。

可擴(kuò)展 Extensible

通常意義下 All-in-one 的工具鏈往往會(huì)導(dǎo)致可定制性變差,MBox 通過插件化技術(shù)在最大程度上滿足了用戶在橫向與縱向上擴(kuò)展性需求。

架構(gòu)

上文中提到通常情況下我們的研發(fā)流程是一條流水線式的模型,多數(shù)研發(fā)工具都會(huì)從這條流水線中找到一個(gè)切入點(diǎn)來提供服務(wù),協(xié)助用戶完成某個(gè)節(jié)點(diǎn)的工作。而 MBox 在架構(gòu)設(shè)計(jì)上則更多關(guān)注的是整個(gè)研發(fā)流程運(yùn)轉(zhuǎn)的效率,這不僅體現(xiàn)在單個(gè)節(jié)點(diǎn)的高效,同樣體現(xiàn)在不同節(jié)點(diǎn)之間流轉(zhuǎn)的高效。

一文讀懂字節(jié)跳動(dòng)自研移動(dòng)研發(fā)工具鏈 MBox(字節(jié)跳動(dòng) 創(chuàng)新工具)

MBox 在功能上并沒有按照研發(fā)流程進(jìn)行劃分,而是將整條研發(fā)鏈路貫穿到所有的功能設(shè)計(jì)中,根據(jù)功能的種類分成四大板塊:Environment、Workspace、Workflow、Tool。

核心功能

Environment

Environment 即研發(fā)環(huán)境,直覺告訴我們環(huán)境部署只是研發(fā)環(huán)節(jié)中較為前置的一個(gè)環(huán)節(jié),但在實(shí)際開發(fā)實(shí)踐中,Environment 要解決的不僅僅是部署(Deployment)的問題,其中還包含了環(huán)境統(tǒng)一(Consistency)、環(huán)境升級(jí)(Upgrade)和環(huán)境隔離(Isolation)這三個(gè)問題,而上述的四個(gè)問題卻是貫穿于整個(gè)研發(fā)流程的。

我們認(rèn)為在一個(gè)良好的研發(fā)體驗(yàn)中,研發(fā)人員無須關(guān)注絕大部分與環(huán)境相關(guān)的問題,應(yīng)該把更多的關(guān)注度放在業(yè)務(wù)上,產(chǎn)生更多有效的價(jià)值。MBox 實(shí)現(xiàn)了整個(gè)過程的自動(dòng)化,在任意時(shí)刻,無感知地為研發(fā)人員提前完成環(huán)境相關(guān)的部署、隔離與升級(jí)工作,同時(shí)還解決了項(xiàng)目研發(fā)環(huán)境一致性的問題。

一文讀懂字節(jié)跳動(dòng)自研移動(dòng)研發(fā)工具鏈 MBox(字節(jié)跳動(dòng) 創(chuàng)新工具)

上圖展示了 GUI 下的環(huán)境功能模塊,除了上文中提到的全自動(dòng)化能力,MBox 同樣支持用戶手動(dòng)控制。

Workspace

Workspace 是我們代碼倉庫存放的空間,也被認(rèn)為是研發(fā)人員工作的核心。我們首先可以回顧一下,通常情況我們是如何管理代碼的?在這過程中我們又遇到了哪些問題?

下文將闡述我們在實(shí)踐過程中遇到的困難以及對應(yīng)的解決方案。

挑戰(zhàn) 1:跨項(xiàng)目開發(fā) Multiple Projects

在一些研發(fā)團(tuán)隊(duì)中(常見于中臺(tái)部門),常常需要在多個(gè)項(xiàng)目之間同時(shí)進(jìn)行開發(fā),每一個(gè)項(xiàng)目的代碼倉庫與研發(fā)環(huán)境往往是迥異的,研發(fā)在切換項(xiàng)目的過程中常常疲于解決各種倉庫與環(huán)境問題,導(dǎo)致效率降低。MBox 采用沙盒化 Sandbox 技術(shù),將不同項(xiàng)目的代碼倉庫與環(huán)境隔離開來,我們將這樣的沙盒稱之為 MBox Workspace(以下簡稱 Workspace),在這樣的機(jī)制下,研發(fā)人員只需要明確當(dāng)前自己需要開發(fā)哪個(gè)項(xiàng)目而無需關(guān)注這個(gè)項(xiàng)目背后的問題。

一文讀懂字節(jié)跳動(dòng)自研移動(dòng)研發(fā)工具鏈 MBox(字節(jié)跳動(dòng) 創(chuàng)新工具)

挑戰(zhàn) 2:倉庫繁多 Too Many Repos

隨著團(tuán)隊(duì)增長,工程化、組件化不斷深入,理想狀態(tài)下每個(gè)業(yè)務(wù)團(tuán)隊(duì)只需要關(guān)注自己開發(fā)的組件,代碼以倉庫為級(jí)別進(jìn)行隔離,這樣做確實(shí)也會(huì)帶來不少在緩存、二進(jìn)制、安全風(fēng)控等方面的優(yōu)勢,但這也可能會(huì)導(dǎo)致一個(gè)常見問題,即倉庫數(shù)量龐大而變得難以維護(hù)。

一文讀懂字節(jié)跳動(dòng)自研移動(dòng)研發(fā)工具鏈 MBox(字節(jié)跳動(dòng) 創(chuàng)新工具)

在 MBox 中研發(fā)人員可以輕松地將遠(yuǎn)程或者本地的倉庫添加到 Workspace 中進(jìn)行統(tǒng)一管理,同時(shí)在同一 Workspace 中我們還利用緩存技術(shù)加速用戶添加倉庫的過程,讓倉庫的增刪變得更加方便快捷。

一文讀懂字節(jié)跳動(dòng)自研移動(dòng)研發(fā)工具鏈 MBox(字節(jié)跳動(dòng) 創(chuàng)新工具)

除了倉庫的增刪,研發(fā)人員們最常用的還是 Git 倉庫操作,MBox 參考了業(yè)內(nèi)成熟的方案并結(jié)合自己的實(shí)踐經(jīng)驗(yàn),以 CLI 與 GUI 兩種方式為研發(fā)人員提供了多倉庫批量操作的支持。

一文讀懂字節(jié)跳動(dòng)自研移動(dòng)研發(fā)工具鏈 MBox(字節(jié)跳動(dòng) 創(chuàng)新工具)

上面展示了 GUI 下多倉庫提交的過程,在終端下用戶可使用 mbox git xxx 命令來完成多倉批量操作。

挑戰(zhàn) 3:需求多變 Change of Requirements

大多數(shù)研發(fā)人員常常面臨需求變化的問題,比如同時(shí)開發(fā)多個(gè)需求或者臨時(shí)的 Bug 修復(fù),在 GitFlow 模型下,研發(fā)人員需要根據(jù)當(dāng)前需求來回切換對應(yīng)分支,尤其是在多倉開發(fā)中,頻繁的需求變化會(huì)給研發(fā)人員增加大量成本。

一文讀懂字節(jié)跳動(dòng)自研移動(dòng)研發(fā)工具鏈 MBox(字節(jié)跳動(dòng) 創(chuàng)新工具)


MBox 通過簡化 GitFlow 模型,提出 Feature Mode 概念,每一個(gè)需求的元數(shù)據(jù)(即倉庫、分支、代碼)被抽象成為了一個(gè) Feature,每個(gè) Feature 之間相互獨(dú)立互不影響,允許研發(fā)人員可以在多個(gè)需求之間快速輪轉(zhuǎn)。

一文讀懂字節(jié)跳動(dòng)自研移動(dòng)研發(fā)工具鏈 MBox(字節(jié)跳動(dòng) 創(chuàng)新工具)

從上圖中可以看到,當(dāng)前 Workspace 存在 3 個(gè) Feature,分別是 feature1 feature2 bugfix,每個(gè) Feature 擁有各自對應(yīng)的同名分支。除此以外 MBox 還存在 Free Mode 的狀態(tài),在該狀態(tài)下研發(fā)人員可以對倉庫進(jìn)行任意的操作,作為切換到 Feature Mode 的前置準(zhǔn)備。

挑戰(zhàn) 4:依賴復(fù)雜 Complex Dependency

在移動(dòng)端的本地開發(fā)中,我們常常需要將某個(gè)組件依賴替換成本地倉庫中的源碼版本,同時(shí)還需要小心地維護(hù)著本地倉庫的代碼版本,以確保和集成版本一致。

MBox 具備一套完整的依賴管理方案,結(jié)合不同的包管理工具特點(diǎn),利用多種技術(shù)實(shí)現(xiàn)了對依賴包的本地重定向,研發(fā)人員只需要一行命令或者點(diǎn)擊幾個(gè)按鈕即可完成該操作,盡可能減少研發(fā)人員重復(fù)的機(jī)械性工作。

與此同時(shí),通過一套抽象的依賴管理方案我們在一定程度上抹平了依賴管理工具之間的一些差異性,即便是在跨端開發(fā)中,研發(fā)人員依舊可以獲得較為一致的研發(fā)體驗(yàn)。例如在組件化研發(fā)場景中,我們需要依賴本地的源碼版本的組件 A,F(xiàn)lutter 和 iOS 平臺(tái)上常用的包管理工具對應(yīng)的 CLI 命令分別是

  • Flutter

$ mbox add component_A$ mbox pub get

  • iOS

$ mbox add component_A$ mbox pod install

挑戰(zhàn) 5:協(xié)作困難 Collaboration

隨著團(tuán)隊(duì)的擴(kuò)大,團(tuán)隊(duì)成員之間的協(xié)作變得更加緊密,但與此同時(shí)項(xiàng)目的復(fù)雜程度同樣會(huì)隨著團(tuán)隊(duì)的增長而增長。如何將自己的研發(fā)進(jìn)度及時(shí)且完整地同步給其他人,成為了提升團(tuán)隊(duì)協(xié)作效率所必須要解決的問題。

上文中已經(jīng)提到 Feature Mode 的抽象過程,其實(shí) Feature 不僅可以使得單個(gè)研發(fā)人員快速切換工作上下文,也允許不同研發(fā)人員共享自己當(dāng)前狀態(tài)下的所有代碼倉庫及其研發(fā)環(huán)境。

一文讀懂字節(jié)跳動(dòng)自研移動(dòng)研發(fā)工具鏈 MBox(字節(jié)跳動(dòng) 創(chuàng)新工具)

我們還可以發(fā)揮更多的想象力,如果將這一功能擴(kuò)展至云平臺(tái),比如異常監(jiān)控平臺(tái),由服務(wù)端構(gòu)造出會(huì)發(fā)生某個(gè)崩潰 case 的 Feature ,研發(fā)人員將其導(dǎo)入本地,即可快速在本地復(fù)現(xiàn)出 Bug 出現(xiàn)的場景。

Workspace 的優(yōu)勢

結(jié)合上述的五個(gè)挑戰(zhàn)中,我們分別提出了與之相對應(yīng)的解決思路,即利用沙盒化技術(shù)解決跨項(xiàng)目開發(fā)問題,利用多倉管理技術(shù)解決倉庫數(shù)量膨脹問題,提出 Feature 概念解決多需求并行問題,利用依賴管理技術(shù)解決依賴控制低效的問題,最后提出了同步 Feature 來解決多人協(xié)作困難的問題

Workflow

研發(fā)流程相關(guān)的云服務(wù)

在大型工程團(tuán)隊(duì)中,為了提升研發(fā)質(zhì)量和效率,會(huì)推出很多與研發(fā)流程相關(guān)的云服務(wù),這些服務(wù)的一般是通過前端頁面或是命令腳本對外提供服務(wù)。但很多云服務(wù)都面臨著同樣的問題,無法及時(shí)地觸達(dá)每個(gè)研發(fā)人員,落地往往都需要一定的時(shí)間,同時(shí)研發(fā)人員也需要付出一定的學(xué)習(xí)成本。我們一直在思考,如何幫助那些優(yōu)秀的云服務(wù)發(fā)揮出最大的價(jià)值?

在實(shí)踐中,我們發(fā)現(xiàn)云服務(wù)在結(jié)合了 MBox 的 Native 優(yōu)勢后,不僅大幅降低了用戶的學(xué)習(xí)成本,同時(shí)也能夠擴(kuò)展云服務(wù)使用的場景。

上文中提及的 MBox 與異常監(jiān)控平臺(tái)的聯(lián)動(dòng),就是一個(gè)很好的應(yīng)用場景,監(jiān)控平臺(tái)通過 MBox 直接為研發(fā)人員創(chuàng)建了本地開發(fā)環(huán)境,將云服務(wù)的應(yīng)用場景擴(kuò)展至研發(fā)人員本地。云平臺(tái)通過 MBox 可以實(shí)現(xiàn)與研發(fā)人員本地機(jī)器的聯(lián)動(dòng),研發(fā)人員也能通過 MBox 直接使用線上的云服務(wù),可以說 Native 解決了云服務(wù)工具“觸達(dá)用戶最后一公里”的問題,同時(shí)也為這些云服務(wù)帶來了更大的想象空間。

智能錯(cuò)誤診斷

在移動(dòng)研發(fā)中,相當(dāng)一部分的工具鏈?zhǔn)沁\(yùn)行在研發(fā)人員本地機(jī)器上的,導(dǎo)致我們無法實(shí)時(shí)獲取研發(fā)人員本地的運(yùn)行狀態(tài),這也加大了排查問題的難度。另外,研發(fā)人員在研發(fā)流程中遇到報(bào)錯(cuò)或者疑問時(shí),也缺少自我排查的方法,多數(shù)情況只能求助身邊同事或者發(fā)起 Oncall。

MBox 借助自身作為一款 All-in-one 研發(fā)工具的優(yōu)勢,收集研發(fā)人員在各個(gè)流程中遇到的錯(cuò)誤日志,進(jìn)行分析和歸類,在第一時(shí)間為研發(fā)人員推送問題的解決方案,盡可能地減少工具問題對研發(fā)效率的影響。作為工具鏈開發(fā)者,可以通過不斷補(bǔ)充解決方案來優(yōu)化錯(cuò)誤診斷的流程 ,沉淀出通用問題的知識(shí)庫來提升人工 Oncall 的前置攔截率。

一文讀懂字節(jié)跳動(dòng)自研移動(dòng)研發(fā)工具鏈 MBox(字節(jié)跳動(dòng) 創(chuàng)新工具)

Tools

MBox 不僅僅是一個(gè)研發(fā)工具,它更像是一個(gè)可以承載更多研發(fā)工具的平臺(tái) ,MBox 開放了所有的核心能力,所有開發(fā)者都可以通過插件的形式對它進(jìn)行二次開發(fā),將好用的工具分享給更多的開發(fā)者。

一文讀懂字節(jié)跳動(dòng)自研移動(dòng)研發(fā)工具鏈 MBox(字節(jié)跳動(dòng) 創(chuàng)新工具)

為什么是 Native App?

核心功能介紹完了,最后還是想談?wù)劄槭裁次覀円鲆豢?Native App。

多數(shù)傳統(tǒng)實(shí)踐中我們常常利用“工具 平臺(tái) 文檔”三者的緊密配合來保障整個(gè)研發(fā)流程的運(yùn)轉(zhuǎn),然而正是這種過于緊密的關(guān)系容易導(dǎo)致三者之間相互影響而阻塞開發(fā)。順著這個(gè)思路,既然這三者存在著如此緊密的聯(lián)系,那么是否可以存在這樣一個(gè)載體將這三者統(tǒng)一成一個(gè)整體,滿足研發(fā)人員在研發(fā)流程中的所有需求,確保研發(fā)這條流水線的高效運(yùn)轉(zhuǎn)。

既然作為 Native 開發(fā)者,為什么不為自己開發(fā)一款稱手的研發(fā)工具來提升自己的工作效率?

這個(gè)很酷的想法就應(yīng)運(yùn)而生了,像做產(chǎn)品一樣來做工具,核心圍繞移動(dòng)端本地研發(fā)。將產(chǎn)品思維應(yīng)用到工具開發(fā)中,持續(xù)不斷提升工具的可用性,我們堅(jiān)信只有可用性高的研發(fā)工具產(chǎn)品才能真正起到提升研發(fā)效能的作用。同時(shí)在產(chǎn)品思維的驅(qū)動(dòng)下,我們還可以利用 MBox 建立了效能度量數(shù)據(jù)指標(biāo),發(fā)現(xiàn)研發(fā)流程的關(guān)鍵問題,進(jìn)行針對性開發(fā)和優(yōu)化,形成使用產(chǎn)品 -> 收集數(shù)據(jù) -> 改進(jìn)產(chǎn)品的閉環(huán)。

尼爾森對產(chǎn)品可用性的認(rèn)識(shí):易用性、交互效率、易記性、容錯(cuò)性、用戶滿意度

開放性

開放性賦予了工具鏈強(qiáng)大生命力。

能力開放

MBox 在設(shè)計(jì)之初就使用了插件化的架構(gòu),自底向上完全遵循插件化開發(fā)的思路,盡可能地將所有能力開放出來,用戶通過 MBox 提供的開發(fā)者套件來開發(fā)自定義插件,實(shí)現(xiàn)定制化能力。正因?yàn)橛辛巳绱碎_放的自定義能力,MBox 對研發(fā)流程支持的廣度和深度將持續(xù)不斷地進(jìn)化。

平臺(tái)開放

MBox 允許任何開發(fā)者可以將自定義插件上傳至插件市場,同時(shí)團(tuán)隊(duì)技術(shù)負(fù)責(zé)人可以結(jié)合團(tuán)隊(duì)選擇需要的插件集合,插件市場將負(fù)責(zé)同步團(tuán)隊(duì)內(nèi)所有成員的插件及其對應(yīng)版本。除此以外,所有用戶也可以在插件市場這個(gè)平臺(tái)上瀏覽和安裝任何對自己研發(fā)效率提升有幫助的插件。通過這樣一個(gè)開放的平臺(tái),在字節(jié)跳動(dòng)內(nèi)部已有來自多個(gè)不同的研發(fā)團(tuán)隊(duì)的數(shù)十個(gè)插件被發(fā)布至插件市場,功能涵蓋了研發(fā)的各個(gè)流程,逐步建立起了一個(gè)開放的工具鏈生態(tài)。

一文讀懂字節(jié)跳動(dòng)自研移動(dòng)研發(fā)工具鏈 MBox(字節(jié)跳動(dòng) 創(chuàng)新工具)

如果說上面提到插件化架構(gòu)很好地解決了插件“從哪里來”的問題,那么插件市場就很好地解決了插件“到哪里去”的問題。

思考

全鏈路與可定制

在選在研發(fā)工具鏈時(shí),通常會(huì)有兩種選擇:

一種是全鏈路型的工具,即一套完整的解決方案覆蓋研發(fā)的所有場景,在該方案下,所有研發(fā)數(shù)據(jù)流動(dòng)會(huì)更加順暢,用戶體驗(yàn)更佳。

另一種是定制化工具,即結(jié)合當(dāng)前團(tuán)隊(duì)的研發(fā)流程、人員結(jié)構(gòu)、技術(shù)特點(diǎn),自由選擇最適合的工具鏈組合,將各個(gè)工具的長處發(fā)揮到極致。

從表面上看 MBox 似乎更像前者,即一款全鏈路的工具,但本質(zhì)上 MBox 在做的是將后者的定制化工具組做一次整合,解決各個(gè)工具之間數(shù)據(jù)流轉(zhuǎn)問題,提供一站式的工具鏈服務(wù),打造研發(fā)體系的閉環(huán)。MBox 并不是要取代任何一個(gè)環(huán)節(jié)的工具,因此對于一般項(xiàng)目而言 MBox 的接入過程十分簡單,我們的目的是將工具和開發(fā)者連接起來,最大程度地提升研發(fā)效能與用戶體驗(yàn)。

再論研發(fā)流水線

上文提到研發(fā)流水線的概念,在傳統(tǒng)實(shí)踐過程中,圍繞著這條流水線會(huì)孕育出各種工具平臺(tái),來協(xié)助研發(fā)人員完成這條流水線。然而,正如文章開頭提到,工具鏈大多都專注于研發(fā)流程的某個(gè)節(jié)點(diǎn),常常忽略了流水線節(jié)點(diǎn)流轉(zhuǎn)的流暢性。

我們?yōu)槭裁慈绱岁P(guān)注生產(chǎn)節(jié)點(diǎn)之間流轉(zhuǎn)的流暢性?

在提升研發(fā)效能實(shí)踐中,提升生產(chǎn)節(jié)點(diǎn)流轉(zhuǎn)的效率與提升單一節(jié)點(diǎn)效率一樣重要。生產(chǎn)節(jié)點(diǎn)流轉(zhuǎn)的流暢性其實(shí)最終體現(xiàn)在我們能夠?yàn)橛脩籼峁┮粋€(gè)靈活性強(qiáng)且易用性高的生產(chǎn)工具,因?yàn)閷?shí)踐中發(fā)現(xiàn),前端研發(fā)人員們往往在一個(gè)多變的處境中,需求多變(同時(shí)開發(fā)多個(gè)需求或同時(shí)修復(fù)多個(gè) bug)、環(huán)境多變(開發(fā)環(huán)境經(jīng)常需要升級(jí)或切換版本)、工具多變(技術(shù)進(jìn)展帶來的工具變化)。研發(fā)人員時(shí)常直面這些變化卻難以從容應(yīng)對,尤其在面對流程切換所導(dǎo)致的效率損失時(shí)而倍感壓力。

工具能夠?yàn)檠邪l(fā)人員提供足夠的靈活性,是確保生產(chǎn)節(jié)點(diǎn)流轉(zhuǎn)效率的關(guān)鍵。MBox 有意識(shí)地為用戶提供了盡可能多的靈活性,支持了從需求到編碼、需求到需求、實(shí)現(xiàn)到準(zhǔn)入、編碼到合碼、線上問題到本地排查等多個(gè)流程的靈活流轉(zhuǎn)。

結(jié)束語

自智能終端設(shè)備誕生起,移動(dòng)端研發(fā)已蓬勃發(fā)展十余年,每個(gè)平臺(tái)框架都已經(jīng)發(fā)展出了一套獨(dú)特的工具鏈體系,每個(gè)大型團(tuán)隊(duì)內(nèi)部也已經(jīng)建立起了一個(gè)個(gè)內(nèi)部的工具體系,但正是這一個(gè)個(gè)獨(dú)立而又成熟的工具體系將成為了束縛我們施展技術(shù)的牢籠。在大前端背景下,技術(shù)棧界限變得模糊,移動(dòng)端開發(fā)者們?nèi)绻軌虼蚱七@些限制,將我們的經(jīng)驗(yàn)與技術(shù)應(yīng)用到更廣闊的未來之中,這是多么令人激動(dòng)的事!最后希望 MBox 在這方面一些微不足道的思考和工作,能夠重新喚起我們移動(dòng)端開發(fā)者們改變世界的偉大愿望。

One More Thing

MBox CLI (Command Line Tool) 已經(jīng)開源啦!現(xiàn)已支持 CocoaPods (iOS) 與 Bundler 項(xiàng)目,后續(xù)將增加更多平臺(tái)支持。通過開源,我們希望更多的開發(fā)者能夠加入到 MBox 的生態(tài)建設(shè)中來,為廣大的移動(dòng)端開發(fā)者帶來一款出色的研發(fā)工具。

GitHub 地址:

  • https://github.com/mboxplus/mbox

參考鏈接

  • https://en.wikipedia.org/wiki/Toolchain
  • https://github.com/nvie/gitflow
  • https://www.atlassian.com/devops/devops-tools/choose-devops-tools
  • https://flutter.dev/
  • https://gradle.org/
  • https://cocoapods.org/

加入我們

我們是負(fù)責(zé)抖音客戶端基礎(chǔ)能力研發(fā)和新技術(shù)探索的團(tuán)隊(duì)。我們在工程/業(yè)務(wù)架構(gòu),研發(fā)工具,編譯系統(tǒng)等方向深耕,支撐業(yè)務(wù)快速迭代的同時(shí),保證超大規(guī)模團(tuán)隊(duì)的研發(fā)效能和工程質(zhì)量。在性能/穩(wěn)定性等方面不斷探索,努力為數(shù)億用戶提供最極致的基礎(chǔ)體驗(yàn)。

如果你對技術(shù)充滿熱情,歡迎加入抖音基礎(chǔ)技術(shù)團(tuán)隊(duì),讓我們共建億級(jí)全民 App。目前我們在上海、北京、杭州、深圳均有招聘需求,內(nèi)推可以聯(lián)系郵箱:liyao.ryan@bytedance.com ,郵件標(biāo)題:姓名 – 工作年限 – 抖音 – 基礎(chǔ)技術(shù) – iOS/Android

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。