Goでの個人開発における本番環境funnythingzてきとうなblogですGoでの個人開発における本番環境2015/4/25Tweetこんにちは、funnythingzです。Webサービスやスマホアプリの開発とかやってます。Goで開発したplogという匿名ダイアリー的なWebサービスがあるのですが、本番環境をいろいろ変えまくったのでメモがてら残しておきます。さくらVPSまず最初のリリース時がこの環境です。さくらVPSのVPS512プランを契約してGoアプリをFastCGIとしてSupervisorでDaemon化してNginx経由で動かすという構成でした。GoでつくったWebサービスだとこの構成が一番ポピュラーっぽいです。すべてさくらVPS内でもっていました。データベースとか含むとこんな感じの構成です。OSCentOS環境構築Chefと手動WebサーバーNginxFastCGI化したGoアプリSupervisorDBMySQLRedis所感ベタな構成なのですが、すべてがVPS上においてあってサーバー構築も時間かかるしセキュリティ面も自分で考えなきゃだし結構いろいろ面倒くさい。サーバー構成も忘れやすいし、もしぶっ壊れた場合は復旧が絶対つらいというのが想像できます。DigitalOcean会社でDockerを覚えたのでDocker使うとモテるんじゃないかという下心からとりあえずDocker化してみたいと思いやってみることにしました。あとあきやんさんにDigitalOceanが良いというのをきいたので招待してもらって移行してみました。Platformな感じのサービスで、DigitalOceanに良い感じに環境を構築してデプロイまでやってくれるというステキサービスがあるのでtutum.coを使いました。OSUbuntu環境構築Dockertutum.coWebサーバーGoのGoji(コンテナー)DBMySQL(コンテナー)Redis(コンテナー)所感tutum.coがDockerHubみたいになっていてDockerイメージをprivateで管理することができます。Dockerを使うためのOSがデフォルトがUbuntuという謎構成だったのがつらいのと、とりあえず動くっちゃ動くのですが、MySQLコンテナーはデータの永続化させようとすると色々面倒くさいのでMySQLをコンテナーにするのはよくないなぁと思いました。すべてをDockerのコンテナーとして動かすというのは成功しましたが実際の本番運用はつらいです。SQLを使うことにしました。MySQLとかデータ系はそれ専用のサービス使うのが一番良いなって思います。CoreOSにしました。SQL)Redis(コンテナー)所感これでやっと安心して運用できるかなと思いました。スケールアウトはできないですが、そこまでアクティブなサービスではないので妥協しています。まとめこんな感じでGoで個人開発したものを安く公開できる環境は整ってきていると思うので、Go人口が増えたら良いなぁと思ってます。funnythingz。