我们不使用Docker(我们不需要它)

2021-03-16 11:40:25

更新:在发布到Reddit后,要提到我们确实有专用构建服务器的次要编辑。

这可能最终得到了很多仇恨。在其他工作中,我们已经使用了Docker,它已经很好(在大多数情况下......有时间redhat filesystemon我们的Prod服务器获得神秘的东西 - 也许不是Docker的错。)但没有原因我们不使用Docker,因为我们不需要它。字面上地。使用Golang1.16的新//嵌入指令写入Golang Web服务和静态HTML,我们最终可以使用单一可部署二进制文件。

作为一个自我维持的启动,我们对任务有限的资源拓扑。我们选择了Golang的原因。如果我们可以花几周建造完美的CI / CD管道,优雅的仪表板,它肯定会很好*。但是我们有软件我们需要发货以获得用户才能推动订阅。任何不直接为目标的东西都是一个复杂性。最多,Docker是一种并发症。 900万LOC并发症,带来了Stords Bugs及其自己的idiosyncrasie

Golang允许我们建立纯粹的Web服务(至少对于我们目前的增长程度)和疯狂地扩展(再次,我们目前的增长水平)。我们可以在单个服务器上处理千万万次交易。我们没有靠近每秒千万万的地方。但是,当然,我们可能已经完成了与节点或丹诺的结果。 V8发动机还快速。当高流量的App可能是每秒2个交易时(我们有一个锻炼视频应用程序 - WedOn与Twitter具有相同的可扩展性问题),它真的无关紧要您选择的编程语言。如果您耗尽容量,请升级您的单个服务器。

不,我们去的原因是因为戈兰的包装是*所以*比节点要好得多。或java。或c#。我们获得一个二进制文件。建筑物和:

Go Buy Destration和Go Test Deploying App as Easy Asseas as Easy As:SCP App User @ Host:SSH用户@ Host“Nohup ./app”。

注意,我们确实得到了一个*小*更复杂,并创建一个systemDscript来启动它。我们还确保我们有一个专门的构建服务器,它基本上运行了一个10线shell脚本,这是所需的所有构建良好(git clone,go build,go test,go lint,go vet)仍然是我们争论的这太复杂了。在某些时候,我们甚至可能会添加一个像https://www.rundeck.com/这样的UI来控制部署。创建我们构建和部署系统的总时间是如此小我们甚至不知道如何衡量它。现在,想想你花了多少时间学习码头。部署docker.troubleshooting Docker。即使你喜欢,它也改变了你的生活,它比切片的面包更好,它解决了世界时髦的......到底你真的可以说它比我们为Golang FreeBuilt in FreeBuilt的更简单吗?我保证你不知道。如果您喜欢这些想法,请发表评论。虽然你'它,你可以给我们的应用程序尝试:https://meezeeworkouts.com/getapp