ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Blue Green Deploymentについて、きいていた!

2016-11-04 13:23:59 | Weblog
11月3日、「PHPカンファレンス2016に行ってきた!」つづき

 Chefとnginxで作るPHPアプリケーションの
 Reliable Blue Green Deployment

をメモメモ

※ちなみに、Blue-Green Deploymentとは
1.現在動いている環境がBlue
2.あたらしい環境を構築し、それをGreenとする
3.Greenが構築し終わったら、ネットワークをBlueからGreenに向ける
とダウンタイムなしできりかえられるというもの
nginxだと、reloadを使う(restartではない)ことで実現できるらしい。





1.BaseとBaseにおけるSRE
・Baseという会社について
  NASE:お母さんも使えるネットショップさーぷす
    PHP+CあけPHP製
  PAY.JP
    PyThon

・BASEにおけるSRE(さいとりらいあびりてぃえんじにあ)
 サイト信頼性エンジニア
  Xインフラエンジニアかっこいい言い方
   サービスの安定稼動

 →デプロイフローについて、今日は話す

2.デプロイの歴史と環境の整備

・デプロイの歴史的経緯
  BASEのアーキテクチャ
   ロードバランサ
   Web
   DB
・デプロイ手順
  結構やること多い・自動化
  本体の設置、複数の自作Pluginを設置、作成されるファイルキャッシュの削除
 →本体+プラグイン
  GiTリポジトリ 50数個 同時デプロイ

・以前のBASE
 以下を全サーバーに行う
  ELBから切断
  deploy
  ELB接続してアクセスできる
 一台一台手作業
 SSHのターミナルを台数分開いて

・簡単・健全なデプロイとは
  出来るだけ自動で
  出来るだけ並列で
  出来るだけ無停止で

・デプロイ手法候補1
 Capstrano:Ruby
  Capstrano式デプロイ
    release,sharedをつくる
    git clone
    currentにリンク:シンボリックリンクを切り替える
  Comporserなし:無理っぽい
  ・Rubyの設定ファイル
  ・デプロイ方法の管理
  ・共通の処理の共有
  本体+と子のリポジトリ同時の設定
  個人環境の設定必要

・デプロイ候補2
 Chef
  Chef Server
  Chef Client
 デプロイ形式はCapodtrano式
 解決?

 必須:同じ構成
  →設定手順書はない
   中身が同じ構成ではない
   なにが動いているのか、だれも把握していない
 構成管理のコードが一応手順書代わりになる
  serverspecで挙動確認

 同じ構成でやりたいよね

・Blue Green
  Blue
  Green:デプロイ済み
 全サーバー同じ構成

・PHPのコードをデプロイするため
 (1)Chef
 (2)Deploy Webhook インテグレーションAPI
 →結局Rubyにやらせている
  →Chefと相性

・ロードバランサーについて
 nginxでやっている
  HTTP2
  デプロイだけだったら、ELBだけでもよかった
  →アクセスが限界を越えると、アクセス遮断してスケール
   HTTP2に非対応
(3) nginx
   サーバー
   service nginx reoad 

3.デプロイの流れ
・BlueGreen必要なもの
 ・自動化されていること
 ・クラウド
   ネットワークスイッチで切り替える
    サーバーを消すことは出来れば
 ・必要なものは残して生きたい
   サーバーのログは宝の山
・デプロイメント
 Step1
  release publish (webhook) 管理サーバー
  ssh host "chef-client"
   deploy only instance
  AMI

 Step2
  管理サーバーからrun_instances
   デプロイサーバー Green

 Step3
  ELBでサーバーBlue Green切り替え
  →ELBは、デプロイするだけ

 Step4
  nginxでサーバーBlue Green切り替え
   ネットワークインスタンスを切り替え
   
 Step5.6,7,8
  nginxがblueを向いている
  service nginx reload
  nginxがgreenを向いている

 デプロイ後のあとしまつ

4.Baseのデプロイの未来
 全てを自動化に(SQL以外)
  circleci
 古い機能については、レストコードがあまりない
  comporserいれたい
 composer install

 デプロイできる人を増やしたい
  カジュアルアップデートしたい
  BlueGreenはやめられない

 Botさん
  デプロイをslack軽油で

・CM
 募集中
 サービス使って!

・質疑応答
 ELBの存在
 Green構成のとき、インスタンスIDはとれる。それを使って、IPを振る
 そのIPをnginxが使う

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« PHP7.1の改良点とか、5.5... | トップ | (PHPUnitではなく)PHPで表... »
最新の画像もっと見る

Weblog」カテゴリの最新記事