自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為什么我們從Docker轉(zhuǎn)向了Go?

系統(tǒng) Linux
我們選擇Go的原因是,golang的打包比node、Java或C#好太多了。最終只有一個(gè)二進(jìn)制文件。

[[392060]]

 在以往的很多項(xiàng)目中,我們都采用了Docker,而且效果都很不錯(cuò)(大多數(shù)時(shí)候都不錯(cuò),只不過(guò)有時(shí)我們的生產(chǎn)系統(tǒng)中的紅帽系統(tǒng)文件會(huì)出一些莫名的狀況,但可能并不是Docker的問(wèn)題)。但是,這一次我們并沒(méi)有采用Docker,原因是沒(méi)有必要。我們用golang編寫(xiě)了Web服務(wù)和靜態(tài)的html,并且還是用了golang 1.16的新指令//embed,最終得到了一個(gè)可部署的二進(jìn)制文件。

作為一個(gè)自強(qiáng)自立的創(chuàng)業(yè)公司,我們可以使用的資源非常有限。正是出于這個(gè)原因,我們才選擇了Golang。我們也渴望能夠花費(fèi)幾個(gè)星期來(lái)構(gòu)建完善的CI / CD管道、優(yōu)雅的部署流程以及漂亮的儀表板。但是,為了吸引用戶訂閱,我們需要交付軟件。任何與這個(gè)目標(biāo)沒(méi)有直接關(guān)系的工作都要靠邊站,Docker就是其中之一。Docker本身的代碼量超過(guò)了900萬(wàn),其自身的bug不可避免,而且還有其自身的特質(zhì)。

使用Golang可以讓我們構(gòu)建速度非??斓腤eb服務(wù)(至少能夠滿足我們當(dāng)前的增長(zhǎng)水平),而且可伸縮性非常強(qiáng)(至少能夠滿足我們當(dāng)前的需求)。我們的每臺(tái)服務(wù)器每秒可以處理數(shù)千個(gè)事務(wù)。但實(shí)際的業(yè)務(wù)量每秒還不到一千。但是,可以肯定的是,我們用node或deno也可以達(dá)到相同的水平。V8引擎也非常快。如果你的最大流量每秒只有大概兩個(gè)事務(wù)(我們有一個(gè)健身視頻應(yīng)用,但肯定沒(méi)有推特那個(gè)水平的擴(kuò)展性問(wèn)題),那么實(shí)際上無(wú)論選擇哪種編程語(yǔ)言都沒(méi)有關(guān)系。如果容量不足,只需升級(jí)服務(wù)器就可以了。

我們選擇Go的原因是,golang的打包比node、Java或C#好太多了。最終只有一個(gè)二進(jìn)制文件。

構(gòu)建時(shí),只需運(yùn)行:

  1. go build 

測(cè)試時(shí),只需運(yùn)行:

  1. go test 

部署時(shí),只需運(yùn)行: 

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

我們的實(shí)際工作的確比上述“稍微”復(fù)雜一些,我們創(chuàng)建了一個(gè)SystemD腳本在服務(wù)器啟動(dòng)時(shí)運(yùn)行服務(wù)。我們還投入了一個(gè)專用的構(gòu)建服務(wù)器,其上運(yùn)行了一個(gè)10行代碼的shell腳本,而這個(gè)腳本可以完成所有的構(gòu)建工作(git clone、go build、go test、go lint、go vet)。但是,我們之中還有人認(rèn)為這太復(fù)雜了。過(guò)幾天,可能我們還會(huì)添加一個(gè)界面(比如https://www.rundeck.com)來(lái)控制部署。

我們花在建立構(gòu)建和部署系統(tǒng)的總時(shí)長(zhǎng)非常短,我們甚至都不知道如何衡量。

下面,我們來(lái)算一算學(xué)習(xí)Docker、部署Docker、還有故障排除等工作需要花費(fèi)多少時(shí)間。即便你非常喜歡Docker,而它也改變了你的生活,但它是必不可少的嗎?你真的認(rèn)為Docker比我們使用golang內(nèi)置功能建立的構(gòu)建和部署還簡(jiǎn)單嗎?我敢向你保證,并沒(méi)有。 

 

責(zé)任編輯:龐桂玉 來(lái)源: 馬哥Linux運(yùn)維
相關(guān)推薦

2016-09-27 21:25:08

Go語(yǔ)言Ken Thompso

2020-06-10 09:06:48

MongoDB架構(gòu)高可用

2020-06-05 08:29:40

語(yǔ)言PythonGo

2021-04-26 09:33:46

Go Iota語(yǔ)言

2020-09-09 09:38:47

GoLangNodeJS編程語(yǔ)言

2013-08-07 16:04:22

2019-09-30 07:50:51

ITOps云端ITOM

2019-11-27 10:25:15

SaaS云端IT架構(gòu)

2021-12-06 12:48:40

Gosyncatomic

2023-02-10 08:58:46

2023-03-29 15:01:43

微服務(wù)開(kāi)發(fā)

2021-09-14 08:50:38

Kubernetes容器Docker

2016-02-15 10:52:04

華為

2019-11-20 10:39:35

iPhone緩存清理

2018-06-15 21:26:13

PythonCrystal語(yǔ)言

2013-11-11 13:35:44

虛擬化應(yīng)用

2024-04-11 14:03:24

云計(jì)算云提供商

2021-09-23 13:44:20

物聯(lián)網(wǎng)IPv6設(shè)備

2019-08-05 14:23:43

DockerKubernetes容器

2012-08-13 09:15:54

Go開(kāi)發(fā)語(yǔ)言編程語(yǔ)言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)