LoginSignup
20
19

More than 5 years have passed since last update.

Goサーバのデプロイ周辺

Last updated at Posted at 2014-12-08

はじめに

この記事は「Gunosy Advent Calendar 2014」の7日目の記事です。

おまだれ

Gunosyの小出と申します。主にプロビジョニングとかデプロイを担当してます。
たまにapiとかのコードを書いてます。

GunosyにおけるGoサーバのデプロイ

※2014/12現在の状況です(今後良い方法があれば変更していくと思います)

デプロイ全体

Gunosyでは、サーバプロビジョニング・デプロイに、Chefレシピ + AWSのOpsworksを利用しています。

ざっくりデプロイ手順としては、

  • テストが通ればビルド
  • バイナリとその他ファイルをtar.gzに固めてS3にupload
  • OpsworksでS3からサーバに展開&プロセスマネージャを再起動

といった手順でやっています。

プロセスマネージャと周辺レシピ

GunosyのGoプロダクトはいくつかありますが、プロセスマネージャとしては、基本的にeinhorn(または状況に応じて一部supervisor)を利用しています。

いずれの場合も、共通化できるところはなるべく共通化し、ちょいと実行レシピをすげかえればOKみたいな感じにしています。
下記2つのパターンとも、ConfigureとDeployで利用しているCookbook/Recipeは全く一緒のものです。

このへんを参考にconfigファイルを作ったり、このへんを参考にして、起動/停止スクリプトの配備をしたりしています。

einhornを利用したサーバの一例

einhorn.png

supervisorを利用したサーバの一例

supervisor.png

まとめ

共通化できるところはなるべく共通化

と、一言で書きましたが、再利用性を高めるために、共通の設定/プロダクト固有の設定の分離や、configファイルの書式・構造の統一、など、結構苦戦しています。

その話はまた別の機会にできたら、と思います。

20
19
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
20
19