摘要:目前團隊中前后端聯調是較之個人多帶帶開發相對耗時的一個環節,主要體現在環境下的部署時間較長。本文的目的是通過將聯調本地化,減少部分枯燥勞動以及無效的等待時間,提高團隊的開發效率。不需要更改的為外部,保持即可。
目前團隊中前后端聯調是較之個人多帶帶開發相對耗時的一個環節,主要體現在:
beta環境下的部署時間較長。首先部署beta需要經過push分支、合并沖突、build、部署四個步驟。在不考慮分支沖突的情況下,由于白天CI服務器壓力較大,以商戶后臺應用為例,build耗時約1-2min,部署耗時約3-5min。本地的build則相對快得多,冷部署時間則和beta服務器差不多。
代碼迭代過程中等待時間所占比例較多。迭代具體指代碼更新 - 編譯&部署 - 驗證 - 代碼更新的開發循環,而在beta編譯和部署時間則是這個循環的大頭,包括切換CI頁面的時間、操作push&update的時間、等待build的時間、等待部署的時間,每一步都需要肉眼確認,無法自動化。雖然人腦上下文切換的時間如果熟練之后也挺快的,但是beta部署不像本地部署可以應用熱部署技術,beta部署的時間代價無法縮減。
其他分支可能的干擾。由于beta上存在其他并行開發的分支,如果存在分支沖突,根據沖突行數和對業務代碼的了解程度的不同,則存在極不確定的merge時間,但是實際上merge步驟應該放到聯調后和上線前,以保證不會因為分支上線時間的調整導致merge工作量的浪費。
本文的目的是通過將聯調本地化,減少部分枯燥勞動、以及無效的等待時間,提高團隊的開發效率。
業務團隊目前開發的API基本是兩種形式:WebAPI和RpcAPI,WebAPI通常是指以超文本傳輸協議(HTTP/HTTPS)為基礎的API,是現代流行的對外部第三方開發者提供服務的方式。例如Github API,它的編碼風格——特征狀態轉移(Rest)被大家視為經典;RpcAPI則是通過各類RPC協議為基礎的API,各個公司的組件有所不同,團隊中用的是Pigeon。
下文將分為相應的兩個部分闡述。
基于Tomcat的WebAPI為了做到本地聯調,只需要確保前端能訪問到后端Tomcat上的應用即可。以macOS為例,我收集了相關的資料,有些步驟是實驗證明不必要的,有些步驟則是必須的。
防火墻權限和端口映射配置【不需要】關閉系統偏好設置-安全性與隱私-防火墻
【需要】設置防火墻的端口轉發和訪問本機外網IP的權限。具體的設置方法不再贅述。
# 對本地IP的Tomcat默認端口8080訪問重定向到80端口,這樣就可以直接使用域名訪問了,避免有些應用會禁止非80端口的訪問。 rdr pass on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080 rdr pass on en0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080 # 類似的,允許外部機器通過外網IP(172.22.54.89)訪問本機,順便把8080端口重定向也設置了 rdr pass on lo0 inet proto tcp from any to 172.22.54.89 port 80 -> 172.22.54.89 port 8080 rdr pass on en0 inet proto tcp from any to 172.22.54.89 port 80 -> 172.22.54.89 port 8080Hosts配置
配置文件位于/etc/hosts。
【不一定需要】將beta域名的DNS地址重定向到本地
#127.0.0.1 web-application.dev.meituan.comIP地址配置
【不一定需要】雙方機器的IP切換到不同路由器下。
這是因為無線熱點配置了AP隔離的安全特性:掛在同一Wifi AP下的機器禁止通過路由機(其實是交換機)本身相互訪問。
ID | 機器 | SSID | IP |
---|---|---|---|
1 | mac | mtdp | 172.22.54.89 |
2 | mobile | mtdp_tech | 172.22.38.121 |
3 | mobile | mtdp | 172.22.50.98 |
1號機訪問2號機的traceroute回顯,可以看到正常訪問。
1號機訪問3號機的traceroute回顯,可以看到網絡包在網關這一層就被丟棄了。這也就解釋了mac和手機處于mtdp時,Charles抓包失敗的情況。
配置文件位于%TOMCAT_HOME%/conf/context.xml。
【不需要】設置如下的IP過濾器,保持默認即可。
【不需要】更改Engine的defaultHost為外部IP,保持localhost即可。
【不需要】更改Host的name為外部IP,保持localhost即可。
基于Pigeon的RpcAPI
【需要】配置相同的泳道。
Pigeon是公司內部的Rpc組件,支持泳道特性,大大簡化了配置過程。配置了泳道,所有的請求也會被隔離起來了,在A泳道里的請求只會發送給A,而不會發送給B。利用該特性,我們可以把Rpc上下游的服務都加入到同一個泳道中,使雙方的IP位于服務發現列表的第一位。
上下游雙方編輯本地文件/data/webapps/appenv,在文件末尾新添加一行swimlane=XXX,此處的值可以是任意的,盡量不要和其他人配置相同就可以了。然后雙方各自啟動服務,在test.pigeon.sankuai.com中或者訪問ServiceIP:4080/services確認已位于統一泳道。
Reference【二層隔離技術漫談】“一:為什么要二層隔離”&“二:端口隔離技術”
泳道配置
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70463.html
摘要:效率專精系列善用統一描述語言提升開發效率分鐘搞定環境配置與使用考慮到篇幅較長的文檔反復修改的情況,要快速找到修改點比較困難。 之前零零散散寫了幾篇文章,主要是實際開發過程中一些效率痛點和相應的改善方法。今天抽空溫故知新,把之前的內容串起來,做了個小總結,即《效率專精系列》小系列的總集篇。 回顧項目開發流程 開發一個新項目時,開發流程大概分成以下幾步: 設計方案,并落地成設計文檔 設計...
摘要:其標準為前身是,提供強大的在線編輯功能,包括語法高亮錯誤提示自動完成實時預覽,并且支持用戶以格式撰寫導入導出轉換文檔。 團隊內部RestAPI開發采用設計驅動開發的模式,即使用API設計文檔解耦前端和后端的開發過程,雙方只在聯調與測試時耦合。在實際開發和與前端合作的過程中,受限于眾多因素的影響,開發效率還有進一步提高的空間。本文的目的是優化工具鏈支持,減少一部分重復和枯燥的勞動。 現狀...
摘要:而熱部署技術能夠幫助開發人員減少重新部署的等待時間。本文的目的為調研熱部署的技術現狀及其對開發效率的幫助,并簡單梳理其技術實現的難點。熱部署技術總結熱部署目前有多種技術實現官方開源商業。 開發、自測、聯調期間代碼可能會被頻繁地修改,通常即使只增加了一行代碼,都需要重啟容器以檢查執行效果。而熱部署技術能夠幫助開發人員減少重新部署的等待時間。本文的目的為調研熱部署的技術現狀及其對開發效率的...
摘要:通過插件更優雅地生成和的樣板代碼通過插件不污染地實現優雅分頁。使用步驟引入依賴,在或的配置中進行配置。提供語法提示自動補全錯誤提示導航功能。該插件提供了類似的功能,根據接口的方法名推斷含義,然后在中直接生成對應的。 團隊使用Mybatis作為數據庫訪問框架。不同于Hibernate這種采用經典面向對象思想設計的ORM框架,Mybatis是面向過程的,它只做了過程到SQL語句的映射。兩者...
閱讀 986·2021-11-24 09:39
閱讀 2205·2021-11-16 11:54
閱讀 2084·2021-11-11 17:22
閱讀 2376·2021-09-30 09:55
閱讀 3598·2021-08-12 13:22
閱讀 1629·2019-08-30 15:44
閱讀 1174·2019-08-29 12:12
閱讀 3268·2019-08-27 10:58