
圖1 此圖定義基礎設施及代碼如何在版本控制、自動化、API或服務器之間以及與云基礎設施或本地數(shù)據中心接口。
如果你是一個媒體創(chuàng)作單位,你希望充分利用通過內容創(chuàng)作各個階段的潛在機會。其中之一是開發(fā)一組針對特定工作流程要求的可重復的需求,這樣就更容易實現(xiàn)“常規(guī)”模式下操作。
當同時或獨立運行多組進程時,定制或復制這些運行模式的能力是有益的。云服務或內部數(shù)據中心可以為這些機會提供有效的渠道;但是,必須根據基礎設施中的系統(tǒng)變化進行重新配置,這可能會非常耗時、復雜,特別是日常流程和簡單更新也需要專門的資源。
通過機器可讀的定義文件配置和管理數(shù)據中心是所謂基礎設施即代碼(IaC)的前提。IaC不支持直接的物理硬件配置或構建在交互式配置工具上的解決方案,而是使用運算中心的、基于機器語言的“文件”來管理那些計算進程。
在基于云的解決方案集中,IaC使用模板部署資源,也就是文件既人可讀,也機器可讀,并且指示系統(tǒng)實際上自動地自行配置其功能。云服務提供商提供這樣的IaC解決方案集作為“內置選項”——用戶可以使用或忽略它。
基本上,一旦創(chuàng)建了代碼模板,云系統(tǒng)就會接受這些代碼指令并將其派發(fā)到云的資源中,無需用戶進一步直接干預。為了實現(xiàn)目標而更新調出資源或替換任何處理器鏈的要求都被作為后臺功能處理,本質上成為一種“不插手”的操作。圖1描述了從用戶到服務(無論是在云中還是在本地數(shù)據中心)的工作流程基本要素。
IaC好處
IaC對應用的好處包括可見性、穩(wěn)定性和可擴展性。其它好處包括安全性、驗證、可重復性等。
當在模板的每個實例中都使用相同的設置時,就可以實現(xiàn)安全的可重復性。某一配置是穩(wěn)定的并準備運行的驗證,可以確保如果出現(xiàn)故障,可以將基礎設施轉回到已知狀態(tài),而不會導致組件的災難性崩潰。根據規(guī)定的工作流程,操作可以繼續(xù)或暫停。
可見性讓用戶獲得帳戶上使用了哪些資源的清晰參考點。如果某些意外更改(例如錯誤設置或意外刪除資源),IaC部署中使用的穩(wěn)定機制可以結合使用當前或以前的控制管理版本幫助解決該更改問題。
可擴展性同樣重要。建立一個圍繞可重復使用的代碼集庫將產生模板化模型,它可以輕松地分發(fā)給全局多個服務。如果某一地區(qū)需要增加意外的交付作品,那么最近的云端口可以以可能在另一個相隔較遠的站點使用的模板為基礎,快速運轉服務和基礎設施。如果存儲庫可以在另一個區(qū)域投入使用,用戶就不一定需要將數(shù)據傳輸?shù)搅硪粋€站點。
圖2表示模板、腳本和策略保存在一個公共存儲庫中,可以適當?shù)匾平唤o各個全球存在點,即云區(qū)或數(shù)據中心。然后,每次操作都可以被推入(或從存儲庫中拉出)到相關的位置和職能部門。

圖2 代碼庫包含模板、腳本和策略,可以被適當?shù)毓芾恚ò姹究刂乒芾恚6斝枰禄蚋臅r,項目將被分發(fā)到全球存在點(云或數(shù)據中心)。
一切即代碼
一種類似的方法是將解決方案的所有組件作為代碼處理的操作。通過將配置與源代碼一起存儲在存儲庫中并作為虛擬環(huán)境,可以在需要時循環(huán)或重新創(chuàng)建代碼集。在這個模式中甚至系統(tǒng)設計也可作為代碼存儲。
一切即代碼(EaC)模式減輕了為每個功能活動或任務安裝物理硬件和連接的要求。在以云為中心的環(huán)境中,這顯然是不現(xiàn)實的,也是不可能的。因此,以前需要的專門的物理技能和設計師方法被轉換為一個代碼就緒的環(huán)境。
本地云應用程序一旦被移交給物理修改,就改變了整個成本模式,使得啟動“虛擬”基礎設施變得容易,與位置無關。
常見的表述
與IaC類似,EaC模式也有類似的有益表述。可重復性(包括從一個云提供商轉移到另一個云提供商的能力)允許精確地重建能夠進一步利用新特性(比如更快的性能或更低的每周期成本)的環(huán)境。可以大規(guī)模地開發(fā)、驗證經測試的基礎設施代碼(通過計算建模),然后帶著它將快速運行并符合設計要求的期望、信心和保證,直接推廣到制作中。
對服務器配置漂移的恐懼、不確定性和懷疑因素(FUD)幾乎完全消除了。這些新模式幾乎可以自愈到任何水平——包括如果服務器停止運行或需要打補丁以保持可操作性時進行完整的重新部署。由于整個基礎設施是以代碼形式開發(fā)的,所以在檢測到異常時,可以啟動一個沒有交叉依賴性的系統(tǒng)鏡像,保持業(yè)務不中斷。
基礎設施工具
要使云解決方案切實可行,它們需要是動態(tài)的。基礎設施資源屬于這一類。這類似于擁有無限的修補和改組能力,而無需人類主動操縱這些功能。根據他們的功能集,每家云提供商可能都有自己的IaC或EaC“特點”。
這樣的工具集允許云計算客戶指定他們需要的基礎設施資源,而不必真正理解(邏輯上或物理上)它們是如何與一個或另一個資源接口。這些工具進一步讓用戶指配哪些資源是需要的、參數(shù)限制(量和持續(xù)時間)以及應該如何配置這些資源執(zhí)行選定的任務和活動。
在平臺即服務(PaaS)架構中,用戶可以使用特定平臺的用戶界面分配或創(chuàng)建資源集,然后在整個操作過程中管理這些資源。同樣,第三方解決方案提供商將制作圖形用戶界面(GUI)產品來管理云和虛擬基礎設施,并將這些產品銷售給用戶。然而,缺點是,這些產品本質上是“受限于”(特定的)服務,需要在最初的規(guī)范、設計和測試上進行大量的投資,然后才能推廣到服務。
雖然可以說,一旦配置好,PaaS操作是可行的——而且很可能被移植到到其他云提供商——但該模式沒有那么靈活。當云的內部模式中出現(xiàn)系統(tǒng)變化時,需要維護的應用程序被升級。有時這些變化會影響PaaS應用程序,有時PaaS會“自適應”。這一切都與類型、使用和應用程序有關,都是當時為特定服務部署的。
編碼技術演進
通過開放訪問云的虛擬“活動部件”,IaaS和PaaS模式正在發(fā)生變化。以前,基于代碼的開發(fā)僅限于一組代碼級的專家,新的時代正在發(fā)展到集成機器學習和人類可讀的做法,從而變得更加普遍和更富有成效。
云服務的早期采用者認識到對動態(tài)基礎設施平臺的需求,現(xiàn)在正在改變他們的內部應用程序,以實現(xiàn)他們自己的自供應和配置能力。對于那些位于私有(非公有云)數(shù)據中心的系統(tǒng),一旦用戶/操作員了解了流程、模式、做法和可訪問性,他們最終就可以安排自己的服務器結構,構建自己的服務器模板,并提高在不中斷工作的情況下升級運行中的服務器的能力。