每個云計算架構師都應該實現自動化的五種操作
如果有一個可以定義云計算的特征,或者一個將云計算與傳統數據中心區別開來的特征,那就是自動化。
云計算為企業的現代應用程序開發過程提供了許多好處。最重要的好處之一是能夠將傳統上需要人工處理的關鍵操作實現自動化。
自動化可能是使用云計算的唯一最顯著的優勢。云計算架構師通過在可行的地方利用自動化,在他們的角色中茁壯成長。
對云計算架構師的工作至關重要的一些常見的云計算自動化技術是什么?在設計、構建和部署云托管應用程序時,每個云架構師都應該努力實現以下自動化的5種操作。
(1)擴展
自動擴展是使用云計算的最基本和最必要的措施。無論人們談論的是自動擴展服務器資源,還是內置在原生云服務(如Amazon S3和DynamoDB)中的彈性擴展,擴展都是云計算的重要組成部分。構建可擴展的基礎設施是人們首先遷移到云計算的核心原因之一。
但是這種自動化的可擴展性需要快速而輕松地啟動新的服務器實例,這將引向下一個自動化。
(2)服務器配置
在云計算出現之前,在數據中心配置一臺新服務器可能需要幾天或幾周的時間。云計算自動化可以在幾分鐘內提供功能齊全、可操作的服務器實例,安裝并運行所有所需的軟件和服務。自動化服務器配置不僅是自動擴展的關鍵,也是自修復基礎設施(另一種云計算自動化形式)的關鍵。終止一個失敗的或受到損害的服務器實例,并讓自動化用一個新的服務器實例替換它,將改變問題解決在云中發生的方式。這種能力對于改進許多類問題和錯誤的平均解決時間(MTTR)非常關鍵。
無論是在像Amazon EC2這樣的計算服務中啟動新的虛擬機實例,還是在像谷歌Kubernetes Engine這樣的Kubernetes環境中啟動新的容器實例,自動化服務器配置的工作原理都是一樣的。在任何一種情況下,在啟動、擴展和修復服務器實例時,自動化都可以提高速度和可靠性,這是大多數支持云計算的應用程序的基礎。
自動化服務器配置的另一個好處是提高了可用性。自動化配置意味著少量的大型服務器可以很容易地替換為大量的小型服務器。這樣的模型可以極大地提高應用程序的可用性,減少故障的影響。
但是,只有當操作服務器所需的其他基礎設施也能夠快速、輕松地設置時,自動化服務器配置才能發揮作用。
(3)基礎設施創建
自動配置服務器本身并不足以啟動和運行云計算應用程序并為用戶提供服務。企業還必須提供負載平衡器、防火墻、網段、數據庫和應用程序所依賴的任何其他服務,如隊列和緩存。在應用程序完全發揮功能之前,必須設置、配置所有支持基礎設施并將其連接到應用程序。
如果人工完成,所有這些配置都會非常耗時。如果部署在內部部署數據中心中,可能需要數天或更長時間來設置所有必要的組件。然而,在云計算應用中,一種稱為基礎設施即代碼(IaC)的自動化技術允許使用對API的調用來提供應用程序基礎設施。
IaC允許用戶指定在源代碼中如何設置基礎設施,這些源代碼通常是JSON或YAML文件,可以使用傳統的軟件版本控制系統(如Git)進行管理。然后,將經過編碼的基礎設施配置傳遞給一個工具,該工具將自動提供、配置并將基礎結構組件連接到一個工作網絡中。
有許多工具可以執行此級別的云基礎設施自動化。
作為代碼的基礎設施為基礎設施供應過程提供了獨特的好處,包括更改控制和批準、更改跟蹤和基礎設施代碼重用。作為代碼的基礎設施只能在云平臺或類似云平臺的數據中心中使用,在這些數據中心中,基礎設施API允許自動創建基礎設施。
云架構師應該利用IaC工具為基礎設施供應創建可靠、安全且可重復的云模式。其好處怎么說都不為過。
(4)代碼部署
自動化代碼部署管道并不是云計算所獨有的。但是,考慮到大量使用其他類型的自動化,自動化代碼部署是支持云的應用程序的自然擴展,并且它們深受云計算架構師的依賴。
自動化代碼部署最流行的方法之一是持續集成(CI)/持續交付(CD)管道。這是一種模型,它允許基于檢入軟件版本控制系統(例如Git)的代碼,將代碼部署自動應用到生產應用程序。根據應用程序和企業的策略,自動化部署可能被安排(例如每天或每小時),或者在對代碼庫進行更改并可用于部署時觸發。
有許多工具可用于支持自動代碼部署。這些工具包括Jenkins、Bamboo、GitLab、CircleCI和AWS Code Deploy。每一種操作方式都不同,云計算架構師必須選擇正確的自動化策略來滿足開發組織和業務的需求。然而,幾乎所有復雜的云計算架構應用程序都使用某種形式的自動代碼部署。
(5)云原生服務
作為自動化的一種常常被忽視的是內置在許多云服務中的自動動態擴展。云排隊服務(如Amazon Simple QueueService)、云數據存儲(如Amazon S3)和云數據庫(如Amazon DynamoDB)嚴重依賴自動化來管理利用它們的動態應用程序的擴展需求。
云計算架構師通常更喜歡使用S3這樣的數據存儲,而不是從計算實例上的本地驅動器存儲(例如)創建自己的數據存儲,因為它簡單、安全、可靠、易于集成,而且功能自動化。公共云提供的許多其他服務也是如此。通過使用它們,可以利用發生在后臺的強大自動化。
云計算意味著自動化
自動化是云計算的定義特征之一,這是云計算與傳統數據中心的區別之一。當然,用戶可以在不利用自動化的情況下在云中運行其應用程序,許多人都是這樣做的,但他們錯過了這一點。因為自動化是實現更大的一致性、可靠性、安全性、可擴展性和對業務需求的響應性的途徑。
提升并將內部部署應用程序“按原樣”遷移到云中是一種相對簡單和直接的遷移,通常不需要訓練有素的云計算架構師來實現。但是這樣的應用程序錯過了在云上運行的大部分優勢。構建真正支持云的應用程序確實需要云計算架構師,但它將利用云提供的一切。實際上,任何云架構的應用程序都將大量使用自動化。
優秀的云計算架構師將啟用、擴展、支持并鼓勵在所有基于云的應用程序中使用自動化。簡單地說,優秀的云計算架構師將盡可能地實現自動化。他們受到云中可用的自動化能力的驅動,他們喜歡以獨特而有趣的方式使用這些自動化。它是最成功的應用程序部署的組成部分。