基礎架構即代碼的8大優勢,以及如何選擇工具?

雲棲號資訊:【點擊查看更多行業資訊
在這裏您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

越來越多的企業將主要應用或服務託管在雲平臺上,也使得基礎架構即代碼(IaC)變得越來越流行。

image

爲什麼需要基礎架構作爲代碼?

在傳統基礎設施上,當你需要一臺服務器資源,則需要運維團隊去創建一個虛擬機實例或爲應用準備物理服務器,配置中需要使用到腳本或手動安裝的方式。

當有了更多應用需求,則需要更多的虛擬機,用於DNS,郵件服務器,數據庫等等。還有要對操作系統,Web服務器,JVM和其他所有相關架構進行持續的更新。而且隨着時間的發展,它們彼此之間的配置會發生變化,帶來配置的漂移,從而產生了雪花服務器(snowflake servers)。跟蹤配置更改是很大的挑戰。

如果服務器很少且使用週期較長,那麼還可以接受。

隨着AWS等公有云服務的廣泛使用,企業對計算資源的選擇發生了很大變化。許多企業沒有了在硬件和數據中心上的投資,而是開始將其應用程序遷移到雲中。在雲端,可以在數分鐘內部署服務器。

爲了保持最佳性能和可用性,可能必須部署更多實例來滿足需求。然後,不需要時對資源彈性釋放來節省成本。當按小時付費時,可能需要每天按比例彈性的縮放,所以如果每天多次手動進行操作,顯然具有挑戰性。

通過自動化的方式,獲取代碼中部署或終止實例,以及其他基礎結構組件所需的配置步驟,雲可以幫助更快,更可靠地交付價值。

什麼是基礎架構即代碼?

所以,基礎設施即代碼是使用軟件開發原則和實踐的基礎設施自動化。

簡單理解,就是基礎架構像軟件一樣來對待,然後編寫,測試和執行代碼以定義,部署,更新和釋放基礎架構。通過編寫代碼來管理服務器,數據庫,網絡,日誌,應用程序的部署和配置。當要更改基礎結構時,可以更改代碼,對其進行測試,然後將其應用於系統中。

image

基礎架構即代碼與手動配置相比,優勢顯而易見:

1. 自助服務

由於將基礎架構定義爲代碼,因此整個過程和部署可以自動化,並且可以由DevOps團隊中的任何人啓動,有基礎架構需求的用戶可以在需要時獲得所需的資源。

2. 冪等性

冪等性意味着你定義了所需的狀態,並且無論運行腳本多少次,結果都是相同的。它檢查當前狀態和所需狀態,並僅應用所需的更改。而使用bash腳本很難做到這一點。

Ansible和Terraform之類的工具具有內置功能,可以使代碼具有冪等性。

3. 降低成本

與手動配置相比,降低了配置所需的時間和精力。

4. 更快的軟件交付

快速爲開發,測試和生產配置基礎架構,使企業能夠更快地交付軟件。由於部署過程是自動化的,因此它也是一致且可重複的。

5. 自我記錄

基礎結構的狀態由任何人都易於閱讀的代碼來定義。

6. 版本控制

傳統上,更改生產系統被認爲是有風險的,但往往改變不可避免。但添加新功能時,可能需要添加新數據庫,可能需要向集羣添加新服務器或存儲。基礎架構即代碼減少了對基礎架構進行更改的工作量和風險。

可以在版本控制中載入源文件,這意味着你可以跟蹤對基礎結構所做的所有更改,並在出現問題時快速恢復到以前的版本。

7. 驗證與測試

基礎架構即代碼可以連續測試和應用小的更改。一切都是代碼,因此可以使用靜態分析和自動化測試來檢查錯誤。

8. 提升安全性

向基礎架構即代碼的轉變能夠從一開始就嵌入安全性,然後就可以可靠,安全地應用更改。

基礎架構即代碼的工具

儘管有許多工具可用,但選擇一種工具可能並不容易。以下是一些注意事項,可能對大家幫助。基礎架構即代碼的工具大致上可分爲兩類:配置管理工具和配置工具。

配置管理工具是用戶管理在現有服務器上安裝和管理的工具。比如,Chef,Puppet,Ansible和SaltStack都是主要的配置管理工具。可以使用配置管理工具在服務器上安裝和更新軟件。

image

Terraform,CloudFormation,OpenStack Heat是配置工具,即用於創建服務器,數據庫服務器,負載均衡,隊列,子網,防火牆以及基礎架構的所有其他組件。這些工具對提供程序進行API調用以創建所需的基礎結構。

image

1. 可變與不可變基礎架構

可變基礎架構是一種在配置後即可修改的基礎架構。Chef,Ansible,Puppet和SaltStack能夠在現有服務器上安裝或更新軟件。在服務器的生命週期中,這可能會發生很多次。經過多次更新後,每臺服務器可能與其他服務器略有不同,從而導致配置漂移。例如,某些在測試服務器上正常運行的更改,可能無法在生產服務器上運行。

Terraform和CloudFormation之類的工具能夠每次通過計算機鏡像或容器鏡像創建新服務器。如果需要更新服務器,就用用新服務器替換它們。新服務器啓動後,可以終止舊服務器。每個部署都使用不可變的鏡像來創建服務器,因此避免了配置漂移。不過,效率可能有點慢。

2. 命令式與聲明式工具

命令式工具類似於腳本,列出了達到所需狀態所要採取的步驟。聲明性工具可以指定結束狀態,並且工具將制定實現該狀態的步驟。

Chef是主要的命令式工具,而Ansible使用混合方法並支持命令式和聲明式技術。

Terraform,CloudFormation,Puppet,OpenStack Heat和SaltStack都屬於聲明性工具類別,可以在其中聲明所需的最終狀態。

3. 使用多種工具

儘管這些工具中的每一個都可以單獨使用,但是一種通用的方法是將它們一起使用。例如,可以使用Terraform來構建VPC,子網,網關,負載均衡和虛擬機,然後使用Ansible在這些實例上配置和部署服務。

【雲棲號在線課堂】每天都有產品技術專家分享!
課程地址:https://yqh.aliyun.com/live

立即加入社羣,與專家面對面,及時瞭解課程最新動態!
【雲棲號在線課堂 社羣】https://c.tb.cn/F3.Z8gvnK

原文發佈時間:2020-06-18
本文作者:雲智時代
本文來自:“今日頭條/IaC/雲平臺”,瞭解相關信息可以關注“今日頭條/IaC/雲平臺

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章