《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動態(tài) > 不關(guān)注基礎(chǔ)設(shè)施即代碼(IaC)就Out了!

不關(guān)注基礎(chǔ)設(shè)施即代碼(IaC)就Out了!

2021-06-18
來源:嘶吼專業(yè)版
關(guān)鍵詞: 基礎(chǔ)設(shè)施 云計算

  過去,管理IT基礎(chǔ)設(shè)施是一項艱巨的任務(wù)。系統(tǒng)管理員必須手動管理和配置應(yīng)用程序運行所需的所有硬件和軟件。

  然而,近年來,情況發(fā)生了巨大變化。云計算等趨勢徹底改變并改進(jìn)了組織設(shè)計、開發(fā)和維護(hù)其IT基礎(chǔ)設(shè)施的方式。

  這一趨勢的關(guān)鍵組成部分之一被稱為“基礎(chǔ)設(shè)施即代碼”(infrastructure as code,簡稱IaC),也就是我們今天要討論的內(nèi)容。

  根據(jù)Palo Alto Networks Prisma cloud高級副總裁Varun Badhwar的說法,基礎(chǔ)設(shè)施即代碼正在成為云安全的三大支柱之一,將DevOps和安全性結(jié)合在一起,共同推動DevSecOps市場。

基礎(chǔ)設(shè)施即代碼(IaC)定義

微信圖片_20210618185658.jpg

  維基百科對基礎(chǔ)設(shè)施即代碼的定義為,

  基礎(chǔ)設(shè)施即代碼是通過機器可讀的定義文件,而不是物理硬件配置或交互式配置工具來管理和配置計算數(shù)據(jù)中心的過程。

  簡單來說,基礎(chǔ)設(shè)施即代碼意味著使用配置文件管理您的IT基礎(chǔ)設(shè)施。

  接下來,你可能會問“我們?yōu)槭裁匆@樣做?”這就要看基礎(chǔ)設(shè)施即代碼能夠解決哪些問題了?

  管理IT基礎(chǔ)設(shè)施的痛點

  長期以來,管理IT基礎(chǔ)設(shè)施都是一個手動過程。人們會將服務(wù)器實際位置就位并對其進(jìn)行配置。只有在機器被配置為操作系統(tǒng)和應(yīng)用程序所需的正確設(shè)置后,這些人才會部署應(yīng)用程序。不出所料,這種手動過程通常會導(dǎo)致很多問題。

  第一個大問題就是成本。從網(wǎng)絡(luò)工程師到硬件維護(hù)技術(shù)人員,您必須聘請許多專業(yè)人員在流程的每一步執(zhí)行必要的任務(wù)。顯然,所有這些人都需要支付報酬,且需要得到管理,這又會導(dǎo)致更多的管理成本,同時增加組織內(nèi)部溝通的復(fù)雜性。結(jié)果是,錢花了也未能構(gòu)建和維護(hù)好自己的數(shù)據(jù)中心,白白增加了幾個數(shù)量級的成本。

  另一個大問題就是可擴展性和可用性。也可以將這些都?xì)w結(jié)為“速度”問題。由于手動配置太慢,應(yīng)用程序經(jīng)常會遇到訪問高峰,而系統(tǒng)管理員會拼命嘗試設(shè)置服務(wù)器來管理負(fù)載。這必然會影響可用性。如果組織沒有備份服務(wù)器甚至數(shù)據(jù)中心,那么應(yīng)用程序可能會長時間不可用。

  第三個主要問題就是監(jiān)控和性能可見性。既然已經(jīng)擁有了所有基礎(chǔ)設(shè)施,那么如何密切關(guān)注它以確保其正在以最佳方式運行呢?當(dāng)遇到問題,又如何準(zhǔn)確定位問題來自基礎(chǔ)設(shè)施的哪個位置呢?是網(wǎng)絡(luò)、服務(wù)器還是應(yīng)用程序?Netreo之類的工具可以讓您全面了解整個IT基礎(chǔ)設(shè)施的性能。借助Netreo的自動設(shè)備發(fā)現(xiàn)和配置,您可以確保自己的環(huán)境中沒有任何盲點,而且平臺的拓?fù)溆成洹⑹录P(guān)聯(lián)和自動根本原因分析使您能夠準(zhǔn)確查明問題發(fā)生的位置。

  最后一個問題是不一致性。如果多個人負(fù)責(zé)手動部署配置,不一致將成為不可避免的問題。

  云計算:解藥?

  云計算幫助我們解決了上述的部分問題,它使你無需構(gòu)建和維護(hù)數(shù)據(jù)中心以及與之相關(guān)的高成本。

  不過,云計算遠(yuǎn)非靈丹妙藥。雖然它允許您快速設(shè)置您的基礎(chǔ)設(shè)施需求——從而解決高可用性和可擴展性等嚴(yán)重問題——但它對解決不一致問題沒有任何幫助。當(dāng)不止一個人執(zhí)行配置時,差異必然存在。

  而基礎(chǔ)設(shè)施即代碼正好能夠彌補問題的缺失部分。

  讓我們回顧一下之前介紹過的基礎(chǔ)設(shè)施即代碼定義:基礎(chǔ)設(shè)施即代碼意味著使用配置文件管理您的IT基礎(chǔ)設(shè)施。

  該定義的關(guān)鍵要點是:在基礎(chǔ)設(shè)施即代碼之前,IT人員必須手動更改配置以管理其基礎(chǔ)設(shè)施。使用基礎(chǔ)設(shè)施即代碼,您的基礎(chǔ)設(shè)施配置會采用代碼文件的形式。由于它只是文本,因此您可以輕松編輯、復(fù)制和分發(fā)它。您可以(而且應(yīng)該)將它置于源代碼控制之下,就像任何其他源代碼文件一樣。

  基礎(chǔ)設(shè)施即代碼的好處

  剛剛說到云計算只能解決其中一些問題,但不是全部。而基礎(chǔ)設(shè)施即代碼正是彌補問題最后缺失的那部分。

  接下來,我們將深入探討您的組織通過采用基礎(chǔ)設(shè)施即服務(wù)解決方案可以獲得的一些好處:

  速度

  基礎(chǔ)設(shè)施即代碼提供的一個顯著優(yōu)勢就是速度。它使您能夠通過運行腳本快速設(shè)置完整的基礎(chǔ)設(shè)施。您可以為每個環(huán)境執(zhí)行此操作,從開發(fā)到生產(chǎn)、過渡、QA 等等。基礎(chǔ)設(shè)施即代碼可以使整個軟件開發(fā)生命周期更加高效。

  一致性

  手動過程會導(dǎo)致錯誤,因為人的記憶會出錯,人就會犯錯。此外,溝通也是個問題,而且我們通常并不擅長。正如上所述,無論你多么努力,手動基礎(chǔ)設(shè)施管理都會導(dǎo)致差異。基礎(chǔ)設(shè)施即代碼通過讓配置文件本身成為唯一的事實來源來解決這個問題。這樣,您就可以保證重復(fù)部署相同的配置,而不會出現(xiàn)差異。

  問責(zé)制

  這是一種快速簡便的方法。由于您可以像任何源代碼文件一樣對基礎(chǔ)設(shè)施即代碼配置文件進(jìn)行版本控制,因此您可以完全跟蹤每個配置所經(jīng)歷的更改。一切都不再是關(guān)于“誰做了什么”以及“何時做了什么”的猜謎游戲。

  高效率

  通過使用基礎(chǔ)設(shè)施即代碼,您可以在多個階段部署您的基礎(chǔ)設(shè)施架構(gòu)。這使得整個軟件開發(fā)生命周期更加高效,將團(tuán)隊的生產(chǎn)力提升到新的水平。

  您可以讓程序員使用基礎(chǔ)設(shè)施即代碼創(chuàng)建和啟動沙箱環(huán)境,讓他們能夠安全地進(jìn)行隔離開發(fā)。對于QA專業(yè)人員來說也是如此,他們可以擁有生產(chǎn)環(huán)境的完美副本,并在其中運行測試。最后,到了部署階段,您可以一步將基礎(chǔ)設(shè)施和代碼推送到生產(chǎn)環(huán)境。

  低成本

  毫無疑問,基礎(chǔ)設(shè)施即代碼的主要好處之一就是降低了基礎(chǔ)設(shè)施管理的成本。通過將云計算與基礎(chǔ)設(shè)施即代碼結(jié)合使用,可以顯著降低成本,這是因為您不必花錢購買硬件、雇用人員來操作它,也不必建造或租用物理空間來存儲它。

  更重要的是,基礎(chǔ)設(shè)施即代碼還以另一種更微妙的方式降低了您的成本,這就是我們所說的“機會成本”。

  要知道,把有用的人放置在適當(dāng)?shù)奈恢貌拍茏畲笙薅鹊陌l(fā)揮效用。如果只是讓他們做一些可以自動化完成的任務(wù),無疑是在浪費資源,他們應(yīng)該把精力放在能夠為企業(yè)組織帶來更多價值的任務(wù)上。這就是自動化策略(基礎(chǔ)設(shè)施即代碼就包含其中)派上用場的地方。

  基礎(chǔ)設(shè)施即代碼工作原理

  基礎(chǔ)設(shè)施即代碼工具的工作方式各不相同,但我們通??梢詫⑺鼈兎譃閮煞N主要類型:遵循“命令式資源配置方法”的工具以及遵循“聲明式資源配置方法”的工具。

  其中,命令式資源配置方法指的是資源使用者沒有正式編碼所需的狀態(tài),并且由資源使用者來決定命令序列。

  最值得注意的是,命令式方法是不可重復(fù)的,因此,也就無法自動執(zhí)行,因為資源使用者必須為每個給定的當(dāng)前狀態(tài)確定導(dǎo)致所需狀態(tài)的命令序列。

  而聲明式資源配置方法指的是,資源使用者正式編碼所需的狀態(tài),并且由組件來決定命令序列。

  最值得注意的是,聲明式方法是可重復(fù)的,因此可以實現(xiàn)自動化,因為組件可以確定任何可能導(dǎo)致當(dāng)前狀態(tài)所需狀態(tài)的命令序列。

  最佳實踐

  下面我們?yōu)榇蠹姨峁┮粋€最佳實踐列表,以幫助您充分利用基礎(chǔ)設(shè)施即代碼策略。

  使代碼成為您唯一的事實來源。您應(yīng)該在配置文件中明確編碼所有基礎(chǔ)設(shè)施規(guī)范。您的配置文件應(yīng)該是所有基礎(chǔ)設(shè)施管理問題的唯一真實來源。

  版本控制所有配置文件,將所有配置文件置于源代碼控制之下。

  為您的基礎(chǔ)架構(gòu)規(guī)范使用盡可能少的文檔(或根本不使用)。這一點是第一點的邏輯結(jié)果。由于您的配置文件應(yīng)該是您的唯一真實來源,因此不需要更多文檔。外部文檔很容易與實際配置不同步,但這不會發(fā)生在配置文件中。

  測試和監(jiān)控您的配置?;A(chǔ)設(shè)施即代碼是代碼,和所有代碼一樣,它可以被測試。所以你應(yīng)該測試一下!通過為基礎(chǔ)設(shè)施即代碼使用測試和監(jiān)控工具,您可以在將服務(wù)器部署到生產(chǎn)環(huán)境之前檢查服務(wù)器中的錯誤和不一致情況。

  基礎(chǔ)設(shè)施即代碼自動化配置與編排工具

  目前,市場上存在很多基礎(chǔ)設(shè)施即代碼自動化部署工具,下面為大家重點介紹四款自動化配置與編排工具:

  阿里云資源編排服務(wù)ROS(Resource Orchestration Service)

  這是云原生編排工具,通過編寫 JSON/YAML 格式的模板,在模板中定義所需的ECS實例、數(shù)據(jù)庫實例等云服務(wù)資源以及資源依賴關(guān)系等,然后再根據(jù)模板在 ROS 中創(chuàng)建資源棧,ROS 服務(wù)端將根據(jù)模板自動完成所有資源的創(chuàng)建和配置,實現(xiàn)自動化部署及運維。而資源棧則管理著模板中定義的所有資源,并可通過新模板來更新資源棧,包括資源的新增、更新或刪除等操作。

  AWS CloudFormation

  這也是云原生的編排工具,運維人員也是通過 JSON/YAML 格式的模板定義云服務(wù)資源,通過資源棧管理這些資源。

  HashiCorp Terraform

  這是一個開源的自動化編排工具。以配置文件為驅(qū)動,可以在文件中定義所要管理的組件,即基礎(chǔ)設(shè)施資源,以此生成一個可執(zhí)行的計劃,通過執(zhí)行這個計劃來完成所定義組件的創(chuàng)建,增量式的變更和持續(xù)的管理。如果不可執(zhí)行,會提示報錯。Terraform 不僅可以管理IaaS層的資源,如計算實例、網(wǎng)絡(luò)實例和存儲實例等,也可以管理更上層的服務(wù),如DNS 域名和解析記錄、SaaS 應(yīng)用的功能等。

  Pulumi

  與 Terraform 一樣也是開源項目,但它與 Terraform 的重要區(qū)別在于:可以用熟悉的編程語言來編寫聲明式配置,而不需要額外學(xué)習(xí)云服務(wù)商特定的模板語言來寫配置。

  企業(yè)組織可以根據(jù)自身需求和業(yè)務(wù)部署模式選擇適當(dāng)?shù)墓ぞ?,更好地發(fā)揮基礎(chǔ)設(shè)施即代碼的作用。

  總結(jié)

  基礎(chǔ)設(shè)施即代碼是 DevOps 運動的關(guān)鍵部分。如果您將云計算視為解決由人工IT管理引起的許多問題的第一步,那么可以說基礎(chǔ)設(shè)施即代碼是下一個合乎邏輯的步驟。它充分發(fā)揮了云計算的潛力,并將開發(fā)人員和其他專業(yè)人員從執(zhí)行容易出錯的手動任務(wù)中解放出來。此外,它還可以在軟件開發(fā)生命周期的所有階段降低成本并提高效率。




電子技術(shù)圖片.png

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。