Delivery Pipeline

delivery pipeline

圖片描述

下面這個是netflix的部署流程:
圖片描述html

環境劃分

dev/integration/test

  • dev
    開發環境,服務不穩定,可能須要頻繁重啓之類的,通常每一個開發者本地搭建開發環境。nginx

  • integration
    通常本地開發完,部署到integration環境,供其餘合做的小夥伴聯調集成,可能也須要服務重啓之類的。docker

  • test
    穩定版的integration環境,提供給測試環境其餘服務用的,通常比較少重啓。數據庫

小團隊或項目,不必區分這麼多,排除開發者本地dev環境外,名義上的線下環境就一個,就是測試環境(integration/test).api

staging(pre-production)

準生產環境,通常用於新功能的預上線,進行dogfood測試,沒問題就能夠部署生產環境。服務器

staging環境越接近生產環境越好,除了服務器配置外,其餘的最好跟生產的同樣,好比鏈接的其餘外部服務,鏈接的數據庫等等。
另外,對於一些跟技術實現相關的,也須要注意一下,好比有狀態的服務,若是staging是單實例的,可能無法測出問題來,須要弄成分佈式的才能暴露問題,好比cas server回調client設置session,該session是本地的話,多實例的clint就會出現session不共享問題。session

若是全部的新功能都是向下兼容的,那麼能夠用feature toggle,相似灰度部署同樣,那麼能夠弱化staging環境,甚至能夠不用staging環境。不過這個是理想的狀況,軟件開發裏頭的一個小改動,可能就影響到舊有功能了,沒法隔離那麼完全。分佈式

關於staging環境,能夠做爲一個nginx上的upstream的一個backup,這樣能夠不浪費資源。不過有了docker以後,staging環境能夠按需啓用,新功能上以前,才部署,發佈完能夠撤掉staging環境,這樣就不浪費資源了。測試

production

生產環境,要可以作到不停機發布,或者叫作不間斷升級。spa

doc

相關文章
相關標籤/搜索