[Golang] 影片心得整理- Google IO 2012- Go in Production
https://www.youtube.com/watch?v=kKQLhGZVN4A
每次剛學一個新的程式語言,自己的心裡總是會想著“這個新的語言特點是什麼?他究竟能夠為了產品或是你工作的事情上帶來哪些幫助?”
學習Golang的時候,我也是會這樣想.剛好找到了這一段影片,把它的一些內容做個整理,如下:
Juju - Ubuntu (Canonical)
語言轉換:
Python -> Golang
這是什麼?
Juju 是ubuntu上面管理軟體的一個工具,這裡有詳細的解釋.
Golang帶給Juju的好處:
Juju原本是使用Python來寫的,會換到Golang上面其實有相當多的理由,稍微整理一下:
Error Handle: 這大概是基本上Golang最強大的功能.
Concurrency: 這也是Golang被人喜愛的主要原因,目前我也還在努力地摸索.
他其實有更多沒有提到的,我稍微截個圖讓大家看一下
Heroku
語言轉換:
Ruby -> Golang
這是什麼?
Heroku 算是現在幾個知名的PaSS (Platform as a Service)之一,主要就是讓人host你的網路相關的service.
這裡有更詳細的解釋.
Golang帶給Heroku的好處:
Heroku 主要有一個Routing Table Service 來記錄超過 190萬個App的操作.這樣的service主要就是透過REST API然後與後方的PostgreSQL資料庫.原本是使用Ruby來撰寫一個部分的控制.詳細的流程圖我截取下來如下:
問題來了,bootstrapping new instance由於要產生一些資料所以是不夠快的,根據講者的說法,這跟Ruby產生initial JSON dump有關.
所以他們使用Golang在幾個小時內完成Streaming update部分的原型並且測試上線, 結果帶來以下的結果:
速度增加十倍以上(?)
產生新的資料在Golang上面再也不會成為整個流程的瓶頸,網路處理速度也變快.
目前他們也在思考把其他的部分開始改成Golang
StatHat
語言轉換:
一開始似乎就是用Go打造(99%)有部分也從RoR轉換到Go
這是什麼?
StatHat是一個記錄資料的服務,他提供多個語言的支援(接近15個).可以提供給其他網路服務公司做一些資料的追蹤, 可以顯示各種的圖形與方式.
Golang帶給StatHat的好處:
提了幾個優點
Fast:
速度比較上,Golang在網路處理上算是真的相當快速的.
Resource Friendly
他指的比較偏向社群資源多
Easy to deploy
Go binaries are self-contained
No shared libraries, no gem and dependency
Fun
這邊有他們Open Source出來跟他們產品有關的code,可以參考.
Iron.io
語言轉換:
Ruby -> Golang
這是什麼?
Iron.io 是一個網路服務提供商,主要分成以下幾個產品:
ironWorker 平行的工作平台,本來用RoR寫但是有點慢,用Go改寫後就變快很多.
ironMQ 訊息序列傳送廠商,是一個可以擴充的服務
Golang帶給Iron.io 的好處?
在ironWorker裡面很大一部份的工作是需要分配工作與平行處理架構,這是Golang主要能提升的部分,而他們會使用Golang的原因如下:
速度快
執行快而且編譯也快
Still reasonably express
Rich standard library
也就是因為build-in 標準函示庫是足夠使用的,所以容易散佈跟編譯.
Not tie to VM
指的是編譯好之後可以直接執行,不用綁太多環境.
Awesome
寫起來很開心(我目前也是感覺相當有趣…)
Q&A: (標記的公司為回答的代表)
[Heroku] 如何決定哪些產品要轉換到Golang?
[StatHat] 比起Go而言,Ruby 有著龐大的資源與社群那為什麼要轉換到Go呢?
要用Go重寫其實是不難的(指的是他們用到的部分)
[Heroku][Juju] 你最喜歡的Go library
不用懷疑~當然是Go fmt . (我也覺得Go fmt幾乎把所有功能都用到了~)
[StatHat][Juju] 你們覺得學習Golang 要多久呢?
[StatHat] 我們大概學了幾個禮拜
[Juju] 我認為我從來不曾停止學習,能上手是很快但是要能真正了解其中含義,就要不斷學習.(這讓我想到這篇文章)
[StatHat] 你有任何推薦的Go書籍嗎?
Golang.org? 其實我並沒有讀任何的Golang 的書籍.
其他關於Golang 與其他語言的比較
http://www.slideshare.net/weijr/coscup2013 [COSCUP2013] Python, F#, Golang and Friends
繼續閱讀