我正在尋找以一致和及時的方式將一些Web服務部署到生產環境中的方法。NodeJS生產部署最佳實踐
我目前正在實施一個部署管道,該管道將以特定版本的軟件的手動部署操作結束到由Ansible提供的多個虛擬機。這個想法是使用版本A配置x個實例,同時已經有y個運行版本B的實例。然後映射並輕拂流量。同樣的機制應該允許我使用我已經制作的圖像在一個集合中縮放新的vms。
我已經考慮了以下選項,但如果有件事我俯瞰想知道:
- TGZ
的CI環境會從已經通過單元測試和一個項目建立一個壓縮包集成測試。可選擇的將會被捆綁(取消需要在生產機器上運行npm install並依賴到公共或專用npm存儲庫的網絡連接)。
我的主要問題是,依賴於系統庫的任何依賴關係都會建立在不同的機器上(儘管是相同的圖像)。我不喜歡這個。
- NPM
的CI環境將發佈私人NPM庫和Ansible部署腳本設置之後會檢查出一個特定版本。當您想要部署時,這又會受到對外部服務的依賴。我不喜歡這個。
- GIT中
任何系統依賴模塊成爲全球安裝爲配置的一部分,並且所有其他依賴檢入到存儲庫。這使我能夠靈活地進行差異部署,只需推動增量,應用程序守護進程幾乎可以立即由進程管理器自動重新啓動。依賴關係然後被絕對鎖定。
這將意味着除非進行縮放,否則不需要旋轉新的虛擬機。部署可以直接推送到所有活動實例。