軟件的定義特性是軟性的。舉個例子,將翻蓋手機與智能手機進行對比。如果想改變翻蓋手機按鍵的顏色,由于按鍵是一個實體塑料件,這將需要更改其制造過程。從提出想法到市場實施,需要幾周甚至幾個月的時間。然而,智能手機使用軟件顯示其鍵,并且更改的范圍只是配置文件中的一行代碼。從提出想法到市場實施,這種變化只需要幾個小時甚至幾分鐘的時間。
那么為什么數據中心需要更多的軟件?
而近年來,幾乎每個業務都是一個軟件業務,而使用數據中心的企業可能要求速度超過一切。對他們來說,速度意味著敏捷的軟件方法和快速迭代,找到最好的想法的最有效的方式是盡可能多地發布軟件。這樣做會增加他們比競爭對手獲得更多的機會,從而轉化為更多的公司收入。
這就是為什么DevOps和云計算是重要的原因:給他們渴望的速度。
開發人員的開發工作
如果企業要求開發人員創建一個啟動虛擬機的故障單,需要實際使用數據中心的那些管理良好的硬件,那么必須讓客戶(即開發人員)輕松使用。
開發人員的工作通常圍繞兩周的開發過程,專注于實施一組特定功能或從優先級列表中修復錯誤。要完成的項目列表由專業的人員維護和組織,團隊中的每個開發人員都會遇到問題并完成后再轉到下一個需求。
這個期限完成有更多的細節。它涉及建立一個足夠類似于生產的環境,以便對現有任務可行,然后為新功能編寫自動化測試。當這些測試通過時,開發人員知道工作已經完成。這種方法被稱為“測試驅動開發”。隨著環境的創建和測試的編寫,開發人員獲得了編寫實現新功能的代碼的業務,通常通過將問題分解成更小的部分,對每個并將部件部署到開發環境中。
起初,所有的測試都會失敗。但是,由于更多的這些編碼單個片段的循環已經完成,更多的測試通過;最終他們都會通過,這表明工作已經完成。然后將代碼檢入到源代碼控制系統,如Git,其中自動化將新代碼部署在分段環境中(可能創建一個全新的分段環境),并執行不僅僅是為了新的功能,,還包括所有先前的測試。。如果所有這些測試通過,代碼可能會作為手動版本的批量化一部分。或者,其他自動化將立即將其部署到生產中,這取決于團隊的運作方式。
大量循環實現最小化等待
這種循環過程的目的是將一小段代碼構建成一個完整的特性,并且注入到循環中的任何等待時間都不利于效率和開發人員的士氣。假設為一個新功能負責,并試圖為代碼創建一個開發環境,只需等待一整天,而票務流程為該環境配置虛擬機。這樣會導致生產力下降,從而減慢了周期。
現在想象一下,一個新的環境可以在幾分鐘內用虛擬機創建,也可以用容器在幾秒鐘內創建一個新的環境。這種情況使開發人員能夠更快地找到工作的核心:編寫代碼。通過最小化等待時間,他們的效率和士氣會提高。當他們不能從他們自己的數據中心獲得最少的等待時間時,他們轉而采用公共云替代方案。
DevOps成功看起來像什么
那么,DevOps就是在開發和部署周期中設計開發人員需要的這些環境的自動化,以最大限度地減少他們的等待時間,并允許他們在代碼基礎上獲得更多的迭代。考慮到這些環境一直處于變化狀態,它們是基于云計算消費的天然盟友,但是如果企業按他們對公共云和私有云的偏好向開發者施加壓力,他們很可能會告訴知速度比細節更重要。
考慮到這一點,DevOps的成功實施使得云計算能夠立即啟動支持開發和部署過程中涉及的各種環境所需的資源。而集成安全,監控和數據中心運營人員關心的環境的其他方面至關重要,但不是上以犧牲速度為代價的。如果不能自動化管理虛擬機的重要方面,開發人員將無法選擇外部資源來提供管理需求。
總結
多年來,開發人員和操作人員有時會發生沖突,互相指責。在過去的幾年中,IT運營人員壟斷了開發人員正在開發的軟件的托管選項,但公共云改變了這一切,開創了自動環境創建時代,成為開發人員的新標準。數據中心業務仍然可以通過注入到發展過程自動化的DevOps同樣操作,得到那些與公司收入密切相關的開發團隊的注意,這不僅是可能的,而且也是必須的。