2014-03-19 205 views
7

我有一個用Go編寫的REST API端點,我想知道部署它的最佳方式是什麼。我知道使用Google App Engine可能會使我的生活在部署方面更加輕鬆。但是,假設我想在AWS上部署它。我有什麼選擇/流程/程序。那裏有哪些最佳做法?我是否需要編寫自己的任務來構建SCP並運行它?部署Go應用程序

我有興趣嘗試的一個選項是使用Fabric創建部署任務。

回答

7

剛剛從Mountain West DevOps剛剛從Mountain West DevOps我們談到這個,lot。 (不是爲了專門去,而是在一般情況下。)

爲了簡潔起見,我只能說:它取決於。

對於一個沒有得到高度使用的簡單應用程序,您可能只需手動啓動一個實例,將二進制文件放到它上面,運行它,然後就完成了。 (如果您不是在生產平臺上開發,可以交叉編譯Go二進制文件。)

要獲得稍微更多的自動化,您可以編寫一個Python腳本,將最新的二進制文件上載並運行到EC2實例(使用boto/ssh)。儘管Go程序通常非常安全(尤其是如果你是test),但爲了獲得更高的可靠性,您可以將二進制文件(使其成爲服務)守護進程,以便在出於某種原因崩潰時再次運行它。

爲了獲得更多的自主權,請使用像Jenkins或Travis這樣的CI工具。可以將這些配置爲在將代碼提交到某個分支或應用標記時自動運行部署腳本。

要獲得更強大的自動化功能,您可以將其佔用另一個檔次,並使用諸如PackerChef之類的工具。除非你的需求非常激烈,否則我會從派克開始。 Packer開發人員今天談到了它,它看起來簡單而強大。廚師爲多家企業提供服務,但可能會對您有所幫助。

下面是它的缺點:Go程序的基本思想是您只需將二進制文件複製到生產服務器並運行即可。就這麼簡單。根據您的需求和首選工作流程,您如何實現自動化或可靠地完成工作取決於您。

更多閱讀:http://www.reddit.com/r/golang/comments/1r0q79/pushing_and_building_code_to_production/特別是:https://medium.com/p/528af8ee1a58