iMarketをGCPに移行した

2013年から運用している株式投資Webサービス iMarket(適時開示ネット) をさくらVPSからGCPに移行しました。

去年からDockerの本番運用の事例も増えてきて、コンテナを使う流れにキャッチアップするためiMarketもDockerでコンテナ化しています。

嬉しい誤算としてレスポンスが速くなってるみたいですね。

さくらVPSSandy BridgeでGCEがBroadwellだから、3世代!も違うわけでそれで速くなったのかな。

performance
パフォーマンス比較

これからクラウドは全てGCPにするつもり。無料枠のBigQueryのスキャンが毎月1TBあるなど、大盤振る舞いなところも素敵です。

Container Builderがお気に入り

GCPでコンテナを扱う際に欠かせない(と私が思っている)のがContainer Builderです。

本来はYAMLの定義ファイルを書いてビルドフローを制御するもののようですが、GitHubへ特定のブランチやタグのpushを契機としてコンテナをビルドし、Container Registryにイメージを保存する機能があります。

例えば手元でインスタンスを立ち上げる時は、最新のビルドになるよう以下のようなシェルを書いて使ってます。

CONTAINER_RAILS=gcr.io/xxxxxxxx/github-tynmarket-imarket:`git show origin/docker | grep commit | awk '{print $2}'`

create_app_instance() {
  gcloud beta compute instances create-with-container $1 \
        ...
        --container-image=$CONTAINER_RAILS \
        ...
}

# rails-1という名前で起動
create_app_instance rails-1

Slackで通知も受け取れるようで、色々使いこなせると便利そうです。

費用の変化とさよならJenkins

1ドル110円の月 24 * 31 時間とするとサーバ代は1445円増加。

+527 - Railsインスタンス(f1-micro)
+1845 - MySQLインスタンス(g1-small)
-972 - Jenkinsサーバ(さくらVPS

最近は放置されがちだったJenkinsサーバは移行を期に退役。差し引き1500円程度なら負担感は少ないかな。

100GBを超えるPDFファイル問題

iMarketでは過去数年分の決算短信などのPDFファイルを配信しており、その総量が100GBを超えるという頭の痛い問題があります。

ディスクの容量を食うことも然ることながら、クラウドのネットワークに乗せるとトラフィックの料金がかかるのも気になります。

200GBのディスクに3CPU + 2GBメモリがついてくるので、とりあえずVPSを1つ配信サーバとして残しました。

Railsのログが見えない

STDOUTに出したRailsのログはDockerのgcpログドライバ経由でStackDriver Loggingに送られるはずなのですが、なぜか送られてきません。

これは後で調べないと。。

まとめ

GCPに移行して良かったです。

コンテナはVMのスナップショットより作って壊してが楽だし、他のGCPのサービスを使って色々できそうなのも楽しみです。