編寫腳本前請三思:Gen/App 恢復的最佳實踐
SIOS 恢復套件提供了豐富的應用程式感知監控和恢復最佳實踐。通常,每個 SIOS 復原套件都提供了一種循序漸進的程式設計方法,可根據以下要求復原應用程式、資料庫或服務:高可用性 (HA) 最佳實踐SIOS 復原套件提供在系統正常關閉、意外系統故障或崩潰,甚至應用程式、資料庫或服務本身崩潰或不可用的情況下恢復運作所需的智慧資訊。此外,每次恢復都融入了二十多年來在該領域積累的經驗智慧和改進。
但是,如果客戶仍然需要編寫自己的腳本來提供 HA,適用於 Windows 的 SIOS LifeKeeper和適用於 Linux 的 SIOS LifeKeeper包括透過腳本整合的選項通用應用程式 (Gen/App) 復原工具包。
編寫 Gen/App Recovery 腳本的最佳實踐
-
使用現代的、受支援的腳本語言進行 Gen/App 恢復
現有解決方案的常見做法是在新系統和架構上使用舊的現有腳本。但是,務必確保使用的是現代且受支援的腳本語言。
-
避免在 Gen/App 腳本中使用硬編碼值
使用硬編碼值可能會導致可移植性問題,以及長期維護方面的挑戰。請避免使用未來部署中可能會變更的硬編碼值,例如目錄路徑、使用者名稱或類似值。
-
實踐程式碼重複使用以提高 Gen/App 腳本質量
重複程式碼是客戶開發的腳本常見的問題。重複程式碼會造成品質、維護和故障排除方面的問題。請練習程式碼重複使用,例如繼承、函數和子例程。
-
為函數和變數選擇有意義的名稱
描述性變數比“n”或“i”等單字元變數更有幫助。幾個月或幾年後再查看程式碼時,「n」這個變數的意義還會和「iReturnCode」一樣重要嗎?
-
刪除未使用的函數和變數以防止程式碼膨脹
雖然函數和變數的命名很重要,但要避免使用未使用的變數和函數來擾亂程式碼。聲明變數而不使用它們會在未來的更新和故障排除過程中造成混亂。雖然 8 MB 記憶體的時代早已過去,但額外添加一些重用性有限或沒有額外價值的變數或函數仍然會造成負擔,並導致程式碼膨脹。
-
驗證所有輸入參數以確保 Gen/App 可靠執行
急於讓程式正常運行,不要忽略輸入變數的驗證。務必驗證腳本和函數的所有輸入。不要想當然地認為“我們做到了”,所有輸入都是有效的。
-
記錄有用且可操作的訊息
考慮需要記錄哪些輸出以用於狀態/進度、錯誤情況或故障排除。每個訊息都應經過深思熟慮,並採用適當的措辭,以便為運維人員和未來的開發人員提供有用的回饋。
8.檢查所有方法/函數/API呼叫的回傳程式碼並採取防禦措施
在腳本或函數主體內執行的命令將具有返回程式碼,明確表示為通過、失敗或其他。請務必檢查、記錄並妥善處理方法、函數和 API 呼叫的預期和意外回傳程式碼。
-
使用防禦性程式技術
應用防禦性程式設計的最佳實踐,包括最小特權存取、輸入驗證、錯誤處理等。
-
測試 Gen/App 恢復腳本超越快樂路徑
僅有可運行的程式碼是不夠的。制定一個強大的驗證計劃,並對程式碼進行廣泛的測試,尤其是在預期一切正常的情況下,更要超越「快樂路徑」的範疇。
-
使用版本控制進行腳本管理和故障排除
使用版本控制和程式碼管理工具。版本控制對於故障排除、管理和追蹤腳本不可避免的修復至關重要。
-
透過程式碼檢查和同儕審查儘早發現錯誤
使用程式碼檢查和同儕審查來提高程式碼的彈性和穩健性。程式碼評審有助於及早發現問題,並降低後期故障和錯誤帶來的成本、風險和負擔。
-
驗證在 Gen/App Recovery 中執行所需的權限
擁有組織良好、現代化、經過審查、檢查、測試和控制的程式碼是精心編寫的 gen/app 腳本的重要組成部分。然而,即使是編寫得最好的腳本,如果沒有正確的權限,也將無法執行。請確保腳本具有正確的權限,以便獨立執行以及在高可用性解決方案的服務/使用者帳戶下執行。
-
清晰地註解程式碼以解釋邏輯和業務用例
提供有助於解釋業務邏輯和用例、描述預期函數輸入和傳回值並有助於整體理解的註解。即使程式碼編寫良好,也需要註釋,尤其是在業務邏輯或需求不明確的情況下。註解區塊範例如下:名稱:
目的:
先決條件:
後置條件:
返回:
準備好自信地簡化 Gen/App 恢復了嗎?
不要讓高可用性成為偶然。透過 SIOS LifeKeeper 和通用應用程式 (Gen/App) 復原套件,您可以保護關鍵應用程式、簡化復原並減少停機時間。
立即申請演示了解 SIOS 如何幫助您實現可靠、經濟高效的高可用性和災難復原。
作者:Cassius Rhue,SIOS 客戶體驗副總裁
經許可轉載SIOS




