我們總結了每個技術開發(fā)團隊都會遇到的 4 個難題
我們整理了一篇《每個技術團隊都會遇到的4個難題》,幫助即將從校園進入公司實習的后端程序員,以實踐的視角,看看一個后端技術團隊會遇到的一些難題。雖然,技術上的難題遠不止于此,但如果能從這篇文章中獲得一些職業(yè)體感,也許對你的實習面試會有所幫助。
從單個應用到多個應用,從百千級別的訪問流量到十萬、***別,從兩三個人的創(chuàng)業(yè)技術團隊到上千人的技術團隊矩陣,這些過程中,技術團隊都避不開了以下 4 個問題:
- 如何預測業(yè)務峰值時的容量
- 如何提升業(yè)務的穩(wěn)定性
- 如何提高業(yè)務的監(jiān)控能力
- 如何提高開發(fā)效率
如何預測業(yè)務峰值時的容量
早期的做法是在開發(fā)測試環(huán)境進行壓測,來評估線上容量,但線下環(huán)境的機器規(guī)模,和線上差距很大,很難通過線下推導線上。根據經驗,將采購的機器加入不同的應用里面,這時候就會遇到一個問題: ***業(yè)務峰值容量是多少?
這個問題,其實挺難回答的。這個應用多加幾臺,那個應用少加幾臺,整體的業(yè)務峰值承受能力就會不一樣,加減的規(guī)則很難通過人的經驗來確定,最多只能作為一些輔助判斷。另外,核心交易鏈路的梳理,也是一個體力活,如果依賴人為處理,有可能會漏掉一些看起來不那么重要的”分支”,這是整個容量不確定的地方,可變的因子很多。
比較有效的方式, 是在生產系統(tǒng)部署全鏈路壓測,來驗證各個生產環(huán)節(jié)是否能經受住各類流量的訪問,讓真實的流量來訪問生產環(huán)境,實現全方位的真實業(yè)務場景模擬,確保各個環(huán)節(jié)的性能、容量和穩(wěn)定性均可做到萬無一失。
如何提升業(yè)務的穩(wěn)定性
日常的各種運營活動,都有可能帶來巨大的流量高峰,除了通過引入全鏈路壓測來驗證各個生產環(huán)節(jié)是否能經受住各類流量的訪問, 構建系統(tǒng)的高可用保障能力也很關鍵,涉及多個組件或模塊,例如軟負載和配置中心、服務接入和調度編排、消息接收和發(fā)送、容器和調度、限流和降級 等。
運營一次活動,***的流量峰值是可以預測的,這就是服務的***接待能力,比如50萬筆的交易創(chuàng)建峰值,那超過的怎么辦?這時候,采用限流的方式,被限流的客戶在某一段時間內無法進行購物,一旦系統(tǒng)恢復服務能力,就可以繼續(xù)服務被限流的客戶,從而避免因流量超過上限,而影響整個平臺的客戶。
如何提高業(yè)務的監(jiān)控能力
分布式應用系統(tǒng)在協作性,擴展性和一定的容錯性方面,體現出了優(yōu)勢,但是在監(jiān)控、運維和診斷層面,面臨相當大的挑戰(zhàn)。
早期,架構師可以畫出整個應用系統(tǒng)的交互架構圖,隨著業(yè)務的發(fā)展,當擁有大量的應用、微服務和容器,即便整理了一幅交互架構關系圖,也會因為應用系統(tǒng)的變更,新需求的實現,整個應用系統(tǒng)的交互又會發(fā)生變化,這種變化無處不在,每天都在發(fā)生。因此,隨著業(yè)務量的增加,需要覆蓋面廣且深的全鏈路跟蹤監(jiān)控系統(tǒng) ,來診斷調用鏈的問題。
越是復雜的業(yè)務形態(tài),定位的難度越大,就越需要全方位、360度無死角的監(jiān)控,因此,建立一個平臺化、跨領域和立體化的監(jiān)控,能極大的縮短業(yè)務遇到問題時的恢復時間。
如何提高開發(fā)效率
開發(fā)效率是一個很廣泛的話題。不同的開發(fā)崗位,不同的使用場景,會有不一樣的開發(fā)效率工具。這里,我們介紹幾款后端工程師經常會用到的效率工具。
- 云端部署效率工具:
Cloud Toolkit 是一款 IDE插件,可以幫助開發(fā)者更高效地開發(fā)、測試、診斷并部署應用。借助這個工具,開發(fā)者能夠方便地將本地應用一鍵部署到任意機器,或 ECS、EDAS、Kubernetes,并支持高效執(zhí)行終端命令和 SQL 等。點此了解詳情。
- MacOS 搜索利器:
MacOS 自帶的聚焦搜索(Spotlight),可以將文稿、郵件、應用等整合在一起,通過關鍵詞匹配來進行搜索。Alfred 可以看作是Spotlight的增強版,是計算機依賴者的效率神器,支持添加自定義網絡搜索引擎,指定規(guī)則精準定位本地文件,以及在命令框內使用計算器、詞典等實用工具。
- 畫圖效率工具:
系統(tǒng)架構圖是為了抽象的表示軟件系統(tǒng)的整體輪廓和各個組件之間的相互關系和約束邊界,以及軟件系統(tǒng)的物理部署和軟件系統(tǒng)的演進方向的整體視圖。通過架構圖,可以讓干系人理解、遵循架構決策,就需要把架構信息傳遞出去。架構圖就是一個很好的載體,所謂一圖勝千言。點此了解詳情。
- JSON 瀏覽效率插件
對于 JSON 的數據,如果不編排,格式查看起來會很費勁。JSON-handle 是一款對 JSON 格式的內容進行瀏覽和編輯,以樹形圖樣式展現 JSON 文檔的插件,支持實時編輯。
- Java 代碼規(guī)約掃描效率插件
這是一款 Java 代碼規(guī)約掃描工具,旨在以工具的手段進行代碼規(guī)約的落地,項目包含三部分:PMD規(guī)則實現、IntelliJ IDEA 插件、Eclipse 插件,幫助開發(fā)人員在工程研發(fā)的多個階段進行代碼規(guī)約檢查, 降低故障率、提升編碼效率和質量。點此了解詳情。
當然,除了這些現成的效率工具,提升整個技術團隊的開發(fā)效率,需要單獨開發(fā)或改造一些系統(tǒng),例如團隊協作平臺、服務化改造等,當你以實習生的身份加入公司后,若有機會參與到這些提升開發(fā)效率的項目過程中。由此形成的效率意識,將會影響到你今后的工作習慣和理念。