AutoScalingを使ったシステム運用でのデプロイ方法（泥臭いver）

## はじめに
スマートなデプロイ方法はまだ社内では確立出来ていないので、現在対応出来る方法を考えました。
稼働中のwebへのデプロイはCapistranoやAnsible・Jenkinsなど使用するのが望ましいです。
ここでの説明は割愛します。

## 基本構成
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/2164/60057/e379c85e-4f82-8d29-9bac-4b74e634c768.png "Untitled.png")
### 説明
- ELB+web2台構成(複数台構成であればよい)
- masterはAutoScalingで起動していくインスタンスのベースとなる
- 必ずいずれのインスタンスもステートレスであること
- webに対してOSやミドルウェアの構成に変更があった場合は必ずmasterを再作成すること
- 通常は停止しておき、masterはデプロイ時にのみ起動することでコスト削減。EIPも振らない。
- webやmasterへのデプロイはCapistranoやAnsible・Jenkinsなど使用するのが望ましい

## デプロイ後のイメージ
![Untitled2.png](https://qiita-image-store.s3.amazonaws.com/2164/60057/afc8f800-5016-9750-9c55-9ae2750ac283.png "Untitled2.png")

### 説明
- masterへのデプロイはCapistranoやAnsible・Jenkinsなど使用するのが望ましい
- masterへデプロイしたらAMI作成
- LaunchConfigrationを上記で作成したAMIのinstance-idを設定

## 各AWSリソースの構成
### EC2
![スクリーンショット 2015-07-16 01.39.53.PNG](https://qiita-image-store.s3.amazonaws.com/2164/60057/f860ad47-1729-63f5-21ee-323657ccd268.png "スクリーンショット 2015-07-16 01.39.53.PNG")
![スクリーンショット 2015-07-16 01.44.01.PNG](https://qiita-image-store.s3.amazonaws.com/2164/60057/2f9af7de-037d-ddd1-654d-e0bcfec37fa3.png "スクリーンショット 2015-07-16 01.44.01.PNG")

### ELB
![スクリーンショット 2015-07-16 01.41.37.PNG](https://qiita-image-store.s3.amazonaws.com/2164/60057/f38e0cf2-2a36-5d57-901b-bef705e5395b.png "スクリーンショット 2015-07-16 01.41.37.PNG")

### Launch Configurations
AMI IDが上記のAMI IDと同じであることを確認。
![スクリーンショット 2015-07-16 01.42.40.PNG](https://qiita-image-store.s3.amazonaws.com/2164/60057/34abfc63-9b93-e0ed-c1d5-5cfc55fa950c.png "スクリーンショット 2015-07-16 01.42.40.PNG")

### Auto Scaling Groups
![スクリーンショット 2015-07-16 01.46.35.PNG](https://qiita-image-store.s3.amazonaws.com/2164/60057/44d663ad-ee2b-78a0-ea75-ae3e9cbec399.png "スクリーンショット 2015-07-16 01.46.35.PNG")
![スクリーンショット 2015-07-16 01.47.09.PNG](https://qiita-image-store.s3.amazonaws.com/2164/60057/61b95e32-81b4-3198-8d97-2b7cc607d665.png "スクリーンショット 2015-07-16 01.47.09.PNG")
![スクリーンショット 2015-07-16 01.47.40.PNG](https://qiita-image-store.s3.amazonaws.com/2164/60057/d1c41159-ba04-e76e-0990-f60ca2585fc2.png "スクリーンショット 2015-07-16 01.47.40.PNG")
![スクリーンショット 2015-07-16 01.48.13.PNG](https://qiita-image-store.s3.amazonaws.com/2164/60057/70f9c56f-8ac6-e797-2dad-c1de7b9d460b.png "スクリーンショット 2015-07-16 01.48.13.PNG")

## デプロイしAMI再作成後、Launch Configurations再作成＆Auto Scaling Groups更新
### 手順①masterへデプロイ後、AMI作成
![create_image2.jpg](https://qiita-image-store.s3.amazonaws.com/2164/60057/224b09ba-0d89-78c0-5afe-c865931691d4.jpeg "create_image2.jpg")

![create_image.jpg](https://qiita-image-store.s3.amazonaws.com/2164/60057/9ede7ee3-9b94-1658-1a42-f17be8938b0d.jpeg "create_image.jpg")

### 手順②Launch Configurationsをコピーし再作成
![launch_configuration1.jpg](https://qiita-image-store.s3.amazonaws.com/2164/60057/83a9f1bc-c768-b57d-0830-15bc55b20470.jpeg "launch_configuration1.jpg")
以下、変更するポイントのみ記載
![launch_configuration2.jpg](https://qiita-image-store.s3.amazonaws.com/2164/60057/eeac77da-2b5c-1fb8-bc1b-0b4b6e36da80.jpeg "launch_configuration2.jpg")

＜変更前＞
![launch_configuration3.jpg](https://qiita-image-store.s3.amazonaws.com/2164/60057/1a0e5867-757b-81fa-29f4-091e643b3fe9.jpeg "launch_configuration3.jpg")
＜変更後＞
![launch_configuration4.jpg](https://qiita-image-store.s3.amazonaws.com/2164/60057/097ed73e-c7ad-028d-e7d8-928100d9db44.jpeg "launch_configuration4.jpg")

"Launch-Configuration-v1.1"という名前でv1,0をコピーし作成された。
![launch_configuration5.jpg](https://qiita-image-store.s3.amazonaws.com/2164/60057/6eb9fef3-271d-3257-eed3-49711d623de3.jpeg "launch_configuration5.jpg")

### 手順③Auto Scaling Groups更新
![asg4.jpg](https://qiita-image-store.s3.amazonaws.com/2164/60057/57acc02f-2475-022d-aa95-d9227758d31b.jpeg "asg4.jpg")

![asg2.jpg](https://qiita-image-store.s3.amazonaws.com/2164/60057/ae956678-d338-2def-f7f7-b06f280efa6d.jpeg "asg2.jpg")
![asg3.jpg](https://qiita-image-store.s3.amazonaws.com/2164/60057/1aba6421-fdaf-3d7d-e2c2-2f98165efc8e.jpeg "asg3.jpg")


## さいごに
泥臭いけど大規模なシステム運用でなければ、このような流れでよいと思います。
もちろんスマートな方法を社内の開発支援チームが確立してくれると期待しています。

よろしくお願いします(・ω<)