Official
キーノート
Auto-Generating builderscon server, validator, and client with JSON (Hyper)? Schema, et al - lestrrat (Daisuke Maki)
GoでGUI - Shibukawa
Elastic Beatsを導入した話 - Daichi Hirata
- Slide
- ElasticSearch用にJSON出力するツール(Go製)
- https://www.elastic.co/products/beats
- https://github.com/elastic/beats
- いろんなフォーマットがある
- winlogbeat
- apachebeat
- nginxbeat
- Dockerbeat
- HTTPbeat
- Nagiosbeat
- dev-tools
- KibanaへのImport
- Dockerでのビルド環境
GRPCの実践と現状での利点欠点 - kazegusuri
- Slide
- メルカリでGRPC(golang)を本番導入するまで行ったことと現状で利用するメリットを紹介
-
GRPC
- HTTP/2を使用したRPCフレームワーク
- 2015年2月Googleが公開
- ProtocolBufferを使用IF定義
-
開発理由
- StybbyろRPCを使っていたが、密結合、標準規格が出てきて、モバイルIOTクラウドに適用するために適用した
-
OSSでの採用事例
- TenderFlow
- containerd (Dokcer)
- etcd (CoreOS)
- go-kit/kit
-
作り方
- proto定義
- protoからGo生成
- インターフェイスを実装
- GRPCサーバー起動
-
パフォーマンス
- echoサーバーで50Kreq/s
- 認証いれても25Kreq/s
- DBアクセスでも10Kreq/s
-
リクエスト分散
- NginxTCPLoadBalancing
- ProxyProtocol
- goではgo-proxyproto
grpc-gateway(sevice名/method名みたいな何も考えない設定がおすすめ)
-
欠点
- ミドルウェアが少ない
- curlが使えない
- ドキュメントが少ない
- 言語間での完成度がマチマチ
-
利点
- 実装に集中できる
- クライアントがつくりやすい
- 欠点の部分はなんとかなる
Go と GAE による Web サービス開発 - 鶴岡 達也
- Slide
- AGE/Goで現実的なwebアプリを開発、運用していく事ができるって話
-
なぜGAE?
- スケーラビリティが高い(数req - 数十万req)
- Googleレベルの可用性
- メンテフリー
- Snapchat / ingressがGAE / メルカリアッテ
- 現実的なwebアプリ作れる
-
課題 - 1つのリクエストを処理するのに時間がかかってしまう
- GAE側・・・60秒でタイムアウト
- 非同期で対応・・・TaskQueue、PushQueue
-
課題 - 永続化
- DataStoreを使う
-
課題 - ログ分析と運用
- GAE内でも高機能なログ閲覧機能がある(リアルタイム、リクエストのトレース、分析レポート機能)
自作Webフレームワーク uconを作った話 - vvakame
- Slide
- 自作Webフレームワークuconを作った話
- gb
-
Google API Discovery Exploper
- 誰でも簡単に使える
- 実際のAPIがたたかれる
- 結果を共有しやすい
- コードからUIが生成される
- Swagger対応
- net/httpライクに類似させた
- net/httpにないルーティングを作った
- ミドルウェアはJavaのServletからインスパイア
- Buildinミドルウェア
- RequestObjectMapper
- ...
- プラグイン
- Swaggerプラグイン
- go-endpoint
- 簡単に既存のコードに入れ込める
- 利用事例
- SwaggerUIにExportまで対応している
How to Contribute to Golang - stanaka
- Slide
- GoのContributeされた時の体験記
- MacharelAgentにまつわる話
- awsディストリビューションでmodify_ldtが無効になっていたのでエージェントが落ちた
- Goのアセンブラ直した
- GoのアセンブラはPlan9ライクなアセンブラ
- コミットしてマージされた(3日くらい)
- issueの受付はGitHub
- コントリビュートするにはコマンドが用意されている(git codereview)
- git codereview mail
- GithubのPRに相当するもの
-
gerritを使用している
- コメントにDraftの機能があって、あとから見返してからコメント書けるから良い
Requirements for Go server in production - yyoshiki41
- Slide
- 実際にプロダクション環境で使う為に、必要な事/考えなければいけない事について。
- リクエスト毎に1ゴルーチン
- race conditionをさける
- 1.6の場合、マップに書き込むとパニック
- デーモン化
- daemontools
- Supervior
- Circus
- リバプロで動作させた(Nginx)
- Gracegul restart
- Blue/Green deployment
- Hot deployment(symlink, like Capistrano)
- like unicorn
- Circusで
- einhornで
- facebookgo/grace...マスタープロセスID変わってしまう
- facebookgo/httpdown
- Server-Starter * facebookgo/httpdown + Einhorn
- goji with Einhorn
- 1.6の場合、ソケットファイルを消してしまう
- Profile go app
Golang with Google Cloud Platform - kaneshin
- Slide
- pigeon ・・・ Go製CloudVisionAPIのClientライブラリの話
- slide
- waf
- Ravel -> Gin
- O/R mapper/DB
- Xorm/Wizard(DB Shard library)
- Vendor package manager
- Glide
- Cloud Vision API
- 機械学習API
- 画像認識のカテゴライズに利用
- pigeon ・・・ Go製CloudVisionAPIのClientライブラリ
- logrus
Building scalable MO game server - @methane
- Slide
- 「パズル・ワンダーランド」の協力プレイ用のサーバーをGoで作った話。
- c4.xlargeで1万ルーム捌けるゲームサーバ
- gb使ってた
- UnBufferdChannel(Bufferedだとゴルーチンをロックしてしまうので)を使う為にコマンドパターン(GoF)を使用する
- ベンチマーク
- c4.8xlarge, 1room, 100client, 1000msg/clients -> 19.8sec 2倍速くなった
- 負荷が高い場合はChunkを大きく、小さい場合はChunkも小さく。
- バッファがFullになったら書く
- 他の
- pprof使う
- goroutine profile使う
- http://klabgames.tech.blog.jp.klab.com/archives/pprof2-cpuprofile.html
- Zero time cache pattern (スライド参照)
LT
Goによる格闘ゲーム用マクロ開発記 - cero_t
- 対戦格闘ゲーム用のマクロをGoで書いた話
Go Report Card - Shawn Smith
Goroutine on Google App Engine - sinmetal
- GAEはシングルコア
- 複数のAPIを呼ぶ時にGoroutineで非同期処理すると便利だよという話
Gopherに逆らうとどうなるのか - timakin
マイクロサービスのライブラリを見比べてみた - y_matsuwitter
- Slide
- Goでのマイクロサービスフレームワークの話
- go-kit/kit
- 多言語
- Puggable
- gizmo
- config
- service
- pub/sub
- micro
- 多数のレポジトリに分割
- fullstack
- Golang以外
- Dockerでの提供
- Tracer
- 分散環境でもどういった経路のアクセスがあったか形跡するもの
Goでデーモンを作る - ひろのぶ
- slide
- Goでforkぽいことをした一例を紹介。
- 普通はsyscall
- forkは無理
- 親プロセスと子プロセスをフラグで管理
GoImagick の詳解 - よや
- GoからImageMagickの APIを利用できるGoImagickの紹介。
- GoImagick
Go言語の入門書を書いてみた話 - 松尾 愛賀
- 「StartingGo」っていう本の紹介の話