Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
rails_rdm_revieee
Search
morioka shuhei
July 20, 2017
0
1.2k
rails_rdm_revieee
morioka shuhei
July 20, 2017
Tweet
Share
More Decks by morioka shuhei
See All by morioka shuhei
20191103_小山高専_卒業生講話
selmertsx
1
210
20190306_serverless_meetup_tokyo_11
selmertsx
5
1.6k
aws_reinvent_recap
selmertsx
2
270
aws_reinvent_recap_chaos_engineering_to_serverless
selmertsx
1
1.2k
2018_03_speeekaigi
selmertsx
1
370
sam_on_aws_2018_startup_days
selmertsx
1
300
20171019_aws_startup_tech
selmertsx
1
6.8k
2017_jaws_ug_night_shuhei
selmertsx
3
4.4k
revieee
selmertsx
0
350
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
43
6.6k
Learning to Love Humans: Emotional Interface Design
aarron
272
40k
Designing Experiences People Love
moore
138
23k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Agile that works and the tools we love
rasmusluckow
327
21k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Building Applications with DynamoDB
mza
90
6k
Teambox: Starting and Learning
jrom
132
8.7k
A designer walks into a library…
pauljervisheath
202
24k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Testing 201, or: Great Expectations
jmmastey
38
7k
Music & Morning Musume
bryan
46
6.1k
Transcript
Rails Developers Meetup #03 2017/07/20 (Thu) Heroku Review Apps Like
な Rails 確認環境の自動構築ツー ル Revieee について 株式会社Speee ヌリカエ兼開発基盤部エンジニア 森岡周平
今日の発表の目的 Revieee というOSS について興味を持ってもらう! そのために、 下記のことについて把握できる Revieee とは何か Revieee は何をしたいのか
Revieee の仕組みの全体感 Revieee の現状の進捗 今後の開発の方向性
自己紹介 名前: 森岡周平 GitHub Account: Selmertsx 会社: Speee 所属部署: 開発基盤部
/ ヌリカエ 最近やっていること: FF12
Agenda Revieee って何? Revieee でやりたいこと Revieee の構成 Revieee の使い方 (
理想) Revieee の使い方 ( 現実) 現在の状態 これからの予定
Agenda Revieee って何? Revieee でやりたいこと Revieee の構成 Revieee の使い方 (
理想) Revieee の使い方 ( 現実) 現在の状態 これからの予定
Revieee って何? GitHub リポジトリにbot を招待/webhook 登録だけで 使える( 予定) 社内版の Heroku
Review Apps
作った背景
None
問題整理 僕がいるプロダクトはアジャイルで開発している 成果物の確認は機能が出来たら都度行っている 確認して問題無ければ即リリー ス エンジニアの人数 > 確認環境の数 成果物が溜まって確認環境が渋滞 声掛け運用が発生!!
この問題を解決するために 確認環境の数 = 成果物の数にしたい PR 毎に確認環境が作られるシステムが必要になる
既存ツー ル調査
Heroku Review Apps Heroku の提供する開発支援ツー ル. GitHub にpull request を作
ると、PR 単位で確認環境が出来上がる Pros メンテナンスフリー 設定が圧倒的に楽 Cons 無料だとアクセスするIP の制限を入れられない Enterprise だと年間 $20,800 ( 契約金のみ) 利用するミドルウェアのバー ジョンが指定不可
Paus dtan4 さん製のdocker swarm をベー スとしたツー ル Pros local machine
で動いているものを、 そのままcloud に持っていける Cons docker swarm クラスタの管理が手間 container のlog 確認がつらい
Migrate to ECS (issue in Paus) docker swarm ベー スのシステムをECS
ベー スで作り 直す予定とのこと! 僕たちも、ECS ベー スで作ることに!
ツー ル開発の目的 環境構築、 声掛け運用をやめて開発効率向上 (option) Speee 社員が参加しやすいOSS を作る そのためにやること PR
作ったら簡単にできて メンテナンスがいらない そんな確認環境作ってくれるツー ルを GitHub でOSS として開発する
Agenda Revieee って何? Revieee でやりたいこと Revieee の構成 Revieee の使い方 (
理想) Revieee の使い方 ( 現実) 現在の状態 これからの予定
Revieee の構成要素 Application Server(Rails) nginx ECS MySQL 上記構成要素の役割を、 下記2点の処理から説明する コンテナのデプロイ
確認環境へのアクセス
その前にECS のおさらい
ECS(EC2 Container Service) AWS 上でDocker コンテナを いい感じに扱うためのサー ビス
ECS の構成要素 ※ この後図を使って説明するので、 ざっと聞いてもらえると! Task: Docker コンテナを意味ある粒度で動かしてるもの docker-compose で扱うコンテナ群のイメー
ジ TaskDe nition: Task の設計書。 使うDocker Image のPath、 コンテナに使う CPU/ メモリリソー スや環境変数などを保持. Service: Task の配置設定( 起動数・ 配置場所・autoscaling) デプロイ、ELB との紐付けなどを行う ECR(EC2 Container Registry): Docker Image 置き場.
ECS のイメー ジ(Task/TaskDe nition/ECR) task はアプリケー ションを構成するコンテナ群( 例)
単一Rails アプリ in ECS service は ELB とTask を繋いで、 アクセスをいい感じ
にTask に割り振れるようにする
複数サー ビス in ECS ( 例: ヌリカエ) LP と通常のApplication を別のservice
とした例 同一クラスター に複数サー ビスを立ち上げたりできる
ECS の話は以上! 疑問ある人はあとで質問 してください
Revieee の設計に戻ります
Revieee でやりたいこと PR 単位で確認環境が構築される コンテナをBRANCH 指定で動かしたい PR 単位でユニー クな接続用URL を用意したい
ECS で実現するための方法 任意のTask をBranch 指定して起動させる 任意のTask に接続できるようにする Task のPort と、deploy 先のEC2 IP
任意のTask をBranch 指定して起動させる Task De nition にAPI でBranch の環境変数を渡して、 直接Task
を起動させる
Branch を指定したコンテナ起動フロー
こんな感じでコメントされる
確認環境へのアクセス
Agenda Revieee って何? Revieee でやりたいこと Revieee の構成 Revieee の使い方 (
理想) Revieee の使い方 ( 現実) Revieee の現状とこれから
Revieee の使い方 ( 理想) webhook を登録して GitHub リポジトリにbot を招待するだけで 任意のPR
に対して確認環境が作られる ( カンタン!!)
Revieee の使い方 ( 現実) Docker Image を作成しECR に登録 Task De
nition の設定ファイルを作成 Webhook の登録 GitHub リポジトリにbot を招待 PR 毎に確認環境が構築される
現在の設定の理由 Docker Image はユー ザー がハンドリングしたい MySQL のテストデー タの更新など どう自動化するのが適切か見えてないものもある
コンテナ毎の各種設定な 一旦は、 自動化せずに素朴な仕組みで運用してみて 知見を集めた後に自動化の方向性を探りたい
Agenda Revieee って何? Revieee でやりたいこと Revieee の構成 Revieee の使い方 (
理想) Revieee の使い方 ( 現実) Revieee の現状とこれから
Revieee の現状 Speee 内でいくつかのプロダクトに導入済み BitJourney さんにも導入準備中 今開発しているもの nginx 周りのdocker 対応
コンテナデプロイ機能の改修 Rails => AWS Lamba リプレイス
これからの開発方針 簡単に構築できるようにする cloudformation とDocker だけで完結させたい 簡単安全に運用できるようにする ECR の権限管理を容易にする 適切なspot instance
を選べるようにする 管理画面.... 作るかなぁ...
その他見えている課題 複数リポジトリにまたがるものアプリの対応 フロント/web でリポジトリが分かれてるやつ Docker Image の初期DL が遅い Docker Image
の置き場をEFS にしてみる? 放置されるPR の対応どうしよう Container リソー スの無駄遣いに Task を更新する際 connection drawing できない PR 更新したら、 接続がブチッと切れる
確実に負債になるもの rails のDocker Image を自動更新しないので 定期的に作り直さないと bundle install 系がどんどん 重くなってく予定
まとめ Revieee は AWS ECS をベー スに動いてます Speee でいくつかのチー ムに使って貰ってます
現在、 簡単に構築できるように開発中です!! そしたら、 みなさん使って頂いて Issue & PR くれたらうれしいっす! やることはいっぱい ご意見、 ご要望お待ちしております
発表は以上になります! もし興味を持って頂けたら https://github.com/speee/we bapp-revieee
宣伝 OSS Gate 東京ミー トアップ for Red Data Tools in
Speee 7/25 https://speee.connpass.com/event/62324/