LoginSignup
7
7

More 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について。
  • 途中参加

Golang @ISUCON - @y_matsuwitter

  • 初参戦した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が遅くなる要因
    • GC
    • memcpy
    • function call
  • 速いGoコードの書き方
    • GOGCを大きい値にするとヒープが増える
    • String->[]byte配列の利用
    • レジスタの退避をするから関数呼び出しが遅いけど、Goにはインライン展開がある。
  • Go1.5〜
    • 1.5でコンカレントGCが導入される

Golang JP Community - @qt-luigi

  • 「Golang JP Google+ コミュニティ」と「日本のGoのコミュニティ活動」について

Go at Gengo @ironzeb

  • 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

? - @nuki_pon

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

  • goの抽象構文木で遊ぶ話
  • parser
  • Lint
  • 静的解析。
  • コード生成ツールとかに使える。
  • GoAstViewer

nginx-build - @cubicdaiya

  • Goでnginxのビルド自動化ツールを書いた話
  • cubicdaiya/nginx-build
  • やたらビルドするから自動化した
  • コマンドラインツールを作るのに便利

「Go におけるユニットテストについて」 - @yuya_takeyama

  • IOに依存したテストをどうするかという話
  • bytes.Buffer(RubyのStringIOみたいなやつ)

分散型システムをつくろう - @imkira85

  • etcd/consul/consistentを使ったものについて
7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7