インフラブログ

とあるWEBサイトのインフラを構築運用するメモ

ChatOpsなデプロイ環境にしたい

新しい案件の話しがあり、インフラ構成、デプロイ周りをどうしようかと考えていました。 前までクラウドAWS一択でしたが最近はGCPなどにも興味があり、 「とりあえずDockerが動くクラウドならうちらが作るアプリも動くだろう」 というスタンスでDockerを積極的に使おうとしています。

Docker環境でのデプロイとなると、下記の手順になるでしょうか。

どこかにプッシュしたとか、なんらかのイベント発生をトリガとして他のサービスに通知したり、APIを叩いたりとサービス間の連携ができることが最近多いので、上記の手順も流れるように行えるでしょう。 Dockerイメージを作るより前の工程がいくつかありますが、これらも同様に自動化できるので一連の流れでデプロイできそうで、図にしてみたらこんな感じになりました。

  • デプロイの流れ
local hipchat    hubot    github   circleci   docker     kubernetes     staging
                                             registry    aws ecsとか?   production
             deploy
         -------->
                       pr, merge  
                    --------> 
                                   test
                             ---------> 
                                           docker push
                                      ----------> 
                                                      push notify
                                                 ------------> 
                                                                    docker run  
                                                              --------------> 
                                                                    container 切り替え

Dockerイメージを作る前に hipchatやgithubなど使っていますが以下のところにメリットがあると思っています。

  • hipchatでdeployの内容が流るとデプロイのタイミングや内容をメンバーで共有しやすい
  • githubのプルリクエスト、マージは今回リリースされる内容がレビューしやすい
  • circleciは、まぁテスト通ってないのにリリースはできないので^^;