什麼是網站可靠性工程?
網站可靠性工程(SRE)是使用軟件工具自動化 IT 基礎架構任務(例如系統管理和應用程序監控)的實踐。組織使用 SRE 確保其軟體應用程式在開發團隊的頻繁更新中保持可靠性。SRE 特別提高了可擴展軟件系統的可靠性,因為使用軟件管理大型系統比手動管理數百台機器更具可持續性。
為什麼網站可靠性工程很重要?
網站可靠性描述應用程式提供給最終使用者之後所具備的穩定性和服務品質。如果未偵測到技術問題,軟體維護有時會影響軟體可靠性。例如,當開發人員做出新的變更時,他們可能會不慎影響現有的應用程式,並導致其在某些使用案例中損毀。
以下是網站可靠性工程 (SRE) 實務的一些優勢。
改善團隊
SRE 改善了開發與營運團隊之間的協作。開發人員通常必須對應用程式做出快速變更,才能發佈新功能或修復重大錯誤。另一方面,營運團隊必須確保無縫的服務交付。因此,營運團隊使用 SRE 實務來密切監控每次更新,並及時回應由於變更而出現的任何問題。
增進客戶體驗
組織使用 SRE 模型,來確保軟體錯誤不會影響客戶體驗。例如,軟體團隊使用 SRE 工具,來自動化軟體開發生命週期。這可減少錯誤,意味著團隊可優先考慮新功能開發,而不是錯誤修復。
改善了操作規劃
SRE 團隊接受軟體失敗的可行機會。因此,團隊會規劃適當的事件回應,將停機時間對業務和最終使用者的影響降至最低。他們還可以更好地估算停機時間成本,並了解此類事件對業務營運的影響。
網站可靠性工程的關鍵原則是什麼?
以下是網站可靠性工程 (SRE) 的一些關鍵原則。
應用程式監控
SRE 團隊同意錯誤是軟體部署程序的一部分。他們並非致力於尋求完美的解決方案,而是根據服務水準協議 (SLA)、服務水準指標 (SLI) 和服務水準目標 (SLO) 來監控軟體效能。他們在生產環境中部署應用程式之後,會觀察並監控效能指標。
逐步變革實作
SRE 實務鼓勵發佈頻繁但小型的變更,以維持系統可靠性。SRE 自動化工具使用一致但可重複的程序來執行下列操作:
- 降低因變更而造成的風險
- 提供意見回饋迴圈以測量系統效能
- 提高變更實作的速度和效率
自動化以改善可靠性
SRE 使用在交付管道的每個步驟中內嵌可靠性原則的政策和程序。一些自動解決問題的策略包括:
- 根據服務水準目標開發品質門,以及盡早發現問題
- 使用服務水準指標來自動化建置測試
- 在軟體開發一開始就做出確保系統彈性的架構決策
網站可靠性工程中的可觀察性是什麼?
可觀察性是一個程序,在軟體針對最終使用者上線時,協助軟體團隊為不確定性做好準備。網站可靠性工程 (SRE) 團隊使用工具來偵測軟體中的異常行為,更重要的是收集資訊,以協助開發人員了解導致問題的原因。可觀察性涉及使用 SRE 工具收集以下資訊。
指標
指標是反映應用程式效能或系統運作狀態的可量化值。SRE 團隊會使用指標來判斷軟體是否取用過多資源或行為異常。
日誌
SRE 軟體會產生詳細且有時間戳記的資訊,稱為日誌,以回應特定事件。軟體工程師會使用日誌來了解導致特定問題的事件鏈結。
追蹤
追蹤是在分散式系統中對特定功能的程式碼路徑的觀察。例如,訂單購物車結帳可能涉及以下內容:
- 使用資料庫計算價格
- 使用付款閘道進行驗證
- 將訂單提交給供應商
追蹤包含 ID、名稱和時間。它們可協助軟體開發人員偵測延遲問題,並改善軟體效能。
什麼是網站可靠性工程監控?
監控是在應用程式中觀察預先定義指標的過程。開發人員決定哪些參數對於判斷應用程式的運作狀態至關重要,並在監控工具中進行設定。網站可靠性工程 (SRE) 團隊會收集反映系統效能的重要資訊,並以圖表形式呈現。
在 SRE 中,軟體團隊會監控這些指標,以深入了解系統可靠性。
延遲
延遲描述應用程式回應請求時的延遲。例如,在網站上提交表單需要 3 秒鐘,才能將使用者引導至確認網頁。
流量
流量測量同時存取服務的使用者數目。它可協助軟體團隊相應地為運算資源編入預算,以保持讓所有使用者滿意的服務水準。
錯誤
錯誤是應用程式無法執行或根據預期交付的情況。例如,當網頁載入失敗或交易無法完成時,SRE 團隊會使用軟體工具自動追蹤,並回應應用程式中的錯誤。
飽和度
飽和度表示應用程式的即時容量。高飽和度通常會導致效能降低。網站可靠性工程師會監控飽和度水準,並確保其低於特定閾值。
網站可靠性工程的關鍵指標是什麼?
網站可靠性工程 (SRE) 團隊使用下列指標,來衡量服務交付和可靠性的品質。
服務水準目標
服務水準目標 (SLO) 是具體且可量化的目標,讓您確信軟體能夠以合理的成本達成其他指標,例如:
- 正常執行時間或系統運作時間
- 系統輸送量
- 系統輸出
- 下載速率或應用程式載入的速度
SLO 承諾透過軟體交付給客戶。例如,您為公司的食品配送應用程式設定 99.95% 的正常執行時間 SLO。
服務水準指標
服務水準指標 (SLI) 是 SLO 定義指標的實際測量結果。在實際情況中,您可能會得到與 SLO 相符或不同的值。例如,您的應用程式已啟動並執行 99.92% 的時間,低於承諾的 SLO。
服務水準協議
服務水準協議 (SLA) 是法律文件,說明不符合一個或多個 SLO 時會發生什麼情況。例如,SLA 指出,技術團隊將在收到報告後 24 小時內解決客戶的問題。如果您的團隊無法在指定期間內解決問題,您可能有義務退款給客戶。
錯誤預算
錯誤預算是指不符合 SLO 的規定。例如,SLO 中的正常執行時間為 99.95%,意味著允許的停機時間為 0.05%。如果軟體停機時間超出錯誤預算,軟體團隊會投入所有資源和注意力來穩定應用程式。
網站可靠性工程如何運作?
網站可靠性工程 (SRE) 涉及網站可靠性工程師在軟體團隊中的參與。SRE 團隊會設定 SRE 的關鍵指標,並建立由系統的風險承受程度決定的錯誤預算。如果錯誤數目較少,則開發團隊可發佈新功能。但是,如果錯誤超出允許的錯誤預算,則團隊會保留新的變更並解決現有問題。
例如,網站可靠性工程師使用服務來監控效能指標,並偵測異常的應用程式行為。如果應用程式發生問題,SRE 團隊會提交報告給軟體工程團隊。開發人員修復報告的案例,並發佈更新的應用程式。
DevOps
DevOps 是一種軟體文化,打破了開發和營運團隊的傳統邊界。有了 DevOps,開發人員和操作工程師不再是在孤島中工作。取而代之的是,他們使用軟體工具來改善協作,並跟上軟體更新發佈的快速步伐。
SRE 與 DevOps 相較
SRE 是 DevOps 的實際實作。在日益縮短的開發時間表中,DevOps 提供維持軟體品質必要事項的哲學基礎。網站可靠性工程提供如何實現 DevOps 成功的答案。SRE 可確保 DevOps 團隊在速度和穩定性之間取得適當的平衡。
網站可靠性工程師的職責是什麼?
網站可靠性工程師是 IT 專家,使用自動化工具來監控並觀察生產環境中的軟體可靠性。他們在發現軟體問題和編寫程式碼,進而解決這些問題方面也擁有豐富的經驗。他們通常是前系統管理員或操作工程師,具有良好的編碼技能。以下是一些網站可靠性責任。
操作
網站可靠性工程師在營運工作方面花費高達一半的時間。這包括多項任務,如下所示:
- 緊急事件回應
- 變更管理
- IT 基礎設施管理
工程師使用 SRE 工具自動化多個營運任務並提高團隊效率。
系統支援
網站可靠性工程師與開發團隊密切合作,以創造新功能並穩定生產系統。他們為整個軟體團隊建立 SRE 程序,並隨時支援升級問題。更重要的是,網站可靠性團隊為客戶支援提供文件化程序,以協助他們高效地處理投訴。
程序改善
網站可靠性工程師透過進行事故後檢閱,來改善軟體開發生命週期。SRE 團隊將所有軟體問題和相應的解決方案記錄在共用知識庫中。這有助於軟體團隊在未來高效地應對類似問題。
常見的網站可靠性工程工具有哪些?
網站可靠性工程 (SRE) 團隊使用不同類型的工具,來促進監控、觀察和事件回應。
容器協調器
軟體開發人員使用容器協調器,在各種平台上執行容器化應用程式。容器化應用程式會將其程式碼檔案和相關資源儲存放在稱為容器的單一套件中。例如,軟體工程師使用 Amazon Elastic Kubernetes Service (Amazon EKS) 來執行和擴展雲端應用程式。
隨時待命管理工具
隨時待命管理工具是一種可讓 SRE 團隊規劃、安排和管理處理報告軟體問題的支援人員的軟體。SRE 團隊使用該軟體來確保支援團隊始終處於待命狀態,能夠及時接收有關軟體問題的提醒。
事件回應工具
事件回應工具可確保偵測到的軟體問題提供明確的升級途徑。SRE 團隊使用事件回應工具,對報告案例的嚴重程度進行分類並迅速處理。這些工具還可提供事後分析報告,以防止類似的問題再次發生。
組態管理工具
組態管理工具是自動執行軟體工作流程的軟體。SRE 團隊使用這些工具移除重複的任務並提高生產力。例如,網站可靠性工程師使用 AWS OpsWorks 在 AWS 環境中自動設定和管理伺服器。
AWS 如何協助進行網站可靠性工程?
AWS Management and Governance 服務為軟體團隊提供了必要的工具,用於建置、擴展和部署分散式應用程式,而不會影響系統可靠性。網站可靠性工程 (SRE) 團隊使用各種 AWS Management and Governance 服務,來監控和治理 AWS 和內部部署運算資源。
- AWS Service Catalog 可讓 SRE 團隊編目、管理和快速部署 IT 服務。
- AWS Systems Manager 為網站可靠性工程師提供集中式管理中心,以取得軟體運算資源的操作洞察。
- AWS Proton 是一種自動化管理工具,用於部署容器化和無伺服器應用程式。
立即建立 AWS 帳戶,開始使用 AWS 上的網站可靠性工程。