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
revieee
Search
morioka shuhei
May 28, 2017
0
360
revieee
Speee社内勉強会用資料
morioka shuhei
May 28, 2017
Tweet
Share
More Decks by morioka shuhei
See All by morioka shuhei
20191103_小山高専_卒業生講話
selmertsx
1
220
20190306_serverless_meetup_tokyo_11
selmertsx
5
1.6k
aws_reinvent_recap
selmertsx
2
280
aws_reinvent_recap_chaos_engineering_to_serverless
selmertsx
1
1.2k
2018_03_speeekaigi
selmertsx
1
380
sam_on_aws_2018_startup_days
selmertsx
1
310
20171019_aws_startup_tech
selmertsx
1
6.8k
rails_rdm_revieee
selmertsx
0
1.2k
2017_jaws_ug_night_shuhei
selmertsx
3
4.4k
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
169
14k
We Have a Design System, Now What?
morganepeng
51
7.3k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Done Done
chrislema
181
16k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.3k
Facilitating Awesome Meetings
lara
50
6.1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
GraphQLとの向き合い方2022年版
quramy
44
13k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
Transcript
Revieee の現状報告 開発基盤部: 森岡周平
今日の発表の目的 社内のエンジニアが下記のことを理解して あんまり不安を持たずにRevieee を使えるようになる (※ そしてPR も送りやすくなる) Revieee とは何か Revieee
は何をしたいのか Revieee の仕組みの全体感 Revieee の現状の進捗 今後の開発の方向性
Agenda Revieee って何? Revieee でやりたいこと Revieee の構成 Revieee の使い方 (
理想) Revieee の使い方 ( 現実) 現在の状態 これからの予定
Agenda Revieee って何? Revieee でやりたいこと Revieee の構成 Revieee の使い方 (
理想) Revieee の使い方 ( 現実) 現在の状態 これからの予定
Revieee って何? GitHub リポジトリにbot を招待/webhook 登録だけで 使える( 予定) 社内版の Heroku
Review Apps
Revieee 開発の目的 全プロダクトの開発効率の向上 Speee 社員がOSS 開発に参加できる場を作りたい Revieee でやりたいこと 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 はアプリケー ションを構成するコンテナ群( 例)
単一Rails アプリ in ECS service は ELB とTask を繋いで、 アクセスをいい感じ
にTask に割り振れるようにする
複数サー ビス in ECS ( 例: ヌリカエ) LP と通常のApplication を別のservice
とした例 同一クラスター に複数サー ビスを立ち上げたりできる
ECS の話は以上! 疑問ある人は質問 してください
Revieee の設計に戻ります
Revieee でやりたいこと PR 単位で確認環境が構築される コンテナをBRANCH 指定で動かしたい PR 単位でユニー クな接続用URL を用意したい
実現するための方法 任意のTask をBranch 指定して起動させる 任意のTask に接続できるようにする Task のPort と、deploy 先のEC2 IP
任意のTask をBranch 指定して起動させる Task De nition にAPI でBranch の環境変数を渡して、 直接Task
を起動させる
コンテナのデプロイ
こんな感じでコメントされる
確認環境へのアクセス
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 の現状 Cycle とVoyager で導入テスト中 課題の洗い出しと導入手順書の作成中 Revieee のこれから ( 直近1
月くらい) 導入手順書ができたら他プロダクトにも展開 Speee 全プロダクトから、issue を集める 基本的に使うハー ドルを下げる方向性で開発!
OSS としてやってくこと Revieee のインフラ環境を何らかの方法で公開 docker image itamae cloudformation Readme 等のドキュメント整備
イベント等での周知
優先度高く対応したい問題 複数リポジトリにまたがるものを対応していない フロント・ アプリのリポジトリが分かれてるの SpotFleet が複数タイプのインスタンスに未対応 インスタンス価格が高騰すると落ちる
その他見えている課題 Task を更新する際 connection drawing できない PR 更新したら、 接続がブチッと切れる Docker
Image の初期DL が遅い Docker Image の置き場をEFS にしてみる? 放置されるPR の対応どうしよう Task 実行されっぱなし
確実に負債になるもの rails のDocker Image を自動更新しないので bundle install 系がどんどん重くなってく予定 branch 毎にbuild
してtag 付けてpush したい...
まとめ Revieee は AWS ECS をベー スに動いてます 現在、Cycle とVoyager に導入中です
導入完了次第、 導入手順書を作ってきます (5 月中) そのタイミングでみんなが使えるようにします そしたら、 みなさん使って頂いて Issue & PR くれたらうれしいっす! やることはいっぱい みなさんのご協力をお願いします!
以上!