炼数成金 门户 大数据 虚拟化 查看内容

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

2021-4-6 14:21| 发布者: 炼数成金_小数| 查看: 4369| 评论: 0|原作者: 弯月 译|来自: CSDN

摘要: 在以往的很多项目中,我们都采用了Docker,而且效果都很不错(大多数时候都不错,只不过有时我们的生产系统中的红帽系统文件会出一些莫名的状况,但可能并不是Docker的问题)。但是,这一次我们并没有采用Docker,原 ...
在以往的很多项目中,我们都采用了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内置功能建立的构建和部署还简单吗?我敢向你保证,并没有。

对于Docker,你有何想法?请在下方留言。

原文链接:
https://launchyourapp.meezeeworkouts.com/2021/03/why-we-dont-use-docker-we-dont-need-it.html?m=1

欢迎加入本站公开兴趣群
软件开发技术群
兴趣范围包括:Java,C/C++,Python,PHP,Ruby,shell等各种语言开发经验交流,各种框架使用,外包项目机会,学习、培训、跳槽等交流
QQ群:26931708

Hadoop源代码研究群
兴趣范围包括:Hadoop源代码解读,改进,优化,分布式系统场景定制,与Hadoop有关的各种开源项目,总之就是玩转Hadoop
QQ群:288410967

鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

 

GMT+8, 2021-4-13 05:09 , Processed in 0.109123 second(s), 25 queries .