縮短time-to-makrt對於任何一家企業都相當重要,這直接決定了客戶滿意度、市場競爭力乃至盈利能力。但在部署應用時,大多數企業內的IT團隊都或多或少會遇到Dev和Ops之間的問題,這兩個部門圍繞着同一個應用工做,但工做方式卻大相徑庭。git
不少管理者都在思考如何能讓Dev和Ops可以在沒有任何「誤解」的狀況下共同努力縮短time-to-market,也就是DevOps。github
下面咱們將談一談,Docker和Kubernetes如何幫助DevOps發揮更大效力。微信
在傳統的DevOps方法中,開發人員編寫代碼並將其提交給Git存儲庫,而後檢查它在本地和開發環境中的工做方式。架構
咱們會使用像Jenkins這樣的CI工具啓動代碼的構建過程,該工具也在構建期間運行功能測試。若是測試成功經過,咱們將更改合併到發佈分支中。負載均衡
運維會使用一些工具爲應用程序部署生產準備腳本,並最終將更改投入生產環境(更新版本)。運維
第一個問題是運維和開發者使用不一樣的工具。例如,大多數開發人員不必定知道如何使用腳本工具,而準備發佈的任務落在運維身上,但運維一般又不瞭解應用如何工做。微服務
第二個問題是開發環境一般手動更新而沒有自動化。結果致使開發環境很是不穩定,一個開發人員所作的更改可能會中斷另外一個開發者的更改,而解決這樣的衝突問題一般須要花費不少時間,time-to-market變長也就不足爲奇了。工具
第三個問題是開發環境可能與staging環境、生產環境有很大不一樣。這可能會致使開發人員準備的發行版可能沒法在暫存環境中正常工做,或即便測試在暫存環境中成功經過,生產中也可能會出現一些問題,生產中的回滾過程也並不是易事。測試
第四個問題是編寫腳本很是耗時,並且容易出錯。優化
Docker之於DevOps的主要優勢是開發人員和運維都使用相同的工具——Docker。開發人員在開發階段,在本地計算機上從Dockerfiles建立Docker鏡像並在開發環境中運行。
運維使用相同的Docker鏡像,使用Docker對staging和生產環境進行更新。須要注意的是,在更新到軟件的新版本時,咱們不是要對Docker容器進行patch,換句話說軟件的新版本採用一個新的Docker映像和Docker容器的新副本,而不是對舊的Docker容器進行修補。
基於以上,咱們能夠建立不可變的開發、staging和生產環境。
使用這種方法有幾個好處:首先,對全部更改都有很高的控制權,由於使用不可變的Docker鏡像和容器進行更改,咱們您能夠隨時回滾到之前的版本;與腳本工具相比,開發、staging和生產環境變得更加類似;使用Docker,咱們能夠保證若是某個功能在開發環境中有效,它也能夠在staging和生產中使用,這也就是咱們常說的一致性。
Rainbond(雲幫)是"以應用爲中心」的開源PaaS, 深度整合基於Kubernetes的容器管理、ServiceMesh微服務架構最佳實踐、多類型CI/CD應用構建與交付、多數據中心資源管理等技術, 爲用戶提供雲原生應用全生命週期解決方案,構建應用與基礎設施、應用與應用、基礎設施與基礎設施之間互聯互通的生態體系, 知足支撐業務高速發展所需的敏捷開發、高效運維和精益管理需求。