我有一个用Go编写的REST API端点,我想知道部署它的最佳方法是什么。我知道使用Google App Engine可能会让我的部署变得更轻松。但是,假设我想在AWS上部署它。我有哪些选项/流程/程序。有哪些最佳实践?我是否需要编写自己的任务来构建SCP并运行它?
我有兴趣尝试的一个选项是使用Fabric来创建部署任务。
答案 0 :(得分:8)
刚刚从Mountain West DevOps回来谈论这个,很多。 (不是特别针对Go,而是一般情况。)
简而言之,我只能说:这取决于。
对于没有获得高使用率的简单应用程序,您可以手动启动实例,将二进制文件放到其上,运行它,然后再完成。 (如果您不在生产平台上开发,可以交叉编译Go二进制文件。)
为了更加自动化,您可以编写一个Python脚本,为您上传并运行最新的二进制文件到EC2实例(使用boto / ssh)。
即使Go程序通常非常安全(特别是如果你test),为了获得更高的可靠性,你可以对二进制文件进行守护(使其成为一项服务),这样如果它由于某种原因崩溃它将再次运行。
要获得更多自主权,请使用像Jenkins或Travis这样的CI实用程序。这些可以配置为在将代码提交到某个分支或应用标记时自动运行部署脚本。
对于更强大的自动化功能,您可以使用另一个档次并使用Packer或Chef等工具。除非您的需求非常紧张,否则我将从Packer开始。 Packer开发人员今天谈到了它,看起来简单而强大。 Chef为几家企业提供服务,但对您来说可能有些过分。
这里缺少它:Go程序的基本思想是你只需要将二进制文件复制到生产服务器上并运行它。就这么简单。根据您的需求和首选工作流程,您如何自动执行或自动执行该操作取决于您。
进一步阅读:http://www.reddit.com/r/golang/comments/1r0q79/pushing_and_building_code_to_production/,具体为:https://medium.com/p/528af8ee1a58