Go Conference 2014 Autumnレポート

3セッションについてのまとめ~「App Engine for Golang Performance」「Golang @ISUCON」「mackerel-agent徹底解説」~

この記事を読むのに必要な時間:およそ 7.5 分

Go Conference 2014 Autumnでは,8つのセッションと7つのライトニングトーク(LT)がありました。この記事ではその中から3つのセッションについてまとめたいと思います。

App Engine for Golang Performance(@sinmetal氏)

このセッションでは,@sinmetal氏からGoogle App Engine ⁠GAE)for GolangManaged VMsの紹介とそれらのパフォーマンスについての話がされました。なお,このセッションの資料は以下のリンクから閲覧できます。

写真1 @sinmetal氏の発表の様子

写真1 @sinmetal氏の発表の様子

Goolge App Engine for Golang (GAE/G)

まずはじめに,GAEの説明がされました。同氏は,GAEはGoolgeが提供するインフラの上でWebアプリを動かすためのPasSであると述べていました。GAEには以下のような特徴があるそうです。

  • すべてGoogleが提供するインフラの上で動くため,インフラのことを心配する必要がない
  • オートスケーリングというリクエストに合わせて,自動的にインスタンスが増える機能がある
  • Webアプリを作るためのプラットフォームの提供

また同氏は,GAEでGo言語を使うメリットとして以下のことを挙げていました。

  • Go言語が提供する標準パッケージnet/httpを使って書ける
  • gojiなどのほとんどのWebフレームワークが動作する
  • パフォーマンスが良い

一方,デメリットとして以下のことを挙げていました。

  • Go言語のバージョンアップへの追従が遅い(セッション発表当時は Go 1.2)
  • GOMAXPROCS1であるため,ゴルーチンが複数のコアで動かない
  • 独自にツールをインストールしたり,カスタマイズすることができない
  • ベータ版であるためプロダクトで使いづらい

Managed VMs

同氏は,Managed VMsとは,Googleの提供するIasSである,Google Compute Engine(GCE)上でGAEのコンテナを動かす機能だと述べていました。そして,Managed VMsを使うメリットとして以下のことを挙げていました。

  • ローカルファイルにアクセスできる
  • Dockerfileを書き換えることでカスタマイズできる
  • コア数を指定することができるので,GOMAXPROCSが変更できる

しかし,一方で現在は以下のようなデメリットがあると述べていました。

  • デプロイが非常に遅い(5分くらいかかる)
  • auto-scalingの最小値が1であるため,常時インスタンスが起動し続ける

Managed VMsについては,同氏の以下の記事も参考になるかと思います。

パフォーマンスの計測

今回のパフォーマンス計測では,GAEおよびManaged VMs上に,Hello, Woldを返すような簡単なWebアプリをデプロイし,レスポンスを返すまでの時間を計測したそうです。しかし,GCE上から計測対象のWebアプリにリクエストを送るアプリを作り,かかった時間をBig QueryのストリーミングAPIを使って集計し,計測したそうです。また,比較対象としてJavaで書かれたWebアプリを用いたそうです。GAE上でGo言語で書かれたWebアプリとJavaで書かれたものを動かして比較すると,以下のような結果を得ることができたそうです。

  • Javaで書かれたものは,スピンアップに時間がかかる
  • Go言語で書かれたものは,Javaで書かれたものと比べて,半分のインスタンス数で処理することが可能

そして,Go言語とJavaで書かれたWebアプリをそれぞれManaged VMs上で動かすと以下のような結果が得られたそうです。

  • Go言語で書かれたものは,インスタンス1つで十分処理できた
  • Javaで書かれたものは,503エラーを返していたため,うまく計測できなかった

同氏は,Managed VMsはまだベータ版で不安定だが,今後改善されることを期待していると述べていました。また,GAE/Gがベータ版でなくなることを切に願っているようでした。

著者プロフィール

上田拓也(うえだたくや)

KLab(株)所属。Go Conference 2014 Autumnスタッフ。

業務ではJavaScript,Luaなどを扱っている。

大学時代にGo言語に出会い,それ以来Go言語にのめり込む。

時間があると,Go言語の勉強会に参加している。

Go言語のマスコットのGopherの絵を描くのも好き。

Twitter:@tenntenn

コメント

コメントの記入