使用AWS時,通過AWS CodeDeploy將應用程序部署到新創建的實例似乎是一種不錯的方式。這種工作方式如下:使用CodeDeploy和CI工具部署分佈式應用程序的好方法是什麼?
- 設置自動縮放組應用
- 寫上從S3拉CodeDeploy劑自動縮放組中的用戶數據bash腳本,安裝並啓動它
- 設置其部署到自動縮放團的CodeDeploy部署組現在
,當一個應用程序包(例如罐或Debian軟件包)被部署到部署組,它將被自動部署到新在自動縮放組中啓動的實例。
我的問題是:這種部署策略如何適合像特拉維斯CI這樣的CI工具?
具體做法是:
- CodeDeploy如何可以拿起通過像特拉維斯CI使用CI工具建立了一個包?構建作業是否需要將包上傳到S3?
- 如何使用CodeDeploy逐步部署應用程序(例如,一次只能創建一個實例)?
- 此部署策略是否要求關閉並替換每個正在運行的實例,還是部署在現有實例上的應用程序的新版本?如果是前者,機器IP地址在部署期間將會改變,那麼其他服務如何發現新部署的應用程序(即沒有硬編碼IP地址)?
感謝您的詳細解答 - 過去一週我一直在嘗試CodeDeploy,它似乎是一個不錯的工具。我有一個關於部署新版API的問題。假設我們有一個跨5個EC2實例進行負載均衡的API,並且我們從不想處於實例運行不同版本的API的不一致狀態。在這種情況下,我們可能需要部署5個新實例,並在完成後切換ELB。應該如何使用CodeDeploy來做到這一點?你會爲每個版本創建5個新的實例和一個新的部署組嗎? – Josh
你描述的將會起作用。正如一般的最佳實踐所做的那樣,您應該始終假定您有時會以混合模式運行,並且您的部署應該設計爲與以前版本一起工作。這確實會使架構遷移變得更加痛苦(兩次部署而不是三次),但是您會變得更安全。 –