SlideShare a Scribd company logo
重大発表
ボタンを押さない
の開発に成功!!
爆速プレビュープロキシ
mookjp
株式会社リクルートテクノロジーズ
できること
http://コミットハッシュやブランチ名.pool.dev/
http://master.pool.dev/ とか http://a54db9.pool.dev/
つかいかた
(Vagrantで試す場合)
1.  WebアプリケーションのGitリポジトリを用意
2.  このリポジトリのルートにアプリケーションのコンテ
ナを起動させるためのDockerfileを置く
–  travis.ymlみたいな感じでDockerfileを置く
3.  https://github.com/mookjp/pool からcloneし
て付属のVagrantfile内に(1)のURLを指定
4.  vagrant dns --install
5.  vagrant up
※http://qiita.com/mookjp/items/ed5961589428238d610b に詳
しく書きました
どこでも使える
例はVagrantでしたが
DNSを用意すればどこでも使えます
レビュー時に画面も確認
Pull Requestに反応してURLを貼るbot付き
poolのしくみ
Reverse
Proxy
mod_mruby
hook
Docker
daemon
pool
container
dev
(b78e6c)
Git
repository
1. コミットに対応するコンテナがあるか確認
master
(ab2ca4)
poolのしくみ
Reverse
Proxy
mod_mruby
hook
Docker
daemon
pool
container
master
(ab2ca4)
dev
(b78e6c)
Git
repository
2. なければリポジトリからソースを取得し
Dockerfileを元にコンテナを作成
poolのしくみ
Reverse
Proxy
mod_mruby
hook
Docker
daemon
pool
container
master
(ab2ca4)
dev
(b78e6c)
Git
repository
※ビルド中はログをクライアントに流す
poolのしくみ
Reverse
Proxy
mod_mruby
hook
Docker
daemon
pool
container
master
(ab2ca4)
dev
(b78e6c)
Git
repository
※ビルド中はログをクライアントに流す
poolのしくみ
Reverse
Proxy
mod_mruby
hook
Docker
daemon
pool
container
master
(ab2ca4)
dev
(b78e6c)
Git
repository
3. コンテナがあればforward
dev
(b78e6c)
Dockerでやってみた理由
1. 安い
–  VMよりも手軽
2. 速い
–  キャッシュをうまく利用して高速に環境を作
成できる
–  クリーンな環境を毎回素早くつくるのによい
3. うまい
–  自由度が高い
派生プロジェクトも企画中
https://prevs.io/
今までのQA環境作成
これからのQA環境作成
関連記事
•  mod_mrubyとDockerを使ってプレビュー環境を作成
するプロキシサーバを作った ‒ Qiita
–  http://qiita.com/mookjp/items/
ed5961589428238d610b
•  Docker(pool)を用いたプレビュー環境を検証する
(railsアプリ開発チームの活用例) ‒ Qiita
–  http://qiita.com/k-shogo/items/cc47e448fa0c07ac3189
•  人間とウェブの未来 - Gitのコミット単位で動的に
Dockerイメージをデプロイするプロキシサーバpool
–  http://blog.matsumoto-r.jp/?p=4541
お試しください
Dockerやりましょう
http://recruit-tech.co.jp/recruitment/mid-career.html

More Related Content

What's hot

Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Masahiro Nagano
 

What's hot (20)

JAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオンJAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオン
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
 
Dockerについて
DockerについてDockerについて
Dockerについて
 
Dockerライフサイクルの基礎 地雷を踏み抜けろ!
Dockerライフサイクルの基礎 地雷を踏み抜けろ!Dockerライフサイクルの基礎 地雷を踏み抜けろ!
Dockerライフサイクルの基礎 地雷を踏み抜けろ!
 
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
 
Docker超入門
Docker超入門Docker超入門
Docker超入門
 
Docker入門~word press環境を作ってみる ハンズオン編 ver1.4~ pulic
Docker入門~word press環境を作ってみる ハンズオン編 ver1.4~ pulicDocker入門~word press環境を作ってみる ハンズオン編 ver1.4~ pulic
Docker入門~word press環境を作ってみる ハンズオン編 ver1.4~ pulic
 
Docker地雷n本勝負
Docker地雷n本勝負Docker地雷n本勝負
Docker地雷n本勝負
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
Docker Swarm入門
Docker Swarm入門Docker Swarm入門
Docker Swarm入門
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
Dockerクイックツアー
 
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
 Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編 Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
 
Docker入門
Docker入門Docker入門
Docker入門
 
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
 
Docker技術情報アップデート 2015年7月号
Docker技術情報アップデート 2015年7月号Docker技術情報アップデート 2015年7月号
Docker技術情報アップデート 2015年7月号
 
コンテナ技術と普及がシステム・インテグレータに与える影響
コンテナ技術と普及がシステム・インテグレータに与える影響コンテナ技術と普及がシステム・インテグレータに与える影響
コンテナ技術と普及がシステム・インテグレータに与える影響
 
今日から始めるDigitalOcean
今日から始めるDigitalOcean今日から始めるDigitalOcean
今日から始めるDigitalOcean
 

Viewers also liked

「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
Taketo Sano
 

Viewers also liked (12)

アラサーから始めるビット演算
アラサーから始めるビット演算アラサーから始めるビット演算
アラサーから始めるビット演算
 
プロセスをしょうもないErrorで落とさないように頑張る
プロセスをしょうもないErrorで落とさないように頑張るプロセスをしょうもないErrorで落とさないように頑張る
プロセスをしょうもないErrorで落とさないように頑張る
 
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
 
Node.jsエンジニア Erlangに入門するの巻
Node.jsエンジニア Erlangに入門するの巻Node.jsエンジニア Erlangに入門するの巻
Node.jsエンジニア Erlangに入門するの巻
 
ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略
 
モバイル開発を支えるAWS Mobile Services
モバイル開発を支えるAWS Mobile Servicesモバイル開発を支えるAWS Mobile Services
モバイル開発を支えるAWS Mobile Services
 
Gladiator, GUI management tool of ROMA (NOSQL based ruby).
Gladiator, GUI management tool of ROMA (NOSQL based ruby).Gladiator, GUI management tool of ROMA (NOSQL based ruby).
Gladiator, GUI management tool of ROMA (NOSQL based ruby).
 
さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計
 
AWS Lambdaを紐解く
AWS Lambdaを紐解くAWS Lambdaを紐解く
AWS Lambdaを紐解く
 
何もないところから数を作る
何もないところから数を作る何もないところから数を作る
何もないところから数を作る
 
C# でブロックチェーン実装
C# でブロックチェーン実装C# でブロックチェーン実装
C# でブロックチェーン実装
 
Docker 基本のおさらい
Docker 基本のおさらいDocker 基本のおさらい
Docker 基本のおさらい
 

Similar to 爆速プレビュープロキシ pool

3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
Takeshi Komiya
 
PhoneGap勉強会 - 実践編 -
PhoneGap勉強会 - 実践編 -PhoneGap勉強会 - 実践編 -
PhoneGap勉強会 - 実践編 -
Katsumi Onishi
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929
hiro345
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会
samemoon
 
20150101勉強会 dokku alt
20150101勉強会 dokku alt20150101勉強会 dokku alt
20150101勉強会 dokku alt
Shugo Numano
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
Kazuyuki Mori
 

Similar to 爆速プレビュープロキシ pool (20)

もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
 
Docker講習会資料
Docker講習会資料Docker講習会資料
Docker講習会資料
 
PhoneGap勉強会 - 実践編 -
PhoneGap勉強会 - 実践編 -PhoneGap勉強会 - 実践編 -
PhoneGap勉強会 - 実践編 -
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
 
インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Kubernetes Meetup Tokyo #23 kubebuilder-v2
Kubernetes Meetup Tokyo #23 kubebuilder-v2Kubernetes Meetup Tokyo #23 kubebuilder-v2
Kubernetes Meetup Tokyo #23 kubebuilder-v2
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会
 
Introduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing DockerfilesIntroduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing Dockerfiles
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
 
Gaej Explorer
Gaej ExplorerGaej Explorer
Gaej Explorer
 
20150101勉強会 dokku alt
20150101勉強会 dokku alt20150101勉強会 dokku alt
20150101勉強会 dokku alt
 
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaS
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
 
はじめてのコンテナーDocker & Windows & Linux
はじめてのコンテナーDocker & Windows & LinuxはじめてのコンテナーDocker & Windows & Linux
はじめてのコンテナーDocker & Windows & Linux
 

爆速プレビュープロキシ pool

Editor's Notes

  1. それが今回ご紹介するDockerを使ったプレビュー用プロキシpoolです。 自己紹介が遅れましたが、わたくし株式会社リクルートテクノロジーズの市原と申します。丸の内OLです。よろしくお願いいたします。
  2. これを使ってできることというのが、サブドメイン部分にGitのコミットハッシュやブランチ名を指定すると、プロキシ内部でコミットに対応するDockerコンテナを自動で作成して、URLにアクセスするだけで一意の状態のアプリケーションを使えるというものです。で、環境に始めてアクセスする場合はアニメーションのようなビルド中のログがクライアントで確認できます。
  3. Vagrant dnsというプラグインがあって、これでローカル環境の名前解決をする設定を入れることができます。 あとでスライド資料共有しますが、Qiitaに詳しく書いた記事があるので試す際はそちらを見ていただくといいかと思います。
  4. また、poolはGithubのPull Requestに反応してURLを貼るbot機能もあるので、たとえばPR時に画面も確認したい場合は、自分で環境を用意したり、QA環境作成するしくみを自前で用意しなくても、レビュー時にURLをクリックするだけで画面も確認できます。
  5. 内部でどういうことをしているか簡単にご紹介します。サブドメインに与えられたコミットハッシュやブランチ名をプロキシのフックが読んで、このコミットに対応するコンテナがすでに作成されているか確認します。
  6. なければリポジトリからソースを取得して、Dockerfileを元にコミットハッシュの状態のコンテナを作成します
  7. このビルド中は、クライアントではビルドログが流れる画面が表示されます
  8. こんなかんじです
  9. すでに存在するコンテナに対するアクセスがあれば、proxyが対応するコンテナへforwardします
  10. このツールでDockerを使った理由ですが、まず単純にDockerでなにかできないか試してみたかった、というところがあるんですが、 このような3つのメリットがありました。 手軽だということ、キャッシュを利用して高速にクリーンな環境を作成できるということ、またコンテナ内で自由にやりたいことを記述できるというところです。
  11. 実は、ここで紹介したpoolをベースにしたホスティングサービスを計画していて、昨日LPをローンチしました。このprevsというサービスでもっとチーム開発を効率的に、楽しくできるようにしていこうということで、頑張っています!2月くらいにベータ版公開する予定です。間に合わなかったんですが、アーリーアクセスのフォームもつけるので、ぜひ登録してみてください。
  12. 職人のあたたかみのあるQA環境作成が
  13. クリック1回でエンジニア以外も簡単そして高速にできるようになります!
  14. 使い方の記事や、紹介記事も書いて頂いているのでよかったら見てみてください!
  15. よろしくお願いいたします!
  16. あと採用してるのでDockerやりましょう。今だと結構ヤバイプロジェクトにDocker入れるみたいな感じでスリリングなやつができます。