關鍵應用的可觀測效能力設計應該引起關注
我以前比較關注IT基礎設施的可觀測性,因為這些年我們並沒有承擔應用系統開發的工作,更多的注重於IT基礎設施。不過我一直認為資料庫這樣的IT基礎設施與應用軟體一樣,都是程式,因此在IT基礎設施領域的一些方法針對應用軟體也是有效的。複雜的應用系統特別是平臺型的應用系統是十分複雜的,向外可能和網路、安全裝置、客戶端有關;本身又涉及複雜的業務邏輯和元件間的互動協同;向內與IT基礎元件甚至IT基礎設施相關聯。一個稍微大一點的平臺型應用系統,可能比一套分散式資料庫還複雜。
昨天參加了一個系統故障的分析會,最終定位了原因後再來分析問題並不困難,因為一個網路抖動觸發了一系列的問題,最終因為軟體設計方的一些小瑕疵導致了最終的問題。不過整個定位過程十分複雜,因為所涉及的網路、雲平臺、資料庫、中介軟體等環境十分複雜,一個個排查過來,就花了好幾個小時。對於一個關鍵的系統,這種定位速度是無法滿足運營的需求的。開發商十分坦誠的承認了軟體的缺陷是導致問題的根因,並提出了整改的方案。不過這並不能徹底的杜絕類似問題的發生。下一次另外一個BUG導致了新的問題的時候,還是需要如此冗長的排查過程。
這個平臺系統對於客戶來說十分關鍵,今後數百個大大小小的系統都要使用這個平臺,幾個小時的故障排查無法滿足使用者的SLA,因此如何提高問題排查的速度,甚至實現故障自愈是十分關鍵的。雖然目前使用的一些排查手段都可以做成自動化工具,不過哪怕所有的排查都自動化了,解決故障所需的時間仍然太長了。怎麼才能解決這個問題呢?
二十年前我曾經參與了某銀行的大前置IPP的研發,設計了IPC、多優先順序佇列、服務路由等模組,並親自動手編寫了共享記憶體管理模組。因為IPP是CORE BANKING的核心元件之一,因此在設計這個模組的時候在IPC層面做了大量的統計指標、故障偵測和故障自愈的設計。系統執行的狀態可以透過大量的統計資料得以反饋,而一些已知故障都能夠被後臺程式發現並實施預設的自愈程式,因此這套系統從出廠後就相當穩定。
從上面的案例可以看出,要想讓應用系統執行得更穩定,或者說要提高應用系統的業務連續性,應用的可觀測性至關重要。如果在設計階段,就能夠像資料庫等IT基礎設施一樣,設計大量的可觀測性介面,將日誌、指標、跟蹤能力原生態的實現出來,那就會大大的提高應用的可用性,也可以大大縮短應用故障時的故障定位時間。
應用的可觀測效能力來自於四個方面,日誌告警自不必說,所有的應用系統都會有各種日誌,應用軟體如果不能認認真真的寫日誌,那就喪失了快速定位問題的能力。不過應用系統的日誌更為複雜,不僅僅要考慮應用系統本身的日誌,還要關注其執行環境中的各個IT基礎設施的日誌,一個統一日誌工具是必不可少的。除了統一採集日誌外,還要實時的分析和處理日誌,將日誌中的關鍵資訊變成結構化的資料,以便於後續的自動化分析預警與根因定位。
指標體系是目前大多數應用系統中欠缺的東西,針對應用系統的特點,編制一套可用於故障分析與預警的指標體系其實相當重要。應用系統的指標一定要實用,要選擇能夠反映出系統執行健康狀態的資料作為指標。僅僅有指標還不夠用,還需要透過指標構建一系列的健康模型與故障模型。當某些現象發生時,可以自動告警。當故障發生時,也可以透過模型快速找到診斷路徑。
完成指標與模型後,就可以根據異常檢測、基線等方法發現其中的異常,並且動態生成各種運營事件,並透過各種規則引擎和演算法對這些事件進行聯動分析,從而對系統進行十分全面的健康分析與隱患預警。
在金融、證券、網際網路等企業中,平臺型的應用系統的可觀測性做得相對來說比較到位,而大多數傳統企業的系統中,這方面是比較薄弱的。隨著企業數字化轉型的深入,關鍵的平臺型應用會越來越多,其可靠性要求也越來越高,在系統中做好可觀測效能力設計也就越來越重要了。
來自 “ 白鱔的洞穴 ”, 原文作者:白鱔;原文連結:https://mp.weixin.qq.com/s/08fAyJzK0shffqcoyKsCvA,如有侵權,請聯絡管理員刪除。
相關文章
- web前端應用應該關注哪些效能指標?Web前端指標
- 應對複雜架構下的監控挑戰?統一運維可觀測能力是關鍵!架構運維
- 評估軟體供應鏈安全可關注這5個關鍵問題
- 淺談網路靶場的關鍵能力與應用方向
- 應急響應中你到底該關注哪些指標?指標
- 手遊安全真正應該關注什麼?
- 高階營銷型網站建設應該關注那些點?網站
- 提高程式設計能力的關鍵(翻譯)程式設計
- 該檔案沒有與之關聯的應用來執行該操作。請安裝應用,若已經安裝應用,請在“預設應用設定“頁面中建立關聯
- 中小企業選擇ERP系統時應關注的10個關鍵功能
- 可觀測實踐|如何使用阿里雲 Prometheus 觀測 ECS 應用阿里Prometheus
- 為什麼應用安全應該成為金融服務提供商的重點關注問題?
- 關於樂觀鎖與悲觀鎖的實際應用
- 關於bug,測試應該怎麼提
- kotlin的 by lazy 和 lateinit 關鍵字的應用Kotlin
- 軟體測試應該重點關注的測試過程,廣東軟體測試公司推薦
- 關於架構設計的易變性,應該如何理解呢?架構
- 人臉識別應用下一站 提升泛化能力是關鍵
- Forrester報告:CIO今年應該關注的12項技術趨勢REST
- 雲原生應用的十個關鍵屬性
- SAP Fiori Elements 應用裡和 Fiori 3 相關的外觀設定
- 關於MySQL表設計,測試人員可以關注哪些點MySql
- AppDynamics:2021年應用關注度指數報告APP
- 關於單頁面應用的 Token Storage 設計策略
- 業內觀察家談遊戲產品開發應該先關注的9個視角問題遊戲
- 關於Electron框架應用的安全測試框架
- 關於 jwt ,你應該知道的JWT
- 19年你應該關注這50款前端熱門工具(下)前端
- 19年你應該關注這50款前端熱門工具(中)前端
- 19年你應該關注這50款前端熱門工具(上)前端
- 淺談:合格的Java程式設計師應該具備的能力Java程式設計師
- 程式設計師應該關心的iOS12新特性一覽程式設計師iOS
- 頻頻被關注的AI,怎樣才能快速落地應用?AI
- YouGov:32%的女性認為媒體應該更關注性侵犯事件Go事件
- 你為什麼不應該過度關注go語言的逃逸分析Go
- 技術管理進階——Leader應該關注成長慢的同學嗎?
- 夸克APP端智慧:文件關鍵點檢測實踐與應用APP
- 區塊鏈應用|CryptoKitties效應:一個與區塊鏈有關的事故區塊鏈