deployment - 部署 Go 应用程序

标签 deployment go

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

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

最佳答案

刚从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

关于deployment - 部署 Go 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22514669/

相关文章:

java - 如何通过部署他们的 war 从 Tomcat 在本地运行多个依赖应用程序?

deployment - 可以将OFBiz配置为作为单个整体式Web应用程序工作吗?

unit-testing - Go Test 中具有不同条件的多个 httptest.NewRequest

algorithm - 使用 golang 在图中查找 Cliques

go - 这两个字符串有什么区别?

c# - 如何使用 SQL Server 数据库部署 C#/WPF 应用程序

java - 不同包下的两个不同 jar 中的相同类。它会导致应用程序执行出现任何问题吗?

go - 用于多个 go 包的包绑定(bind)资源使用

function - 关闭不返回所需的输出

deployment - 安装Elasticsearch时出现橡胶错误