新聞中心
在本文中,深入了解基礎(chǔ)架構(gòu)即代碼 (IaC) 的工作原理、其優(yōu)勢(shì)和常見(jiàn)挑戰(zhàn)。

成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站介紹好的網(wǎng)站是理念、設(shè)計(jì)和技術(shù)的結(jié)合。成都創(chuàng)新互聯(lián)擁有的網(wǎng)站設(shè)計(jì)理念、多方位的設(shè)計(jì)風(fēng)格、經(jīng)驗(yàn)豐富的設(shè)計(jì)團(tuán)隊(duì)。提供PC端+手機(jī)端網(wǎng)站建設(shè),用營(yíng)銷思維進(jìn)行網(wǎng)站設(shè)計(jì)、采用先進(jìn)技術(shù)開(kāi)源代碼、注重用戶體驗(yàn)與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺(jué)化效果。
基礎(chǔ)架構(gòu)即代碼 (IaC) 是使用代碼和軟件開(kāi)發(fā)技術(shù)配置和管理基礎(chǔ)架構(gòu)的實(shí)踐。IaC 背后的主要思想是消除每次部署時(shí)對(duì)服務(wù)器、負(fù)載均衡器或數(shù)據(jù)庫(kù)等資源的手動(dòng)基礎(chǔ)設(shè)施配置和配置的需要。由于基礎(chǔ)架構(gòu)現(xiàn)在是整個(gè)軟件開(kāi)發(fā)過(guò)程中不可或缺的一部分,并且與應(yīng)用程序交付的耦合度越來(lái)越高,因此讓交付基礎(chǔ)架構(gòu)更改變得更加容易非常重要。
使用代碼定義和管理基礎(chǔ)架構(gòu)及其配置使您能夠采用版本控制、測(cè)試和自動(dòng)部署等技術(shù)。這使得更容易防止各種應(yīng)用程序問(wèn)題,從性能瓶頸到功能故障。
本文將解釋 IaC 的工作原理,重點(diǎn)介紹這兩種方法,以及在 DevOps 環(huán)境中以代碼形式交付基礎(chǔ)設(shè)施的優(yōu)勢(shì)和挑戰(zhàn)。
IaC 是如何工作的?
從歷史上看,基礎(chǔ)架構(gòu)管理主要是由專門(mén)的系統(tǒng)管理員完成的手動(dòng)過(guò)程。您需要手動(dòng)創(chuàng)建虛擬機(jī) (VM)、管理其軟件更新并配置其設(shè)置。這變得非常昂貴和耗時(shí),尤其是隨著現(xiàn)代軟件開(kāi)發(fā)的快速發(fā)展。
IaC 演變?yōu)榭蓴U(kuò)展基礎(chǔ)架構(gòu)管理的解決方案。它允許您對(duì)基礎(chǔ)架構(gòu)進(jìn)行編碼,然后能夠創(chuàng)建標(biāo)準(zhǔn)化、可重用和可共享的配置。IaC 還允許您以代碼文件的形式定義基礎(chǔ)設(shè)施配置。例如,圖 1 演示了如何使用 CloudFormation在 AWS 中定義 S3 存儲(chǔ)桶的創(chuàng)建。
Resources: S3Bucket: Type: 'AWS::S3::BUCKET' DeletionPolicy: Retain Properties:BucketName: DOC-EXAMPLE-BUCKET
當(dāng)您將基礎(chǔ)架構(gòu)定義為代碼時(shí),您可以實(shí)施與應(yīng)用程序開(kāi)發(fā)代碼相同的做法,例如版本控制、代碼審查和自動(dòng)化測(cè)試。
圖 1:IaC 工作流程
要實(shí)施 IaC,您可以使用各種工具和技術(shù),例如:
- 配置管理工具,確?;A(chǔ)架構(gòu)處于您之前定義的所需狀態(tài),例如 Ansible、Chef 或 Puppet。
- 供應(yīng)工具(例如,CloudFormation 模板)允許您以 JSON 或 YAML 文件的形式定義云資源,并在云平臺(tái)上供應(yīng)該基礎(chǔ)設(shè)施。
- 容器化工具(例如 Docker、Kubernetes)用于將應(yīng)用程序及其依賴項(xiàng)打包到可以在任何基礎(chǔ)設(shè)施上運(yùn)行的容器中。
IaC 的方法
有兩種不同的基礎(chǔ)架構(gòu)即代碼方法:命令式(過(guò)程式)IaC 和聲明式(功能性)IaC。
使用命令式方法,開(kāi)發(fā)人員指定 IaC 創(chuàng)建配置所需遵循的確切步驟。用戶完全命令自動(dòng)化,這使得這種方法對(duì)于需要完全控制的更具體的用例很方便。
命令式方法的主要優(yōu)點(diǎn)是它允許您自動(dòng)執(zhí)行基礎(chǔ)架構(gòu)配置的幾乎每個(gè)細(xì)節(jié)。這也意味著您需要更高水平的專業(yè)知識(shí)來(lái)實(shí)現(xiàn)這種類型的自動(dòng)化,因?yàn)樗饕峭ㄟ^(guò)直接在系統(tǒng)上執(zhí)行腳本來(lái)完成的。
以下是使用 AWS CLI 創(chuàng)建 S3 存儲(chǔ)桶的命令式方法示例:
aws s3api create-bucket --bucket my-new-bucket --region eu-central-1
my-new-bucket當(dāng)您運(yùn)行此命令時(shí),AWS CLI 將使用該區(qū)域中的名稱創(chuàng)建一個(gè)新的 Amazon S3 存儲(chǔ)桶eucentral-1。
使用聲明性方法,開(kāi)發(fā)人員指定所需的結(jié)果,而無(wú)需提供實(shí)現(xiàn)該狀態(tài)所需的確切步驟。用戶通過(guò) JSON 或 YAML 等聲明性語(yǔ)言描述他們希望基礎(chǔ)架構(gòu)如何查看。此方法有助于標(biāo)準(zhǔn)化、變更管理和云交付??梢愿斓匕l(fā)布功能,并顯著降低人為錯(cuò)誤的風(fēng)險(xiǎn)。
以下是使用 AWS CloudFormation 的聲明性基礎(chǔ)設(shè)施即代碼的簡(jiǎn)單示例:
{“Resources”: {“EC2Instance”: {“Type”: “AWS::EC2::Instance”,“Properties”: {“InstanceType”: “t2.micro”,“ImageId”: “ami-0c94855bac71e”,“KeyName”: “my-key” } }}}該腳本告訴 CloudFormation 創(chuàng)建一個(gè)類型為 EC2 的實(shí)例t2.micro,CloudFormation 將處理所有必需的步驟以使用您定義的特定屬性實(shí)現(xiàn)該狀態(tài)。
圖 2:IaC 方法概述
IaC 的好處和挑戰(zhàn)
基礎(chǔ)架構(gòu)即代碼是 DevOps 中的關(guān)鍵實(shí)踐之一,提供了許多節(jié)省時(shí)間和金錢(qián)以及降低風(fēng)險(xiǎn)的好處。但與您在組織中采用的任何工具、解決方案或?qū)嵺`一樣,重要的是要權(quán)衡實(shí)施 IaC 方法時(shí)可能面臨的挑戰(zhàn)。
表 1:IaC 優(yōu)勢(shì)與挑戰(zhàn)——需要考慮的因素
結(jié)論
借助 IaC,系統(tǒng)可以輕松復(fù)制和重用;過(guò)程是一致的。隨著 DevOps 文化變得越來(lái)越普遍,通過(guò) IaC 保持戰(zhàn)略優(yōu)勢(shì)可能會(huì)成為一個(gè)越來(lái)越重要的目標(biāo)。如果您所在的組織旨在在其現(xiàn)有流程中實(shí)施基礎(chǔ)架構(gòu)即代碼,那么了解您的團(tuán)隊(duì)可能遇到的好處和挑戰(zhàn)會(huì)很有幫助。訣竅是在了解您的業(yè)務(wù)基礎(chǔ)設(shè)施需求和認(rèn)識(shí)到 IaC 提供的改進(jìn)潛力之間找到一個(gè)很好的界限。
為確保正確實(shí)施 IaC,從小事做起很重要。您希望逐漸增加任務(wù)的復(fù)雜性,避免使代碼庫(kù)過(guò)于復(fù)雜,持續(xù)監(jiān)控 IaC 實(shí)施以確定需要改進(jìn)和優(yōu)化的領(lǐng)域,并繼續(xù)自學(xué) IaC 中的不同工具、框架和最佳實(shí)踐。
查看這些額外資源以繼續(xù)了解 IaC:
- 開(kāi)始使用 IaC , DZone Refcard
- IaC 安全:核心 DevOps 實(shí)踐以保護(hù)您的基礎(chǔ)架構(gòu)即代碼,DZone Refcard
- “基礎(chǔ)架構(gòu)即代碼:保護(hù)應(yīng)用程序的 6 個(gè)最佳實(shí)踐”,作者 Jim Armstrong
- Marija Naumovska 的“基礎(chǔ)設(shè)施即代碼的 5 個(gè)最佳實(shí)踐”
- “最佳基礎(chǔ)設(shè)施即代碼工具 (IaC):2023 年的前 11 名”,作者:Florian Pialoux
網(wǎng)站題目:基礎(chǔ)架構(gòu)即代碼初學(xué)者指南
文章出自:http://www.5511xx.com/article/djoecgj.html


咨詢
建站咨詢
