infoMore than 5 years have passed since last update.
Go Conference 2014 autumn
Last updated at Posted at 2014-11-30
Official
App Engine for Golang Performance - @sinmetal
- AppEngine for Golang Performance, Managed VMs for Golangについて。
- 途中参加
- 初参戦したISUCONでのGolangを使った話
- 主にプロセスキャッシュや複数インスタンスでの分散処理について
- Go使った理由
- 構文がシンプル
- 並列・並行処理でメモリ周りが容易
- デプロイが楽(バイナリ配布)
- 標準パッケージが色々あるから
- プロセスキャッシュ
- データをプロセス上に全て保持する
- 永続化は適度なタイミングでRedisに保存orファイルにダンプ
- 整合性を守る
- RaceCondition
- Lockが必要
- sync・・・各種のロックを扱うパッケージ
- sync.RWMutex
- sunc/atomic
- atomic.Value(1.4〜)
- タスクの分散処理
- 処理に時間がかかるものは非同期で。かつ並列実行数を制限したい
- Task Queueing
- capacity passing
- ゴルーチンとチャネルを利用
- 重複する処理を避けたい
- 処理先を振り分ける
- NginxのCache-ControlHeader
mackerel-agent徹底解説 - @songmu
Why Go is so slow. - @methane
- Slideshare
- CPUプロファイラーの使い方
- runtime/pprof
- モンテカルロ法に似ている
- サンプル数少なくてもトレース出来る
- Macユーザーは相性悪くて使えない
-
davecheney/profileってのもある
- Go1.4だと使い易くなってる
- (pprof) top
- (pprof) top --cum
- (pprof) web
- (pprof) web finishRequest
- (pprof) web
- (pprof) weblist
- Goが遅くなる要因
- 速いGoコードの書き方
- GOGCを大きい値にするとヒープが増える
- String->[]byte配列の利用
- レジスタの退避をするから関数呼び出しが遅いけど、Goにはインライン展開がある。
- Go1.5〜
Golang JP Community - @qt-luigi
- 「Golang JP Google+ コミュニティ」と「日本のGoのコミュニティ活動」について
- GengoでのGo使用事例
-
gengo/goship(deploy tool)
- APIをGoで開発。Codeigniter(PHP)500msに対し、Goは10ms。
- Test Fixtures
- Quick Wins
- gofmt -s
- fofmt -w
- go test -race
- goimports
- go vet
NSQ-Centric Architecture - Greg
-
NSQでチャットAPIの実装事例。
- nsqlookupd(自動サービスディスカバリ)。
- NSQ0.3が一週間前に出た。ドキュメントがまだない。
- UUID+メッセージIDで既に届いたかどうか判別。
- コンポーネント指向は捗る。
- VirtualDOMは速い。
- NSQ中心にすればマイクロサービス化しやすい。しかし、DBを使用しないでキューのみのサービスは難しい(GroupCacheは助かる)。
Hacking Go Compiler Internals
- Goコンパイルをハックした話。
- Lexer -> Parser -> Escape Analysis -> Typegen, GCproggen -> Codegenの順番にコンパイルされる。
- Lever・・・ソースコードを抽象化したトークンに分解する。
- Parser・・・トークン列を抽象構文木に変換する。Yaccで書かれている。
- printっていうデバッグ関数があるよ。
- Goコンパイラは実際は遅いよ。
- C->Goへのコンパイラ化は1.5でなるよ。
Lightning Talk
Terraformのpluginについて - @tkak
-
terraformVMの作成、DNS、全てを包括して管理するサービス。様々なIaaSをコードで管理する。
- Chef
- Packer
- Kickstart
- Plugin開発はGoで開発出来る。v2.0からフレームワーク機能がサポートされて書きやすくなった。
Goでビルドパイプラインツールを書いた話 - ainoya
- SpeakerDeck
- walter
- CIでのビルドパイプラインの実行制御するツール
- ymlで記述
- channel/goroutineで良い感じに書けそうだからGoで書いた。
-
godepでパッケージ管理
- Goはインターフェイスを使って抽象化して実装する。
go/parser, go/astの話 - @yuroyoro
- etcd/consul/consistentを使ったものについて
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
What you can do with signing up