標准化是運維過程中最基礎、最重要的,但也是最容易被忽視的一個環節。
重要的事說三遍,“標准先行,標准先行,標准先行”

先識別出各個運維對象,日常中惡運維都應該是針對這些對象的運維。
總結一下標准化的套路:
- 第一步,識別對象;
- 第二步,識別對象屬性;
- 第三步,識別對象關系;
- 第四步,識別對象場景。
基礎設施層面的標准化
基礎設施層面的運維對象應該不難識別,因為都是一個個物理存在的實體,我們可以進行如下分析。
- 第一步,識別實體對象,主要有服務器、網絡、IDC、機櫃、存儲、配件等。
- 第二步,識別對象的屬性,比如服務器就會有 SN 序列號、IP 地址、廠商、硬件配置(如 CPU、內存、硬盤、網卡、PCIE、BIOS)、維保信息等;網絡設備如交換機也會有廠商、型號、帶寬等信息。
- 第三步,識別對象之間的關聯關系,比如服務器所在的機櫃,虛擬機所在的宿主機、機櫃所在 IDC 等簡單關系;復雜一點就會有核心交換機、匯聚交換機、接入交換機以及機櫃和服務器之間的級聯關系等,這些相對復雜一些,也就是我們常說的網絡拓撲關系。
把以上信息梳理清楚,通過 ER 建模工具進行數據建模,再將以上的信息固化到 DB 中,一個資源層面的信息管理平台就基本成型了。
以服務器為例簡單展示一下,我們的視角就是下面這樣的:

但是,信息固化不是目的,也沒有價值,只有信息動態流轉起來才有價值。接下來我們需要做的事情,就是識別出針對運維對象所實施的日常運維操作有哪些,也就是識別出運維場景是什么。
- 第四步,還是以服務器為例,我們針對服務器的日常操作有采購、入庫、安裝、配置、上線、下線、維修等等。另外,可能還會有可視化和查詢的場景,如拓撲關系的可視化和動態展示,交換機與服務器之間的級聯關系、狀態(正常 or 故障)的展示等,這樣可以很直觀地關注到資源節點的狀態。
完成了這些工作,接下來才是對上述運維場景的自動化開發。所以你看,在真正執行去做工具和自動化平台之前,其實是需要先做好大量的基礎准備工作的。我要再次強調這一點,一定不能忽視。
應用層面的標准化
下面我們再一起看一個邏輯上的對象,就是我們前面經常提到的運維的核心:應用。對這個邏輯對象的建模會相對復雜一些,不過我們依然可以按照上面的套路來。
- 第一步,識別對象。
我們前面講過,這個識別過程是在做微服務架構設計或拆分的時候就確定下來的。所以嚴格地講,它不應該是運維階段才被識別出來的,而是在之前設計階段就被識別和確認下來,然后延伸到運維這里才對。
- 第二步,識別對象屬性。
一個應用是業務的抽象邏輯,所以會有業務和運維兩個維度的屬性。業務屬性在業務架構時確定,這主要是需要業務架構師去識別的,但是它的運維屬性就應該由運維來識別了。
下面我們一起來看一下,一個應用應該具備哪些基本的運維屬性。
* 應用的元數據屬性,也就是簡單直接地描述一個應用的信息,如應用名、應用 Owner、所屬業務、是否核心鏈路應用以及應用功能說明等,這里的關鍵是應用名;
* 應用代碼屬性,主要是編程語言及版本(決定了后續的構建方式),GitLab 地址;
* 應用部署模式,涉及到基礎軟件包,如語言包 Java、C++、Go 等;容器如 Tomcat、JBoss 等;
* 應用目錄信息,如運維腳本目錄、日志目錄、應用包目錄、臨時目錄等;
* 應用運行腳本,如啟停腳本、健康監測腳本;
* 應用運行時的參數配置,如運行端口、Java 的 JVM 參數 GC 方式、新生代、老生代、永生代的堆內存大小配置等。
從應用屬性的視角,應該是下面這樣一個視圖(簡單示例,不完整):

- 第三步,識別對象關系。
也就是應用與外部的關系,概括起來有三大類:
第一類是應用與基礎設施的關系,包括應用與資源、應用與 VIP、應用與 DNS 等等的關系;
第二類是平行層面的應用與應用之間的關系,這里再細分下去就是應用服務或 API 與其它應用服務和 API 的依賴關系。如果你有相關的經驗,應該會聯想到全鏈路這樣的工具平台了,沒錯,這樣的平台就是用來處理應用間關系管理的。
第三類是應用與各類基礎組件之間的關系,比如應用與緩存,應用與消息、應用與 DB 等等之間的關系。
- 第四步,識別應用的運維場景。
這個就會比較多了,比如應用創建、持續集成、持續發布、擴容、縮容、監控等;再復雜點的比如容量評估、壓測、限流降級等。
好,這里我們先收一下,聚焦到標准化的層面,通過基礎設施和應用層面標准化的示例,我想你應該可以掌握基本的建模思路了,這樣的思路可以應用到其它的運維對象上 。
同時,通過上面這些內容,你應該可以比較清晰地看到,我們的每一個運維操作都是針對某個運維對象的,這一點在規划運維體系時非常重要。
而在這些對象中,應用又是重中之重,是微服務架構下的核心運維對象。
從應用標准化的過程中我們也可以看到,針對應用的識別和建模,明顯復雜很多。所以,后面我還會從理論和實踐的角度來繼續強化和分析這個概念。
總結
- 第一步,識別對象;
- 第二步,識別對象屬性;
- 第三步,識別對象關系;
- 第四步,識別對象場景。
一個是從硬件進行識別,一個是從邏輯應用進行識別。
標准化的建設是是我們后續一系列自動化和穩定性保障的基礎
