騰訊一線研發經驗分享|令我工作質效並增的5大方法論

圖片

圖片

👉騰小云導讀

作爲一名擁有 6 年騰訊工作經驗的後臺開發者,作者深知在一個龐大且複雜的技術棧中,擁有正確的方法論和思維方式對工作效能影響有多大。在這篇文章中,作者將結合在騰訊工作的具體項目和案例,分享5個方法論:量化、對比、記錄&流程、規範&統一、自動化。希望這些經驗和方法論能對廣大開發者有所幫助,尤其是對於後端開發者而言。

👉看目錄,點收藏

1 量化

1.1 技術指標數據

1.2 業務指標數據

2 對比

2.1 同比環比

2.2 前後對比

3 記錄&流程

3.1 記錄

3.2 流程

4 規範&統一

4.1 規範

4.2 統一

5 自動化

5.1 持續集成和持續部署(CI/CD)

5.2 自動化測試

5.3 腳本和工具

5.4 監控與告警

6 結語

01、量化

第一個方法就是量化,因爲量化是所有方法的基礎。量化是將抽象的概念、現象或過程轉化爲可測量、可分析的數值的過程。通過量化,開發者可以更好地理解、比較和改進系統或過程。在軟件開發中,量化可以幫助開發者確定關鍵性能指標(KPI)和衡量軟件項目的成功程度。

在實際項目中,我們通常會把關鍵指標分成兩類進行量化:一類稱之爲業務指標數據,另外一類稱之爲技術指標數據。 對於一個合格的後臺開發人員來說,需要同時關注業務指標數據和技術指標數據,才能更好的感知業務情況。下面我們展開來講。

1.1 技術指標數據

在技術指標數據中,項目一般也會有幾類量化數據。第一種是服務器(容器)基礎數據,第二種是業務埋點監控數據,第三種性能基準數據。

1.1.1 服務器(容器)基礎數據

服務器基礎數據是每個公司都默認會有的基礎監控數據,主要統計服務器的基礎信息,比如 CPU、內存、IO 等。開發者可以通過這些監控數據來查看服務器是否故障,服務器的負載是否正常,服務消耗的資源情況和趨勢等信息。

在騰訊內部,服務器的基礎監控最開始都是通過一個叫 monitor 的服務來查看,告警的話一般都是 TMP(Tencent Monitor Platform)。比如 Ping 無響應或響應超時、硬盤空間不足。

雲原生化之後,普通開發者基本不需要關注服務器本身的監控數據了,只需要關注對應的 Pod 數據。但是,邏輯是差不多的。

1.1.2 業務埋點監控數據

服務器的粒度是比較大的,無法感知每個用戶的情況,所以就需要通過在服務中埋點增加關鍵指標數據和日誌,然後再根據各種維度進行相關的數據統計。

圖片

在後臺開發領域,由於產品形態的不同,關鍵的指標也一般都不相同,但是也有一些通用的指標數據。比如各個模塊的處理時間、接口的響應時間、正常響應的次數、響應異常的次數,根據用戶、分組、時間的維度。

對這些關鍵進行統計,得到相應的業務技術指標,比如錯誤率、超時率、平均耗時、最大耗時、在線人數等。

在我個人的項目中,早先是通過 monitor 統計了一些指標數據,比如併發、請求數,正常響應,錯誤響應等。但是 monitor 是機器維度,無法進行更多維度的分析。所以第一次優化,是通過將這些數據通過埋點的方式寫在日誌,然後再通過ELK建各種視圖進行數據分析。關鍵的的指標數據再通過 ES API 寫到 MySQL 中持久化。第二次優化又將一些指標數據拆分出來使用Prometheus 存儲替換了原來的 monitor 那一部分。

1.1.3 性能基準數據

性能基準數據也是技術指標數據中非常關鍵的一個組成部分。 通過對系統的關鍵組件和關鍵鏈路進行基準測試,可以瞭解各個組件的的性能,再通過對服務的性能測試,可以通過計算得到一個數值,能夠準確的進行資源評估。比如服務預計 QPS 是 1 萬,那需要清楚的知道需要多少核的機器部署服務,需要多少核的數據庫,多大的緩存,以及後續是否還有優化的空間,系統的瓶頸是什麼。

1.2 業務指標數據

不同的業務指標數據的定義不盡相同,我們以騰訊內部的直播和語音爲例講述。

以直播業務爲例,開發者會定義房間數、同時在線人數,起播數,起播成功次數,卡頓人數,卡頓次數等業務相關指標。

以語音爲例的話,會定義請求次數,會話數,請求耗時,音頻長度,音頻處理耗時,實時率等業務相關指標。

通過分析以上的業務指標定義的規律,可以發現:業務指標數據定義一般遵循以下的邏輯:

總之,業務指標數據的定義需要遵循以上邏輯,來確保關注業務核心、用戶體驗、效率和性能等多個方面。通過持續監測和分析這些業務指標,可以更好地瞭解業務的運行狀況,並採取相應措施優化產品和服務。

02、對比

在有了量化的業務指標數據和技術指標數據之後,就需要具備一定的數據分析能力,才能利用這些數據更好的提前預警問題,發現問題和解決問題,優化服務,提升產品質量和競爭力。

所以第二個方法論就是對比。爲啥叫對比而不叫數據分析呢?因爲數據分析是一個專業的領域,涉及的領域非常多。作爲一個普通的後臺開發人員,很難成爲一個專業的數據分析師。但是通過對比其實就能解決很多技術問題。

2.1 同比環比

在後臺開發過程中,需要每天關注服務運行的技術指標數據和業務指標數據,以確保系統的穩定性和可擴展性。通過進行同比(比如這週一對比上週一)和環比(比如今天對比昨天)分析,可以更好更快地瞭解系統的發展趨勢和業務變化。同時,這也有助於開發者及時發現潛在的問題,如性能瓶頸、資源浪費等。

圖片

在我個人經歷的項目中,每天都會有關鍵數據同比和環比的情況。這樣可以及時發現業務的變化情況、發現一些週期性的規律(比如,教育行業的寒暑假對業務的影響其實非常大)。

只有通過同比環比的對比才能更好的發現這些規律,及時的做一些策略的調整避免資源的閒置和不足。

2.2 前後對比

在後臺開發過程中,經常需要對系統進行優化或修改。在進行這些操作之前,需要先對系統進行備份,以便在優化或修改後進行前後對比,確保優化或修改的有效性。

在騰訊,我們會使用版本控制系統(如 Git)來管理代碼,確保每次優化或修改都可以輕鬆回滾。 同時,也會使用自動化測試和持續集成來驗證修改的正確性和性能影響,確保只會有變更點發生了變更。

而有時候排查問題會發現日誌量很大,而且沒有將埋點覆蓋到每一處。這種情況下,只能通過不斷的分析異常發生的前後日誌,耐心的對比前後的不同處和相同處,最終找打那個觸發的變量。這樣可以幫助開發者更好更簡單的排查到問題原因。

03、記錄&流程

對於後臺開發者來說,記錄有時候是比開發更重要的。 因爲沒有記錄,很多東西可能都找不到在哪裏,非常的浪費時間。而流程是爲了保證質量。

實際上,我們團隊出現了幾次事故,基本上都是因爲研發人員操作流程不合規導致。流程不等於墨守成規,而是以一種高效的有質量保障的方式去執行一些容易出錯的操作。

3.1 記錄

記錄在後臺開發過程中具有舉足輕重的地位。它可以幫助開發人員跟蹤問題、共享知識以及提高協作效率。以下是一些關於記錄的例子:

3.2 流程

流程在保證項目質量和提高工作效率方面具有至關重要的作用。

在騰訊內部,流程旨在規範開發人員的行爲,防止錯誤的發生,並確保高質量的結果。以下是一些「流程」在騰訊內部的應用:

  • 代碼審查:通過設立代碼審查流程,確保每一段代碼在提交前經過同事的審查,以發現並修復潛在的問題和錯誤。

  • 自動化測試:通過實施自動化測試流程,可以在短時間內測試大量用例,提高軟件質量並減少人爲錯誤。

  • 發佈管理:制定嚴格的發佈流程和上線策略,確保在發佈新功能或修復問題時不會對現有系統造成不良影響。一般會有發佈周知和發佈審批,需要同步測試結果,發佈特性,灰度策略,影響範圍等信息。

  • 故障應對和回滾:在出現故障時,設立應對和回滾流程,以便迅速的回滾的上一版本。

04、規範&統一

規範&統一主要指的是開發者在編碼或者寫文檔、或者使用其他組件時,使用規範的方式,且儘可能的用統一的方式或者組件或框架,避免在同一個領域使用多個不同的輪子。

在代碼的規範這塊,騰訊內部有多種語言的編碼規範。 雖然沒有強制執行,但是這個代碼規範的代碼是可以幫助開發者更好的理解彼此的代碼邏輯,更好的維護的開發。那不光要儘可能的遵循這一套規範,而且要儘量避免使用不同的規範。

4.1 規範

4.1.1 代碼規範

  • 遵循編碼規範:確保團隊成員遵循公司內部的編碼規範。這包括命名規範、代碼格式、註釋規範等。這有助於提高代碼的可讀性,降低維護難度。

  • 使用代碼檢查工具:利用代碼檢查工具(如 CodeCC)來自動檢查代碼是否符合規範。這有助於確保團隊成員的代碼風格一致,避免在代碼審查階段浪費時間在格式問題上。

4.1.2 文檔規範

  • 遵循文檔模板:爲團隊制定文檔模板,確保所有文檔的結構和格式統一。這有助於提高文檔的可讀性,方便團隊成員快速找到所需信息。

  • 使用統一的文檔平臺:使用統一的文檔管理平臺(如 iwiki)來存儲和共享文檔。這有助於確保團隊成員能夠方便地訪問和更新文檔,避免信息的丟失和混亂。

4.2 統一

4.2.1 組件和框架的統一

  • 統一技術棧:儘可能在團隊內部統一使用相同的技術棧,避免在同一個領域使用多個不同的組件、庫或框架。這有助於降低學習成本,提高協作效率。

  • 組件和庫複用:在開發過程中,儘量複用現有的組件和庫,避免重複造輪子。這有助於減少開發時間,降低維護成本,同時確保項目的質量和穩定性。能使用騰訊雲的資源就不要自建相關服務。

  • 定期技術評審:定期組織技術評審會議,討論團隊內部使用的組件、庫和框架,評估其適用性和性能。這有助於確保團隊使用的技術是最佳實踐,避免不必要的技術債務。

05、自動化

在後臺開發的過程中,需要用到一些自動化的工具來提升效率。 比如 CICD、自動化測試、腳本和工具。自己寫腳本,自動化的目的有兩個:

一個是最大化的提高我們的效率、解放重複勞動,二是流程標準化、減少人工出錯的可能性。

圖片

5.1 持續集成和持續部署(CI/CD)

使用 CI/CD 工具(如藍盾流水線、智研 CI 等)來自動化代碼構建、測試和部署過程。這有助於縮短產品上線週期,降低部署風險,同時確保團隊成員遵循統一的開發流程。

爲 CI/CD 流程編寫配置文件(如 Dockerfile、trpc.yml 等),以便在代碼倉庫中跟蹤和管理。這有助於確保流程的可維護性和可重用性。

5.2 自動化測試

使用自動化測試框架(如 QTA、星海等)來編寫和執行測試用例。這有助於確保代碼在提交前經過充分的測試,降低人爲錯誤。

將自動化測試集成到 CI/CD 流程中,確保每次代碼提交都會觸發測試。這有助於發現問題早期,避免錯誤傳播到生產環境。

5.3 腳本和工具

編寫自動化腳本(如 Shell、Python、Node.js 等)來簡化日常開發任務,如數據庫備份、日誌分析、性能監控等。這有助於提高工作效率、解放重複勞動。

使用開發者工具(如 IDE 插件、代碼生成器、API 文檔生成器等)來輔助開發過程。這些工具可以幫助開發者更高效地完成任務,提高代碼質量。

圖片

5.4 監控與告警

在後臺開發中,實時監控系統運行狀況並及時處理問題是非常重要的。通過自動化監控和告警,可以快速發現並解決系統中的問題,保證服務的穩定性。在騰訊,使用諸如雲監控、天機閣等工具來實現系統的實時監控,同時配置告警規則,確保在出現問題時能夠及時通知到相應的負責人。

06、結語

我爲期 6 年的騰訊工作經歷中,總結出的這 5 個後臺開發方法論對本人的工作及周圍朋友的幫助很大。希望通過量化、對比、記錄&流程、規範&統一、自動化這五個方面的方法論,能夠爲廣大後臺開發者帶來靈感、更好地開展工作,提高開發質量和效率。

在實際工作中,開發者需要根據項目的具體情況靈活運用這些方法論,不斷總結經驗,形成自己的開發體系和框架。以上是本次分享全部內容,歡迎大家在評論區分享交流。如果覺得內容有用,歡迎轉發~

-End-

原創作者|滕達

技術責編|滕達

圖片

圖片

後端都要學習什麼?歡迎在公衆號評論區分享對你後端職業生涯有幫助的項目、文章、教程、書目、思維方法......

我們將選取獲贊量最高的2位朋友,送出騰訊雲開發者-限定隨行杯1個(見下圖)。4月24日中午12點開獎。快邀請你的開發者朋友們一起來參與吧!

小云p.s.記得收藏這篇文章,定期回來撈撈網友們的新幹貨哦~

圖片

關注我並點亮星標

公衆號後臺回覆「後端」看更多鵝廠經驗

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章