關注你所關注的 - Golang社群調研報告

JFrog傑蛙科技發表於2019-12-20

Golang語言可以說現在炙手可熱,大家熟悉的Kubernates 就是使用Golang開發的。

我們在最近於倫敦和聖地亞哥舉行的GopherCon大會上調查了1000多名開發者,以更好地瞭解Go 開發社群和對Go Module的總體看法。隨著最近釋出的Go 1.13版本,現在是向社群分享一些有趣資料的好時機。



Go開發人員是高度投入的

絕大多數的Go開發者都在使用最新版本的GoLang。超過70%的受訪者表示使用的是最新版本的Go 1.12。

同樣值得注意的是,超過82%的Golang開發者使用的是1.11或更新的版本,因此能夠使用Go Module。只有一小部分報告使用了Go的早期版本。



Go Modules 的使用率很高

幾乎同樣多的使用最新版本的Go開發人員也報告在他們的組織中採用了Go Module。也有相當多的人希望儘快使用Go Module,這樣到2020年中期,其使用率將上升到至少80%,並可能接近100%。




GoLang被廣泛應用於各個行業

雖然Go開發應用於廣泛的計算領域,但DevOps僅排在Web開發之後,有近五分之一的報告稱他們使用Go來實現這些目的。系統、資料庫和網路應用程式的得分也很高,這表明在移動和嵌入式裝置等有前途的領域還有很大的增長空間。



選擇Go Module很難

當開發人員選擇開源元件時,他們傾向於追求安全性和質量。但在如何判斷 Go Module的風險方面,幾乎沒有共識。

大多數報告顯示人們偏好用他人使用最多的包,以及流行度所帶來的保證。同時安全漏洞也是一個問題,開發人員如何確定一個包的風險在各種各樣的條件下是不同的,如內網環境和外網環境同一個漏洞的處理可能是不一樣的。



如何更好更快的選擇Go Module

由於開發人員在選擇越來越多的Go模組時遇到了困難,GoCenter透過互動搜尋幫助使用者發現。一旦你有了結果,GoCenter會提供你需要的所有資訊來決定哪些模組最適合你的需求,包括活動和星級。我們也正在開發一個系統,根據選擇的標準來給模組打分,這將更好的幫助Golang開發人員更快的選擇到合適的模組。



GoCenter

我們感謝所有對我們GoLang調查做出回應的開發者。我們從中獲得的資訊將幫助我們幫助您,特別是在我們繼續使GoCenter成為幫助採用Go Module的有用工具的情況下。

如果您還沒有聽說過GoCenter,那麼它提供了不可變的、版本化的模組的中心源,這些模組直接從公共源儲存庫中的Go專案進行處理和驗證。在眾多好處中,使用GoCenter可以加快GoLang應用程式的構建時間。

  GoCenter現在託管了超過260,000個版本化的Go Module,這些模組可以免費提供給Go開發者社群。

 



GoCenter與Golang 1.13的最佳實踐

 

1.      使用Gocenter 作為Goproxy

在Golang 1.13中,Go Module的支援在預設情況下是啟用的。儘管Go客戶端的新安裝會自動設定一個預設的google託管代理,在國內你可以覆蓋它並使用你選擇的Go Module代理,比如GoCenter。

 

要使用GoCenter作為版本化go模組的代理,請將GOPROXY環境變數設定為GoCenter URL:


Golang 1.13中的新特性允許您在GOPROXY中指定由逗號分隔的多個代理,以及直接從原始碼下載模組的Direct 模式(這種模式的場景是goproxy中沒有對應模組或版本是會返回404)。但是GoCenter目前支援了自動包含特性,意味著您在使用GoCenter進行代理時不需要使用這些Direct模式,當gocenter中目前沒有快取對用元件時,會自動觸發到原始碼庫中自動拉取對應元件以及版本。

 

2.      校驗和(checksum)資料庫支援

從Golang的1.13版開始,go get透過谷歌在sum.golang.org上維護的一個可審計的校驗和資料庫來執行模組的身份驗證。版本1.13會使用GOSUMDB環境變數中預設設定這個校驗和的DB URL。

GoCenter已經透過代理sum.golang.org幫助我們加速構建。如果你的GOPROXY設定為GoCenter,你不需要改變任何東西-你已經透過GoCenter驗證你的模組了!

 

3.      私有Go Module 倉庫

GoCenter用於代理透過公共源儲存庫(如Github)共享的Go Module。Golang 1.13還引入了一些環境變數,特別是GOPRIVATE,用於繞過代理和校驗和驗證,從私有儲存庫下載模組版本, 此場景比較適合企業內部有大量自研發Go Module。您可以在Golang文件中瞭解如何使用它們。

 

4.      版本驗證

在1.13版本中,為Go Module使用正確的字尾非常重要。go命令現在對請求的版本字串執行額外的驗證,如果模組不符合語義匯入版本控制,go get將失敗。因此,在Golang 1.13之前載入的模組的偽版本(pseudo version)可能會失敗。

 

 

 

總結

今天我們分享了我們在GopherCon大會上的Golang 調研結果,供大家參考,Go Module是目前比較受Golang 開發人員認可的一種依賴管理模式,當然其中還有很多問題,幸運的是,該社群現在非常活躍。

同時也介紹了部分1.13新特性以及最佳時間,推薦大家使用Gocenter 作為go 開發的 goproxy,加速本地構建,加速你的創新。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69954434/viewspace-2669644/,如需轉載,請註明出處,否則將追究法律責任。

相關文章