實作自動化的建議

適用於此 Well-Architected 架構營運卓越檢查清單建議:

OE:09 自動化所有無法受益於人為介入見解和可調整性的工作、高度程式性,而且具有可產生自動化投資報酬率的存留期。 可能的話,請針對自動化與自定義實作選擇現成的軟體。 將所有自動化視為工作負載元件,並將 Well-Architected 架構要素套用至其設計和實作。

本指南說明在工作負載中採用自動化的建議。 您可以將重複且容易發生人為錯誤的工作自動化,以協助小組提高效率並遵守標準。 自動化工作,讓您的工作負載簡化且一致。 自動化可讓您的作業和工程小組更有效率,因為它可讓他們有更多時間處理其他改善。 自動化是工作負載管理所有層面的強大工具。 仔細實作自動化,以提升貴組織的能力。

主要設計策略

當您開發工作負載時,請尋找利用自動化的機會,以減少管理負擔並將人為錯誤降到最低。 評估這些機會,並考慮他們為組織帶來的價值。 若要將自動化投資的價值最大化,請優先處理簡單、程式性且具有長期存留期的工作。 套用自動化不是全無策略。 有一些工作流程可能有需要人為介入的作業,例如決策制定點。 這些工作流程仍可受益於自動化來執行其他工作。

將目標工作自動化

請考慮下列建議,以確保您優先處理最受益於自動化的工作:

  • 目標為輕鬆勝出。 專注於高度程式性且容易遭受人為錯誤的工作。 這些工作高度自動化。 它們已清楚定義,而且可以從增加複雜性的變數中釋出它們,而且會在一般作業中執行。 相反地,請勿優先處理需要撰寫複雜腳本以考慮變數現象的工作,或很少發生的工作。

    高度自動化工作的範例包括重新啟動伺服器、建立帳戶,以及將記錄傳輸至數據存放區。 這些工作可能會依排程發生、回應事件或監視警示,或視需要視需要根據外部因素。

  • 尋找賦予操作員能力並釋出您的 SME 的方式。 貴組織中的專家可能依賴這些專家進行可能不必要的呈報。 例如,當您將新客戶上線至多租用戶解決方案時,資料庫管理員可能會定期收到建立新資料庫的要求。 如果您為技術支援中心小組建置自助入口網站,您可以讓他們安全地自行建立空的資料庫。 或者作為中繼步驟,您可以建立要執行的腳本,將SME的要求和步驟自動化。

  • 專注於投資報酬率。 高價值自動化需要最少的管理額外負荷,並增加可示範的效率程度。 例如,如果您可以藉由自動化資料庫專案,每天將作業小組儲存一小時,您可以提供時間來尋找其他區域以進行改進。

實作自動化的區域

在整個工作負載生命週期中採用自動化,從開發到日常管理。 使用下列範例清單,協助您考慮可受益於自動化之工作負載生命週期的廣泛領域。 您可以自動化:

  • 管線定義、執行和管理:使用持續整合和持續傳遞 (CI/CD) 工具,例如 Azure DevOps 和其他 DevOps 工具,自動定義管線及其執行方式。 這些工具可協助您自動化 CI/CD 工作或其他工作,例如建立報告。

  • 部署:使用 Azure Resource Manager 範本、Bicep、Terraform 和 Ansible 之類的工具,將您的工作負載開發和發行程式自動化。 使用基礎結構作為程式代碼 (IaC) 方法,以相同的自動化平臺部署和更新基礎結構。

  • 測試:許多工具都可用於自動化測試程式。 這些工具可減輕質量保證小組的重大負擔,並確保測試已標準化且可靠。

  • 調整:使用平臺提供的功能和其他工具,例如協調流程工具,在負載增加或減少時自動調整基礎結構。

  • 監視和警示:使用監視解決方案中可用的工具,自動註冊新部署的資源,並設定警示觸發的動作,以協助在發生問題時進行補救。

  • 自我修復:使用監視系統所產生的警示,將動作自動化,並復原故障的元件或作業。 如需詳細資訊,請參閱 自我修復和自我保留的建議

  • 組態管理:使用協調流程和原則工具,以確保所有資源都執行相同的設定,且合規性需求會在您的工作負載中強制執行。

  • 其他系統管理工作:使用腳本將重複的工作自動化,例如更新資料庫記錄或 DNS 記錄。

  • 核准:讓系統根據預先定義的規則自動做出核准決策,以改善具有核准網關的工作流程效率。 此方法鼓勵使用標準化表單和範本,以提升程式的效率。 在高環境中自動核准可能會有風險。 密切專注並測試您的自動化核准,以確保已定義特定準則來授與核准。

  • 新使用者和新員工上線:您可以將許多與新應用程式使用者或新員工相關聯的工作自動化,例如資料庫更新和認證建立。

  • 監視和警示:利用可檢視性平臺所提供的自動化功能。 自動註冊新裝置,以監視和警示異常狀況。

選擇適當的自動化工具

在內部開發自己的自動化需要大量時間,而且可能會對開發小組造成管理負擔。 他們需要維護內部自動化工具,就像他們執行任何其他內部軟體一樣。 建議您隨時使用現成的工具,以符合您的需求。 在商業、開放原始碼 和雲端平臺提供的工具之間,有許多選項可供使用。 您可能會使用各種工具來建置所需的自動化。 依賴內部專業知識來協助引導您在評估工具時做出決策。 您的小組可能更熟悉某些開發語言和架構。 您一開始可以專注於現成的工具,而不需要高學習曲線即可使用這些工具。 反映您打算使用自動化處理的工作,並投資可特別解決這些工作的工具。 請勿購買您通常會偏好的工具,然後考慮之後的工作。

請注意當您建置自動化時,可能會使作業複雜的因素,例如版本鎖定和外掛程式過度使用。 Jenkins 或 Azure DevOps 外掛程式等外掛程式是新增功能的絕佳方式。 您應該在自動化目標受益時採用外掛程式。 但是,當您使用多個外掛程式來執行單一工作時,可能會讓自動化更新和疑難解答變得困難。 在您使用外掛程式時要謹慎。 也請避免具有架構版本相依性的解決方案,因為它們是經過一段時間維護的負擔。 為了協助將這類問題的風險降到最低,請將您選取的自動化工具和外掛程式標準化,並針對所有自動化專案使用原始檔控制。

將自動化整合到您的工作負載

針對您用來建置自動化的任何工具,可讓您的操作員輕鬆存取及管理。 為您的工作負載小組提供清楚且易於使用的介面。 您可以提供 CI/CD 管線、API 和連結庫的存取權。 如同自動化支援的工作負載,您需要全面管理自動化。 以與其他工作負載元件相同的程度保護自動化。 監視自動化,並將其受限於與其他工作負載元件相同的測試通訊協定。

考量事項

  • 有時候,如果沒有任何現成的解決方案符合您的需求,您從自動化獲得的效率會超過開發您自己的解決方案的管理負擔。 在這些情況下,您的開發工作會很謹慎。 將焦點縮小到只開發您需要涵蓋無法使用現成解決方案解決的差距,並將相依性等複雜度降到最低。

  • 需要高度維護的複雜自動化,可能很難讓作業小組管理和疑難解答。 讓自動化工作保持緊密專注在只執行離散作業。 嘗試將其他工具或元件的相依性降到最低。

  • 請仔細考慮使用手動程式。 如果您決定不要將作業自動化,請建立操作員的逐步檢查清單,以徹底記錄手動程式。 此做法可減少人為錯誤的機會,例如操作員錯誤地執行錯誤的進程。 本檔也協助您在未來設計該程式的自動化。

  • 當您使用混合式手動和自動化方法時,必須特別小心。 如果腳本執行大部分的程式,但接著會延遲給人類進行特定部分或決策,請務必為人員提供必要的內容和資訊,以做出明智的決策。

Azure 指導

Azure 提供許多工具來協助您自動化工作負載的工作。

IaC 工具:您可以使用 Terraform、Bicep 和 Azure Resource Manager 進行 IaC 部署。 根據您的需求和小組對工具的熟悉程度,您可以使用其中一或多個工具來部署和管理資源。

Azure FunctionsAzure Functions 是無伺服器工具,您可以使用慣用的開發語言將工作自動化。 函式提供一組完整的事件驅動觸發程式和系結,將函式連線至其他服務。 您不需要撰寫額外的程式代碼。

適用於 Azure 的 GitHub Actions:您可以使用適用於 Azure 的 GitHub Actions,將 CI/CD 程式自動化。 GitHub Actions與 Azure 整合以簡化部署。 您可以建立工作流程來建置及測試存放庫中的每個提取要求,或將合併的提取要求部署至生產環境。

GitHub Actions 不只是 DevOps,而且可讓您在存放庫中發生其他事件時執行工作流程。 例如,您可以執行工作流程,在有人在存放庫中建立新問題時自動新增適當的標籤。

Azure 自動化:P owerShell和 Python 是自動化作業工作的熱門程序設計語言。 使用這些語言來執行作業,例如重新啟動服務、在數據存放區之間傳輸記錄,以及調整基礎結構以符合需求。 您可以在程式代碼中表達這些作業,並視需要執行這些作業。 單獨來說,這些語言不提供集中式管理、版本控制或執行歷程記錄的平臺。 語言也缺少回應監視驅動警示等事件的原生機制。 若要提供這些功能,您需要自動化平臺。

自動化 提供 Azure 裝載的平臺,可在 Azure 和非 Azure 的雲端和內部部署環境中裝載和執行 PowerShell 和 Python 程式代碼。 PowerShell 和 Python 程式代碼會儲存在自動化 Runbook 中。 使用自動化來:

  • 視需要觸發 Runbook、依排程或透過 Webhook。

  • 執行歷程記錄和記錄。

  • 整合秘密存放區。

  • 整合原始檔控制。

Azure 更新管理員更新管理員是統一的服務,可協助管理和控管虛擬機的更新。 您可以監視整個工作負載的 Windows 和 Linux 更新合規性。 您也可以使用更新管理員進行即時更新,或在定義的維護期間內排程更新。 使用更新管理員來:

  • 監督整個機器的合規性。
  • 排程週期性更新
  • 部署重大更新

Azure 部署環境部署環境 可讓開發小組使用專案型範本,快速建立一致的應用程式基礎結構。 這些範本會將設定時間降到最低,並將安全性、合規性和成本效益最大化。 部署環境是預先定義訂用帳戶中部署的 Azure 資源集合。 開發基礎結構管理員可以強制執行企業安全策略,並提供一組預先定義的 IaC 範本。

開發基礎結構系統管理員會將部署環境定義為目錄專案。 目錄項目裝載於 GitHub 或 Azure DevOps 存放庫中,稱為 目錄。 目錄專案是由 IaC 範本和 manifest.yaml 檔案所組成。

您可以編寫部署環境的建立腳本,並以程序設計方式管理環境。

Azure Logic Apps 和 Microsoft Power Automate:當您建置自定義數位程式自動化 (DPA) 來處理工作負載工作,例如核准流程或建置 ChatOps 整合,請考慮使用 Logic AppsPower Automate。 您可以從內建連接器和範本建構工作流程。 Logic Apps 和 Power Automate 建置在相同的基礎技術上,並非常適合以觸發程式為基礎的工作或以時間為基礎的工作。

自動調整:許多 Azure 技術都有內建的自動調整功能。 您也可以使用 API 將其他服務程式設計為自動調整。 如需詳細資訊,請參閱 設計可靠調整策略的建議

Azure 監視器動作群組:若要在觸發警示時自動執行自我修復作業,請使用 Azure 監視器動作群組。 您可以使用 Runbook、Azure 函式或 Webhook 來定義這些作業。

範例

如需搭配其他 Azure 服務使用自動化的範例,請參閱使用 Azure 事件方格 進行 Ops 自動化。 此範例會使用Logic Apps和事件方格來自動化作業工作。

營運卓越檢查清單

請參閱一組完整的建議。