专栏名称: Python程序员
最专业的Python社区,有每日推送,免费电子书,真人辅导,资源下载,各类工具。我已委托“维权骑士”(rightknights.com)为我的文章进行维权行动
目录
相关文章推荐
Python开发者  ·  请立即拿下软考证书(政策风口) ·  2 天前  
Python爱好者社区  ·  推荐我的抖音变现俱乐部! ·  3 天前  
Python爱好者社区  ·  120道Python面试题.pdf ... ·  6 天前  
Python爱好者社区  ·  吴恩达,yyds ·  4 天前  
Python爱好者社区  ·  DeepSeek薪资曝光! ·  4 天前  
51好读  ›  专栏  ›  Python程序员

为什么我们从 Docker 转向了 Go?

Python程序员  · 公众号  · Python  · 2021-04-14 08:30

正文

(点击上方快速关注并设置为星标,一起学Python)

文章转自:CSDN

作者 | meezeeworkouts  译者 | 弯月

在以往的很多项目中,我们都采用了Docker,而且效果都很不错(大多数时候都不错,只不过有时我们的生产系统中的红帽系统文件会出一些莫名的状况,但可能并不是Docker的问题)。但是,这一次我们并没有采用Docker,原因是没有必要。我们用golang编写了Web服务和静态的html,并且还是用了golang 1.16的新指令//embed,最终得到了一个可部署的二进制文件。

作为一个自强自立的创业公司,我们可以使用的资源非常有限。正是出于这个原因,我们才选择了Golang。我们也渴望能够花费几个星期来构建完善的CI / CD管道、优雅的部署流程以及漂亮的仪表板。但是,为了吸引用户订阅,我们需要交付软件。任何与这个目标没有直接关系的工作都要靠边站,Docker就是其中之一。Docker本身的代码量超过了900万,其自身的bug不可避免,而且还有其自身的特质。

使用Golang可以让我们构建速度非常快的Web服务(至少能够满足我们当前的增长水平),而且可伸缩性非常强(至少能够满足我们当前的需求)。我们的每台服务器每秒可以处理数千个事务。但实际的业务量每秒还不到一千。但是,可以肯定的是,我们用node或deno也可以达到相同的水平。V8引擎也非常快。如果你的最大流量每秒只有大概两个事务(我们有一个健身视频应用,但肯定没有推特那个水平的扩展性问题),那么实际上无论选择哪种编程语言都没有关系。如果容量不足,只需升级服务器就可以了。

我们选择Go的原因是,golang的打包比node、Java或C#好太多了。最终只有一个二进制文件。

构建时,只需运行:

go build

测试时,只需运行:

go test

部署时,只需运行:

scp app user@host:
ssh user@host “nohup ./app”

我们的实际工作的确比上述“稍微”复杂一些,我们创建了一个SystemD脚本在服务器启动时运行服务。我们还投入了一个专用的构建服务器,其上运行了一个10行代码的shell脚本,而这个脚本可以完成所有的构建工作(git clone、go build、go test、go lint、go vet)。但是,我们之中还有人认为这太复杂了。过几天,可能我们还会添加一个界面(比如https://www.rundeck.com)来控制部署。

我们花在建立构建和部署系统的总时长非常短,我们甚至都不知道如何衡量。

下面,我们来算一算学习Docker、部署Docker、还有故障排除等工作需要花费多少时间。即便你非常喜欢Docker,而它也改变了你的生活,但它是必不可少的吗?你真的认为Docker比我们使用golang内置功能建立的构建和部署还简单吗?我敢向你保证,并没有。





请到「今天看啥」查看全文

推荐文章
Python开发者  ·  请立即拿下软考证书(政策风口)
2 天前
Python爱好者社区  ·  推荐我的抖音变现俱乐部!
3 天前
Python爱好者社区  ·  120道Python面试题.pdf ,完全版开放下载
6 天前
Python爱好者社区  ·  吴恩达,yyds
4 天前
Python爱好者社区  ·  DeepSeek薪资曝光!
4 天前
早安晚安心语  ·  你真我更真,你假我转身
7 年前
亮总分享  ·  搜索富媒体摘要如何优化?
7 年前