为何咱们从 Docker 转向了 Go?

为何咱们从 Docker 转向了 Go?

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

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

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

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

构建时,只需运行:docker

go build

测试时,只需运行:shell

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)来控制部署。 服务器

咱们花在创建构建和部署系统的总时长很是短,咱们甚至都不知道如何衡量。app

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

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

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

文章转自:CSDN 做者 | meezeeworkouts 译者 | 弯月(版权归原做者全部,侵删)

相关文章
相关标签/搜索