Deployment 部署Go应用程序

Deployment 部署Go应用程序,deployment,go,Deployment,Go,我有一个用Go编写的restapi端点,我想知道部署它的最佳方式是什么。我知道使用GoogleAppEngine可能会让我的部署更轻松。但是,假设我想在AWS上部署它。我有哪些选择/流程/程序。有哪些最佳实践?我是否需要编写自己的任务来构建、SCP和运行它 我有兴趣尝试的一个选项是使用Fabric创建部署任务。今天我们讨论了很多。(不是专门针对围棋,而是一般情况。) 简而言之,我只能说:这要看情况而定 对于一个使用率不高的简单应用程序,您可以手动启动一个实例,将二进制文件放到它上面,运行它,然后

我有一个用Go编写的restapi端点,我想知道部署它的最佳方式是什么。我知道使用GoogleAppEngine可能会让我的部署更轻松。但是,假设我想在AWS上部署它。我有哪些选择/流程/程序。有哪些最佳实践?我是否需要编写自己的任务来构建、SCP和运行它

我有兴趣尝试的一个选项是使用Fabric创建部署任务。

今天我们讨论了很多。(不是专门针对围棋,而是一般情况。)

简而言之,我只能说:这要看情况而定

对于一个使用率不高的简单应用程序,您可以手动启动一个实例,将二进制文件放到它上面,运行它,然后就完成了。(如果不是在生产平台上开发,可以交叉编译Go二进制文件。)

为了实现更高的自动化程度,您可以编写一个Python脚本(使用boto/ssh)将最新的二进制文件上传并运行到EC2实例

尽管Go程序通常非常安全(尤其是在您需要的情况下),但为了提高可靠性,您可以对二进制文件进行守护(使其成为服务),以便在由于某种原因崩溃时再次运行

要获得更多的自主权,请使用像Jenkins或Travis这样的CI实用程序。可以将这些配置为在将代码提交到某个分支或应用标记时自动运行部署脚本

为了实现更强大的自动化,您可以将其提升到另一个级别,并使用诸如或之类的工具。我会从Packer开始,除非你的需求很强烈。Packer开发者今天谈到了它,它看起来简单而强大。厨师为数家企业提供服务,但对您来说可能有些过头了

缺点是:Go程序的基本思想是只需将二进制文件复制到生产服务器并运行它。就这么简单。根据您的需要和首选的工作流程,如何实现自动化或可靠地完成这项工作取决于您自己

进一步阅读:具体而言: