當前位置:
首頁 > 最新 > 當容器與CI/CD相遇,7個建議送給你

當容器與CI/CD相遇,7個建議送給你

微服務如何自動伸縮、完成CI/CD、如何解決高吞吐、高並發以及如何保持微服務場景下的數據一致性?9月23號,北京,和大神一起將《微服務進行到底》!

小數之前給大家分享過很多關於CI/CD的內容,如《關於CI的伺服器與最佳實踐,這裡有一些思考》、《用對這8種工具,CI/CD其實沒那麼難》那麼當Docker和CI/CD一起會發生什麼?請看今天分享的內容~

Docker是CI/CD的早期採用者,通過利用如GIT等源代碼控制機制的正確集成,Jenkins可以在開發者每次提交代碼時啟動構建過程,此過程生成新的Docker鏡像,可以在整個環境中立即生效,因此團隊可以快速構建共享和部署應用。

用途:根據開發需求,自動配置環境及基礎設施,並配備擁有自助服務的自動化工具。

企業所面臨的挑戰:

不可用的環境

缺乏環境配置所需技能

缺乏環境配置所需時間

什麼是CI(持續集成)

CI是一種開發實踐,開發者每天將代碼集成到共享存儲庫中幾次,支持將新功能與現有代碼集成在一起,此集成的代碼還可以確保運行時環境中沒有錯誤,允許檢查它與其他變更的反應。

目前用於CI最流行的工具是「Jenkins」,GIT用於源代碼控制存儲庫,Jenkins可以從GIT存儲庫中提取最新的代碼修訂,並生成可以部署到伺服器上的構建版本。

什麼是持續交付

持續交付是指在給定的時間內將軟體部署到任何環境的能力,包括二進位文件、配置和環境變更。

什麼是持續部署(CD)

持續部署是開發團隊在短周期內發布應用的一種方法,開發人員所做的任何變更都會被部署到生產環境中。

什麼是Docker?

Docker是一個容器化平台,以容器的形式將應用及所有依賴項打包在一起,確保應用能夠在任何環境中無縫地工作。

Docker如何幫助CI/CD

Docker可以幫助開發者構建代碼並在任何環境中進行測試,以便儘早地在開發生命周期中獲取BUG。Docker的優勢在於:幫助簡化流程、節省構建時間、並允許開發者並行地運行測試。

Docker還可以集成源代碼控制管理工具,如GitHub和Jenkins等集成工具,開發者將代碼提交到GitHub,測試使用Jenkins創建影響自動觸發構建的代碼,可以將此影響添加到Docker registry,以處理不同環境類型之間的不一致。

技術解決方案

沒有Docker參與的典型CI:

開發者將代碼提交到存儲庫,這些代碼通常會在持續集成伺服器上觸發構建,構建過程可能會根據所構建的應用而不同,一般情況下,可以進行編譯、運行測試用例、構建應用,然後將應用部署到伺服器中。

通過Docker進行的CI:

在CI過程中安裝Docker的方法是讓CI伺服器在構建應用後再構建Docker鏡像,應用進入鏡像內部,將鏡像推到Docker Hub,在另一台主機上或QA/DEV/生產環境,從Docker Hub提取即將完成的構建,並運行應用的容器,在CI伺服器中,甚至可以將編譯和測試作為鏡像構建的一部分運行。

好處:

消除不一致的環境設置問題

任何運行Docker的機器都可以使用Docker鏡像

節省構建和設置過程中的時間

允許並行測試

DevOps模式,開發可以專註於開發應用,而運維可以專註於部署

改進版本控制,通過改變Docker鏡像來規範環境

本文作者有多年的持續部署(CD)經驗,幫助很多公司實踐及優化CD,以下是一些關於CI/CD的經驗及建議:

No.1 使用工具:

雖然使用工具聽起來很平常,但仍有一些公司沒有使用工具,這對公司或個人沒有益處,推薦使用Circle類似的工具,工作流方面也應該有一定的工具使用規劃。

No.2 做單元測試:

需時刻提醒團隊成員,持續部署只是應用於部署的持續集成,因此需要良好的單元測試覆蓋率,如果還沒有一個堅實的單元測試和持續集成的基礎,那就是準備尚不完善。

No.3 做好監控:

BUG和回滾是不可避免的,通過查看生產中的數據,將系統放在適合的位置,可以知道何時進行了回滾或BUG傳遞,將其綁定到自動化回滾,因此如果有關鍵功能或指標出錯,那麼CD系統會自動回滾到穩定版本。

No.4 團隊信任:

選擇相信團隊成員,容忍開發人員的錯誤,在認為合適的時候進行部署,並互相檢查代碼,將持續部署與分層許可權的區域性結合在一起。

No.5 簡化代碼評審過程:

與上面所說的團隊信任類似,團隊應該檢查代碼變更,選擇最有資格和洞察力的人去檢查開發人員的代碼。

No.6 讓開發人員緊密參與生產操作:

沒有成功地過度到持續部署的公司最常見的問題是開發團隊是獨立的,開發和運維應該在適合的時候互相參與到對方的工作當中,要讓開發團隊深入參與CD基礎設施的建設和規劃。

No.7 儘早測試:

團隊需要不斷地反饋,把測試目標看做是在正確的時間獲得正確的反饋,因此在部署時才能知道什麼是有效或錯誤的,越早發現BUG,就越容易修復,持續部署做的極好的公司都會有全面的單元測試和集成測試覆蓋率。

結論:

持續測試也是一種開發實踐,在一天的測試計劃中,開發需要不斷地將代碼集成到共享存儲庫中,為了讓開發團隊能夠檢測出問題,自動化構建可以用來驗證每個測試,若不遵循連續的方式,那麼集成和修復BUG會消耗更長的時間。

為了提高應用開發過程的敏捷性,在企業中使用Docker簡化和穩定了CI/CD,Docker容器的輕量級特性使其快速運轉,並有助於快速測試,並且可以使用可重複的流程,創建類似環境產品。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 數人云 的精彩文章:

TAG:數人云 |