爲何咱們從 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 譯者 | 彎月(版權歸原做者全部,侵刪)

相關文章
相關標籤/搜索