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