Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitHub+ ECSで快適Review環境

pataiji
July 21, 2017

GitHub+ ECSで快適Review環境

pataiji

July 21, 2017
Tweet

More Decks by pataiji

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. 動作イメー

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

    View Slide

  5. 背景
    Review
    環境の渋滞
    多数の独立したプロダクト
    既存ツー

    2017/07/21 JAWS-UG
    コンテナ支部 #9

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  9. 既存ツー

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

    View Slide

  10. 既存ツー

    Paus
    https://github.com/dtan4/paus
    Docker Swarm
    ベー

    docker-compose.yml
    を用意してgit
    push
    するとcontainer
    が立ち上がる
    Docker Swarm
    の管理が必要
    2017/07/21 JAWS-UG
    コンテナ支部 #9

    View Slide

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

    View Slide

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

    View Slide

  13. EC2 1

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide