環境要らずの環境構築

#概要
- :frowning2: 開発環境構築には、もう疲れた (╯°□°）╯︵ ┻━┻

- :frowning2: Chef, Itamae, Ansible… どれだけアップデートしても、またトレンド変わるんでしょ (╯°□°）╯︵ ┻━┻

- お仕事はアプリケーションエンジニア。そこじゃないんだよ、やりたいことは。そこは価値を生んでない。車輪なのだよ。

そう。アプリケーション開発がしたい。
そんな集中できる環境を目指して、AWSを極限まで使ってみる。
AWSに踊らされてみる。


なお、AWSでは…

- 2017/12 東京リージョンでも、 CodeStarがサービス提供開始
- 2017/11 他のリージョンで、(CodeStarに連携した)Cloud9がサービス提供開始

まさにタイムリー。


#リージョン選択
- 使用できるリージョンが限られる
- コストは最小に抑えたい 
- but それなりのレスポンスで使いたい

↓　を統合的にみて、
us-west-2(Oregon) 採用

* レイテンシ、若干ミスった気もするけど、今のところ体感そんなにかかってない。cloud9無問題

|  **リージョン** |  | **CodeStar** | **Cloud9** | **ほか** | **EC2平均価格<br/>（対Verginia比）<br/> *1** | **東京からの<br/>httpレイテンシ (ms)<br/>*2** | **東京からの実距離(Mm)** |
|  ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ |
|  **ap-northeast-1** | **Tokyo** | 〇 |  |  | 1.48 | 43 |  |
|  **ap-southeast-1** | **Singapore** | 〇 | 〇 |  | 1.5 | 180 | 5.3 |
|  **ap-southeast-2** | **Sydney** | 〇 |  |  | 1.44 | 272 | 7.8 |
|  **ap-northeast-2** | **Seoul** |  |  |  | 1.45 | 83 | 1.1 |
|   | **ムンバイ** |  |  | x: CodeBuild |  |  |  |
|  **us-east-1** | **Virginia** | 〇 | 〇 |  | 1 | 293 | 10.9 |
|  **us-west-1** | **California** | 〇 |  |  | 1.21 | 264 | 8.5 |
|  **us-west-2** | **Oregon** | 〇 | 〇 |  | 1 | 409<br/> (調査により結構ブレる) | 8 |
|   | **カナダ** | 〇 |  |  |  |  |  |
|  **sa-east-1** | **Sanpaulo** |  |  | x:CodeBuild | 1.75 | 722 | 18.5 |
|  **eu-central-1** | **Frankfrt** | 〇 |  |  | 1.18 | 618 | 9.5 |
|  **eu-west-1** | **Ireland** | 〇 | 〇 |  | 1.09 | 603 | 9.6 |
|   | **ロンドン** | 〇 |  |  |  |  |  |
|   | **パリ** |  |  | x:CodeBuild<br/>x: CodeCommit<br/>x:CodePipeline |  |  |  |


### 参考: (他人のふんどし)

*1. [AWS EC2 リージョン別 料金比較](https://qiita.com/koshilife/items/d0b9d978e2f6ed03b785)
*2. EC2リージョン別応答時間
- 2016年: https://qiita.com/toritori0318/items/5bd5ba7c609fda7292f6
- 2014年: http://www.denet.ad.jp/technology/2014/01/vol9-aws.html



# 導入手順
以下の記事に従う。なかなかスムーズ。

https://qiita.com/hayao_k/items/743be4d8f5e21844ed51

|   |  |  |  |
|  ------ | ------ | ------ | ---------------- |
|   |  |  |  |
|  トップページ | ![step1.png](https://qiita-image-store.s3.amazonaws.com/0/9701/41443f95-7bed-1fbb-ed5a-4f0e28b4a9a0.png) |  |  |
|  テンプレート選択 | ![step2.png](https://qiita-image-store.s3.amazonaws.com/0/9701/91ab998d-da4d-29d4-b852-ce32c4e90e88.png) | 各言語 / フレームワーク<br/>×<br/>EC2 / Elastic Beanstalk / Lambda |  |
|  レポジトリ選択 | ![step3.png](https://qiita-image-store.s3.amazonaws.com/0/9701/538027b8-5d9f-ddd0-91d7-b6b3b8130e22.png) | プロジェクト名入力<br/>レポジトリ<br/>（CodeCommit = BitBucket） GitHub |  |
|  構成概要の確認 | ![step4.png](https://qiita-image-store.s3.amazonaws.com/0/9701/17c7d274-0e68-6fe1-b463-ec353b18027f.png) | レポジトリ ビルド テスト デプロイ 本番モニタリングのシステム構成<br/><br/>←は Javaを選んだので、ビルドが入った。<br/>Rails / Express などでは入らない |  |
|  キーペアの登録 | （撮り忘れた） |  |  |
|  開発ツールの選択 |![step5.png](https://qiita-image-store.s3.amazonaws.com/0/9701/8d2f48d2-ef59-c7fd-c54a-b2812c8134ea.png)<br/>![step6.png](https://qiita-image-store.s3.amazonaws.com/0/9701/d2dcdda0-fded-1ffd-365c-6d5426969438.png)  | 事後変更可能。<br/>また、チーム内のメンバー毎に変更可能<br/><br/>CUI IDE: Eclipse / VisualStudio WebIDE: Cloud9 RailsTutorialでも推奨されている統合開発環境。 ボタン一つでサービス起動も。 今回はコレ。無料利用できるというはずの t2.microで。 |  |
|  ダッシュボード（初期化中） |![step7.png](https://qiita-image-store.s3.amazonaws.com/0/9701/7e43aec8-1d15-9d21-6087-a407b4bda1f9.png)  | 数分の「作成中」表示の後セットアップ完了 |  |
|  ダッシュボード | ![step8-1.png](https://qiita-image-store.s3.amazonaws.com/0/9701/59410bb8-4f7d-a67a-6ae9-c1492c62f8de.png)<br/>![step8-2.png](https://qiita-image-store.s3.amazonaws.com/0/9701/acc658a1-9e78-4b9a-0f7f-a4cbc7946976.png) | プロジェクトダッシュボード。<br/><br/>構成は加工可能。<br/>画面右側の「アプリケーションのエンドポイント」で<br/>現masterの物件（要は staging or 本番）が表示可能 |  |
|  Cloud9 | ![step9.png](https://qiita-image-store.s3.amazonaws.com/0/9701/629c5d5f-da6a-b700-aaf4-669054c13302.png) | IDE ですね。<br/>「Run」でサービス起動。<br/>画面下端のコンソールでコマンド操作なども可能。<br/>コミットもボタン・ショートカットで一撃。<br/><br/>IDEとしての設定も豊富。<br/><br/>ソース外の部分の設定（ベースとするVMテンプレート、コマンドインストールなどなど）もある程度設定可能らしい (要調査） |  |




# 社内開発環境との対比
要は、AWSで一撃で、

開発VM, bitbucket, jenkins, jira, deploy, staging環境, private DNS　まで用意してくれる

※ まだ使いこなせてなくて、ドキュメントの誤読は多分にふくまれるかと思いますが…

|   | **今回の環境** | **現職での開発環境** | **備考・制限** |
|  ------ | ------ | ------ | ------ |
|   | Cloud9<br/>t2.micro | 開発VM | - 各種IPも設定済み<br/> - nginx / apache なども設定済み<br/> - デフォルトでは30分でインスタンスを自動終了<br/> - 開発スタイルに応じて、選択可能 |
|   | sqlite3 | 開発DB | - default設定の話。設定はほぼ同等に必要そう。  |
|   | VPC | powerDNS | - 各種IP設定済み(開発環境・本番環境とも） |
|   | CodeCommit | BitBucket | git, branch, PR…基本同じ<br/> - 1Prjあたり、メンバー数いくらでも。（IAM設定）<br/> - 1リージョンで333Prjまで。<br/> - 1メンバーで、10Prjまで参加可能。 |
|   | Jira Croud | JIRA | - 初期7日間無料 |
|   | CodeBuild<br/>CodeTest | Jenkins | - マージからの自動ビルド・テスト |
|   | CodePipeline | Deploy, Capistrano | - デプロイ<br/>- マージ→ビルド→テスト→デプロイ まで一気通貫<br/>- 編集/追加可能<br/>-- but 「壊れても保証しません！」 | staging AP / DB |  |
|   | EC2<br/>Elastic Beanstalk<br/>Lambda | 本番環境AP | EBStackなら自動スケールアウトまで。<br/>最初から動く状態で手配されている (T-T)<br/>ここでインスタンス料金が課金される |
|   | (自分で設定) | - 本番DB<br/>- 本番Memcache<br/>- 本番FS<br/>- ... | ここら辺は要調査 |
|   | Elastic Beanstalk | 本番LB / VIP管理 | 自動スケーリング、部分アップデート…<br/>夢が広がります |
|   | Route 53 | ドメイン設定 | 9 USD/年 (目安。ドメイン次第）<br/>設定容易 |
|   | Certificate Manager | SSH証明書 | 無料 & 統合管理 |
|   | CloudWatch | Mackerel<br/>logentries |  |


# 直近のTODO
- [ ] 実Railsコード（サンプルアプリ）で本番まで使い倒す
- [ ] 環境別の設定（DB/FS/TD/...）
- [ ] インスタンス毎のイメージ設定など
- [x] 費用測定
 -> 343円 (本番環境 自動デプロイで一か月放置:sweat_smile: )