Slide 1

Slide 1 text

GitHub + ECS で快適Review 環境 2017/07/21 JAWS-UG コンテナ支部 #9 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 2

Slide 2 text

天野太智 @pataiji 株式会社Speee リー ドエンジニア 開発基盤グルー プ 兼務 好きなAWS のサー ビス: CloudFormation, Systems Manager ( 最近娘がパパっ子になってきて嬉しい) 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 3

Slide 3 text

webapp-revieee https://github.com/speee/webapp-revieee 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 4

Slide 4 text

動作イメー ジ GitHub にWebhook を登録するだけ PR 作ったら確認環境が立ち上がる 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 5

Slide 5 text

背景 Review 環境の渋滞 多数の独立したプロダクト 既存ツー ル 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 6

Slide 6 text

Review 環境の渋滞 Development / Staging / Production 複数のエンジニア / 案件 / レビュアー 声掛け運用で解決 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 7

Slide 7 text

多数の独立したプロダクト 社内に10 以上のプロダクト それぞれ独自の開発体制 全社で画一的な環境を用意するのは現 実的でない 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 8

Slide 8 text

全社共通の Review 基盤が 求められている 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 9

Slide 9 text

既存ツー ル Heroku Review Apps メンテナンスフリー 設定が圧倒的に楽 IP によるアクセス制限ができない (Enterprise は可) ミドルウェアのバー ジョンが指定不可 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 10

Slide 10 text

既存ツー ル Paus https://github.com/dtan4/paus Docker Swarm ベー ス docker-compose.yml を用意してgit push するとcontainer が立ち上がる Docker Swarm の管理が必要 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 11

Slide 11 text

ECS ベー スで実装しよう 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 12

Slide 12 text

実装面 ( とツラみ) 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 13

Slide 13 text

EC2 1 台 Nginx Ruby on Rails ECS + SpotFleet ECR 全体構成 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 14

Slide 14 text

ECS + SpotFleet 必要そうなリソー スをざっくり見積も って運用 落ちても大きな問題がない環境なので あまり気を使っていない 今後AutoScale するようにしていく 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 15

Slide 15 text

PR 作成時のワー クフロー 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 16

Slide 16 text

ブランチ指定してTask を実行 PR にhook して指定したブランチの最新のcommit をpull してきてTask を起動したい ECS はTaskDe nition でImage を指定するのでTask 起動時にImage を変更することはできない 悩んだ結果 ENTRYPOINT で頑張ることに 漂うコレジャナイ感 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 17

Slide 17 text

ブランチ指定してTask を実行 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 18

Slide 18 text

ブランチ指定してTask を実行 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 19

Slide 19 text

ワー クフロー(Review 環境アクセス時) 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 20

Slide 20 text

ホストベー スルー ティング Task へのアクセスポー トは動的に変化 Nginx(OpenResty) + MySQL で動的にproxy 初回アクセス時のみMySQL にアクセスし以降はキ ャッシュ Paus はVulcand を使用しているそう 漂うガンバッテル感 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 21

Slide 21 text

ホストベー スルー ティング 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 22

Slide 22 text

ECS を選んで思うこと やりたいことを比較的簡単に実現することが できた クラスタ管理はほとんど考える必要がない ので考えることが少なく済んだ Task 起動時にImage のTag を変更したい...! docker-compose.yml をAPI に投げられると嬉 しい 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 23

Slide 23 text

最後に webapp-revieee はまだまだβ もう少しでCFn 一発で環境が立ち上がる状態にでき そう いい感じになったらブログ(http://tech.speee.jp/) とかで告知すると思います 使ってみてFB いただけると嬉しいです...! 2017/07/21 JAWS-UG コンテナ支部 #9

Slide 24

Slide 24 text

ありがとうございました 2017/07/21 JAWS-UG コンテナ支部 #9