伴隨著最近的「容器革命」,一種新概念變得流行起來:不可變基礎設施。事實上,「不可變基礎設施」這一概念不是剛剛冒出來的,它也不是必須需要容器技術。然而,通過容器,它變得更易於理解,更加實用,並引起了業內廣泛注意。
什麼是不可變基礎設施?
我將其定義為在生產環境中僅通過替換元件而不是修改元件來更改基礎設施。具體地說,這意味著一旦我們部署了乙個元件,我們就不會再修改它了。這並不是說元件沒有任何狀態變化(畢竟絲毫不變也就意味著它不是乙個非常實用的軟體元件),而是說運維人員無須在程式的原始api /設計之外引入任何改變。
這種情況並不罕見,舉例來說,假設我們想要更改某一配置檔案,而該配置檔案又正在被某些應用程式使用,如果是動態基礎設施,我們可能需要使用一些指令碼或配置管理工具來進行這種更改。它會對有問題的伺服器進行網路呼叫,然後執行一些**來修改檔案。它還可能了解並修改該檔案的依賴關係(比如需要重啟的程式)。隨著時間的推移,這些關係可能會變得越來越複雜,這就是為什麼許多cm工具都有乙個資源依賴模型來幫助管理它們。
動態基礎設施vs不可變基礎設施
動態基礎設施和不可變基礎設施之間的權衡其實非常簡單。使用網路和磁碟io等資源,動態基礎架構效率更高。在這種效率下,傳統上它的速度要比不可變快,因為它不需要像許多版本的元件那樣需要推送那麼多的位元或儲存。回到我們更改檔案的例子。傳統上,比起更換整個伺服器,更換單個檔案無疑更快。
另一方面,不可變的基礎設施為結果提供了更強有力的保障。不可變的元件可以在部署之前預先構建,生成一次,然後重複使用,這與動態基礎架構不同,後者的邏輯需要在每個例項中進行評估。這就可能造成意料之外的結果,因為您的某些環境可能處於您期望的不同狀態,導致部署出現錯誤。您可能只是在配置管理**中犯了某個錯誤,但您又無法在本地複製生產環境的狀況,因此可能很難測試該結果並發現錯誤所在。畢竟,這些配置管理語言本身很複雜。
「結果是,人們試圖通過消除應用程式源**中硬編碼的引數來避免這種神秘的『配置』。」它不會降低操作複雜性或使配置更容易除錯或更改;它只是將計算從真正的程式語言轉移到特定於領域的程式語言,而這個領域通常具有較弱的開發工具(例如偵錯程式、單元測試框架等)。
容器時代的變局
效率的權衡一直是計算機工程的核心。然而,隨著時間的推移,這些決策的經濟學(包括技術和財務)都在改變。
在程式設計的早期,開發人員被教導使用簡短的變數名,以犧牲可讀性為代價來節省幾位元組的寶貴記憶體。為了解決早期硬碟驅動器的空間限制,開發了動態鏈結庫,以便程式可以共享公共的c庫,而不是各自需要自己的副本。
而在過去的十年裡,由於計算機系統的強大功能的改變,這兩種情況都發生了變化。現在,開發者的時間比我們通過縮短變數節省的成本要昂貴得多。像golang和rust這樣的新語言甚至帶來了靜態編譯的二進位制檔案,因為如果發生錯誤的dll,將無法處理平台相容性問題。
基礎設施管理正處於類似的十字路口。公有雲和虛擬化不僅使得伺服器(虛擬機器)的速度快了幾個數量級,而且像docker這樣的工具已經建立了易於使用的工具,來處理預先構建的伺服器執行時,來通過層快取和壓縮來實現高效的資源使用。這些功能使得不可變的基礎設施變得實用,因為它們是如此的輕量級和無摩擦。
kuberentes在docker不久之後也涉入了這一領域,接過這一火炬並繼續朝著目標,建立了乙個「雲原生」原語的api,它假定並鼓勵了一種不可改變的哲學。例如,replicaset假設在我們的應用程式生命週期的任何時候,我們都可以(並且可能需要)重新部署我們的應用程式。為了平衡這一點,pod disruption budgets(pod應急預算)將指導kubernetes應用程式如何重新部署。
以上種種進步的融合使我們進入了不可改變的基礎設施時代。而且隨著更多的公司參與進來,這個數字還會增加。今天的工具使我們比以往更容易接受這些模式。那麼,你還在等什麼?
關於rancher labs
物聯網時代的智慧型基礎設施
在當今時代,實施利用物聯網和聯網技術的智慧型城市有助於促進經濟發展,改善基礎設施和環境,加強交通系統,並優化公共資產管理成本。智慧型城市的互聯技術和物聯網解決方案在城市轉型中發揮著重要作用。利用物聯網和聯網技術實現智慧型城市有助於提高城市服務的質量 效能 互動性,並優化降低成本的資源。智慧型城市基礎...
it基礎設施原理
it基礎設施原理 it ct ict融合 iaas 基礎設施即服務 paas 平台即服務 saas 軟體即服務。cpu 看核心數,執行緒數。i7 4核,8執行緒 伺服器型別 塔式,機架式,刀片式。linux結構 硬體,核心,shell,應用程式。硬碟分割槽只支援4個主分割槽或者是3個主分割槽加乙個擴...
前端基礎設施搭建
為了方便前端小白能夠從零基礎的適應專案,跟著我一步一步來搭建專案,更快的入門,不會因為某個點卡住。也方便後期部落格前端專案,如果環境出現問題,或者需要注意的地方也會同步更新。安裝後,在cmd中輸入node vnpm v出現版本號說明配置成功 大約2分鐘 vue cli是vue腳手架工具,方便打包,部...