Slide 1

Slide 1 text

デプロイについて⾔言いたい1つのこと 2017/04/12  Skill  Wednesday yu0819ki@CyberZ

Slide 2

Slide 2 text

もくじ • じこしょうかい • デプロイとは • デプロイについて⾔言いたい1つのこと • 実例 • おわりに

Slide 3

Slide 3 text

じこしょうかい Name:   ⽊木村 幸弘 a.k.a  yu0819ki Birthday:   1985.08.19 Age:   31 Birthplace: 北海道 Job: 技術戦略室フロントエンド担当 Hobby: ⾳音ゲー、読書、作曲 Motto: パンが無ければ作ればいいじゃない Topics 近々CircleCI  と CodeDeployの詳細連携とか、API  Gatewayのこととか話します。

Slide 4

Slide 4 text

デプロイとは Ø ソフトウェアの分野で、開発したソフトウェアを利⽤用できるように 実際の運⽤用環境に展開すること Webアプリケーションにとっては、リモートサーバ上にアプリケー ションを配置し、所定のポート(80,  443,  8080,  9000  など)経由でアク セスできるようにすることかな。 【主な⼿手順】 1. Gitからソースを落としてくる 2. 何らかのビルドをする 3. リモートサーバに転送する 4. リモートサーバ上の所定の位置に配置する 5. 外部からアクセスできるように起動したりする (1,2はCIサーバ上で⾏行うことが多いかなと思う)

Slide 5

Slide 5 text

デプロイについて⾔言いたい1つのこと 切り戻し、考えてますか?

Slide 6

Slide 6 text

実例 • よくないと思う例 • mv  /tmp/app/*  /var/www/app • 元のソースが消失している • mv  /var/www/app  /var/www/app.bk mv  /tmp/app/*  /var/www/app • ⼀一瞬 /var/www/app  が消失しているため、ファイル数が多いとサービスダウンする • cp  ‒–rp  /var/www/app  /var/www/app.bk mv  ‒–r  /tmp/app  /var/www/app • 世代管理が出来ない • ALTER  TABLE  `̀hoge`̀  CHANGE  COLUMN  `̀app`̀  `̀apps`̀  [DEFINITION]; • ソースの切り戻しが会ったときに、DBも戻さなきゃいけない

Slide 7

Slide 7 text

実例 • ⾃自分がよくやる例 • mv  ‒–r  /tmp/app  /var/www/releases/app-‑[commit  id] ln  ‒–snf  /var/www/releases/app-‑[commit  id]  /var/www/app • シンボリックリンクを張り直すだけでもとに戻るし、即時反映される • ALTER  TABLE  `̀hoge`̀  ADD  COLUMN  `̀apps`̀  [DEFINITION]; UPDATE  `̀hoge`̀  SET  `̀app`̀  =  `̀apps`̀; • 作業時にロックかける必要はあるだろうけど、既存ソースでも新規ソースでも動く

Slide 8

Slide 8 text

おわりに 実例で上げたのは、ディレクトリ/ファイル単位での切り戻し。 実⾏行環境ごと切り戻しができるBlueGreenDeploymentについて も検討しよう。 あと、ビルドとデプロイは分けておくほうが取り回しが楽。

Slide 9

Slide 9 text

ご静聴ありがとうございました

Slide 10

Slide 10 text

付録:関連する過去のスライド • ⼑刀狩り for  Jenkins https://speakerdeck.com/yu0819ki/dao-‑shou-‑ri-‑for-‑jenkins