從商業利益看 Go 程式語言
文章轉錄自: 從商業利益看 Go 程式語言
從 2016 年開始寫 Go 程式語言,在這一年我向很多朋友介紹了 Go 語言,很多人就不經問到為什麼我這麼喜歡 Go 語言,在公司內同事或主管更會問,為什麼要從 Node.js 或其他語言轉換到 Go,Go 語言有什麼地方可以帶給公司更大的利益,否則為什麼要多花時間跟人力去嘗試 Go 語言。如果團隊要建置一個商業 Web 服務,那我覺得底下的優點,是讓您選擇 Go 語言的最主要原因。
Go 優勢
- 快速又簡單部署
- 支援跨平臺編譯
- 保護原始程式碼
- 善用多核心處理
底下會針對上述提到的優點進行詳細說明。
1. 快速部署
傳統部署
大家都知道 Golang 可以將專案程式碼編譯成一個二進位制檔案,直接部署此檔案會比上傳上百的或上千個檔案還要來得容易。傳統上傳多個檔案是非常慢的,這就是為什麼我們在部署之前會將所有檔案透過 zip 或 tar 的方式打包成一個檔案再部署到機器上,除此之外,上傳後,伺服器端要另外解壓縮或者做其他事情,想想看要寫多少 Shell Script 才能完成此事情,而這些事情都是要靠 DevOps 工程師去撰寫,以及花時間去調整 CI 伺服器 (像是 Jenkins)。
伺服器設定
當然還沒完,檔案上傳完後,每一臺伺服器都需要準備相關軟體及設定,這時候可以透過 Docker 及 Puppet 或 Chef 完成這些事情,這些都是要花很大量的時間去處理,另外還要處理相對應安全性問題,像是 PHP 或 Python 或 Ruby 甚至 Node.js 版本的升級,太多層面需要考量。
用 Go 語言
在 Go 語言,你只需要將程式碼編譯出二進位制執行檔,就可以直接丟到多臺伺服器,直接啟動,並不需要準備各種環境或軟體設定,省下來的時間就是大量的金錢。如果是用 Go 語言,我相信團隊內的 DevOps 工程師會很感謝你。假如團隊還沒將 DevOps 流程納入公司的商業考量,那您就落伍了。一位好的 DevOps 工程師可以幫團隊省下很多資金。
2. 不需要 Web 伺服器
這點其實就跟 Node.js 很像,你不需要 Apache 或 Tomcat 或 Nginx 等相關服務,Go 的執行檔就可以處理 Http 連線,這意味著不會有伺服器設定,也不需要維護成本,更不用考慮伺服器安全性問題。當然你執意要使用 load balance 像是 Nginx 或 HAProxy 這時候就會變得比較難除錯,也會多花不少時間再調整設定。
3. 保護程式碼
這點非常重要,如果你是賣軟體或者是雲端的公司,這時候客戶希望你將整套雲端放置在客戶公司內部,讓他們測試使用,這時候如果你是使用 Node.js, Ruby 或 PHP 的話,你只能乖乖的將整套原始碼放置在對方公司,並且心驚膽跳的怕對方有意去複製整套程式碼,這時候你敢跟老闆講說,我們需要將程式碼放到對方公司嗎?但是如果是在 Go,我們只需要給客戶一個檔案,請他們直接執行,就可以將服務跑起來,如果想要 decompile 此 binary,答案是 NO。
4. 多核心處理
Go 是個多核心處理的程式語言,這對於伺服器非常重要,許多 web 多語言都是跑 single thread,所以會閒置許多系統效能,現在的伺服器幾乎都是多核 CPU 了,像在 Node.js 你就必須在一臺機器跑多個 Node 服務,才可以有效率地發揮效能。在 Go 1.5 版本後 (含 1.5) 已經將 GOMAXPROCS
預設值為系統可用的多核數,所以只要啟動一個執行檔,就可以將系統效能發揮到極限。
5. 跨平臺編譯
Go 語言可以將程式碼編譯成 Windows 或 MacOS 或 Linux 的執行檔,方便攜帶或測試,想看看業務到外面跟客戶 Demo,還要連到 Internet 才可以 Demo 給客戶看,如果網路環境不好或者是沒網路該怎麼辦呢?這時候你只需要攜帶一個執行檔在身上就可以解決您的問題。在團隊內部,每次 QA 都要等工程師部署到內部機器才可以開始測試,這時只要給他們執行檔,就不需要等待工程師部署才可以測試,省下多少時間,這些寶貴的時間都是金錢啊。
結論
其實你會發現上面提到的所有優勢都是省下時間
及金錢
,時間在公司是非常重要及寶貴,大家可以想看看,省下的時間是不是可以讓團隊多做一些事情,讓公司更進步更有競爭力呢?
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 從程式語言排行看程式設計師信仰程式設計師
- 當流氓遇到劫匪:從純技術、商業利益、法律與道德層面看流量劫持
- 從錯誤處理看 Rust 的語言和 Go 語言的設計RustGo
- go語言偵錯程式Go
- 從一組漫畫看程式語言學習曲線
- 從語言學角度看詞嵌入模型模型
- Go語言————1、初識GO語言Go
- 從零開始——GO語言基礎語法Go
- Go語言(1)——程式結構Go
- Google釋出go程式語言Go
- 從Swift語言看ORM的定位錯誤SwiftORM
- 看什麼程式語言都是天堂
- GO語言Go
- Go 語言實戰: 編寫可維護 Go 語言程式碼建議Go
- [從RPC到Go-Micro 壹]Go語言實現RPC程式設計RPCGoC程式程式設計
- GO語言————2、GO語言環境安裝Go
- Go 語言程式設計規範Go程式設計
- Go語言併發程式設計Go程式設計
- GO是更好的程式語言嗎?Go
- Go程式語言評估報告Go
- [譯] Go 語言實戰: 編寫可維護 Go 語言程式碼建議Go
- 許式偉《Go語言程式設計》章節摘錄:Go語言簡史Go程式設計
- Go_go語言初探Go
- 商業專案中最受歡迎的 7 種程式語言
- 【Go語言入門系列】(八)Go語言是不是面嚮物件語言?Go物件
- go 語言常量Go
- Go語言mapGo
- go 語言切片Go
- go語言使用Go
- GO語言————4.2 Go程式的基本結構和要素Go
- Go 語言如何解決程式碼耦合Go
- Go 語言專案程式碼品質Go
- 部署Go語言程式的N種方式Go
- 用Go語言建立Windows視窗程式GoWindows
- Go語言程式設計快速入門Go程式設計
- XML 程式設計思想:Thinking XML: 通用商業語言(UBL)(轉)XML程式設計Thinking
- 非常適合GO語言新手學習的《Go語言從入門到實戰——簡明高效的Go語言實戰指南》課程——推薦分享Go
- 什麼是Go語言?Go語言有什麼特點?Go