如何開發乙個可運維系統的一點體會

2022-06-07 22:00:12 字數 2063 閱讀 8746

我們在開發乙個複雜系統的時候,常常會強調服務化、模組化、鬆散耦合等要求以達到高可用、高可靠及高效能等目的;比較少的人會考慮到系統的方便部署配置和運維,至少是在剛開始設計系統的時候很少考慮到運維部署方面的需求。這樣的複雜系統,在正式投入使用之後,常常會因為部署配置和運維等方面問題造成系統不穩定甚至出現異常。

根據整個系統的生命週期,運維佔據的比例和時間遠遠大於開發設計的時間,當然是排除了一些夭折的系統。所以在開發設計系統的時候,需要加強對於運維方面的重視。乙個好的系統,除了受到產品使用者的歡迎之外,還需要得到運維人員的認可,才能讓系統更加健康地發展。反之,如果乙個系統運維性較差,那麼運維人員和開發人員可能會逐漸形成隔閡,進而影響整個系統的服務。

結合自己在開發和運維方面的經歷,以及多年被無數簡訊告警騷擾的煩惱,談談在開發設計乙個系統的可運維性方面需要注意的問題。

複雜系統在開發上線及運維的過程中,肯定需要經歷各個不同的階段:開發測試、qa測試、上線前測試、上線、後續版本更新等。不同階段和環境下,系統都需要有不同的配置,對於配置和部署,最好能做到以下幾點:

各類系統實際運維的過程中,經常會出現下面的情況,需要盡量排除:

乙個複雜系統在實際執行過程中,難免會出現各類無法預見的問題。為了讓系統在這種異常環境下還能提供穩健的服務,除了系統設計的容錯和健壯性之外,還需要的是無處不在的監控和及時的告警。

複雜系統至少需要監控:

系統需要提供對各項監控內容的查詢顯示,以便運維人員能夠隨時了解系統的執行狀態;此外,最好能夠提供查詢api,方面運維整合。

告警等級

描述告**式和策略

告警接收人員

事故級系統整體服務不可用或異常,造成業務損失

im、郵件和手機簡訊;持續短間隔告警

運維、開發和產品業務,以及各自部門領導

故障級系統服務不穩定,未對業務造成明顯影響

im、郵件和手機簡訊;持續告警

運維、開發,以及各自負責人

異常級故障前兆,系統可能在不久將來出現故障

im、郵件;固定週期告警

運維和開發人員

缺陷級系統已知的缺陷,目前不會對整體服務產生影響

郵件;當系統觸發缺陷時告警

運維或開發人員

告警程式設計上,高等級的告警需要被優先處理,不能因為低等級告警過多而造成高等級告警被延遲。同時需要支援對同類告警的暫停報警功能(暫停一段時間後自動恢復監控報警),便於運維人員計畫性的維護操作。

告警內容的可讀性,對於運維人員也非常重要,特別是手機簡訊告警的內容,應該能夠讓運維人員馬上定位到是哪個伺服器所在的服務出現了哪類問題;最惱人的告警簡訊是各個環境系統都是相同的內容: xx服務出現異常,請檢查郵件和log 。

設計良好的系統,需要有接入統一的報警監控中心的能力。

乙個複雜系統需要提供良好的故障處理機制,包括故障預見、故障現場保留、故障智慧型處理等。

系統在執行過程中,對其利用的資源和自身的執行狀態做好監控,如果預見系統可能出現不穩定等情況,需要加以處理和告警。系統可預見的故障可能有:

當系統出現故障後,需要對故障現場做好保留,便於後續分析、處理和改進。故障現場保留的方式通常可以有:

乙個複雜系統,必須要做到可容錯和故障的自動處理及恢復。如果系統的可容錯和故障自動恢復做得還不完善情況下,至少需要提供可人工運維處理的介面。最怕的是系統做了部分的故障自動處理,但處理機制有問題,並且沒有提供有效的人工處理方式去解決,這個簡直是運維人員的噩夢!乙個系統在交付運維的時候,運維手冊中必須包含各類故障的詳細處理方式。

系統可容錯和故障自動恢復,典型的場景有:

當系統出現故障時,需要及時告警,通知運維和開發人員系統故障及對應的處理方式。如果故障自動恢復需要一定時間,恢復的進度也需要定期報告。

乙個可運維和方便運維的系統,不僅有助於運維人員快速掌握和上手運維,又能及時發現系統中可能存在的不穩定的異常的因素,從而促進整個系統更好更健康的發展壯大。系統的可運維性,不單單是系統上線之後要考慮的問題,而是要在系統設計之初就應該關注的一面,並且是貫穿到開發設計的各個階段中的。

以上僅僅是個人對可運維系統的一點體會,希望以後能多多出現這樣的系統,助更多的運維和開發人員脫離疲於奔命救火的苦海。

網易雲免費體驗館,0成本體驗20+款雲產品!

【推薦】 知物由學 | ai時代,那些黑客正在如何打磨他們的「利器」?(一)

乙個簡單的購物管理系統(完善了一點)

auther version1.0 date2014 4 1 public class six system.out.println 請輸入你的選擇 int chance input.nextint while true system.out.println 請輸入您要購買的產品編號 int m i...

乙個草根關於OO的一點理解

過程 物件永遠爭論不完的兩個模式 也可以說是思想 從原理上說程式都是從main開始 一行一行的執行非常標準的過程 那何來物件呢 其實就是一種偷懶的方式 重用 從main開始一行一行的寫就會發現很多行是重複的 怎麼辦呢 整理重複建立函式 函式越來越多 發現函式之間有著很多聯絡 總是全域性變數又太麻煩 ...

敏捷開發的一點認識

敏捷開發是一種以人為核心 迭代 循序漸進的開發方法。在敏捷開發中,軟體專案的構建被切分成多個子專案,各個子專案的成果都經過測試,具備整合和可執行的特徵。換言之,就是把乙個大專案分為多個相互聯絡,但也可獨立執行的小專案,並分別完成,在此過程中軟體一直處於可使用狀態 目前大部分公司是敏捷開發,分配合適的...