Your SlideShare is downloading. ×
0
コンテナ事例
CircleCI, Cucumber-Chef
第3回 コンテナ型仮想化の情報交換会@大阪
@sawanoboly
運営組織
2
• 業務執行社員をつとめる合同会社
• アプリケーションのためのプラットフォーム構築/運
用自動化をテーマにした活動を担当
• http://opsrock.in 共同開発・運営
• Chefをはじめ、Infrastracture...
以前話したlxcの話
『lxc on cloud』
• 自宅DCライクなクラウド上のインスタンス
3
宣伝:Chefの本を書きました
• 4/28発売 (ISBN:978-4-04-891985-2)
• 「Chef活用ガイド ∼ コードではじめる構成管
理」
• Infrastructure as Codeを実践しよう!
• 公式Docsの流...
本日の内容
• コンテナ事例:CircleCI
• CircleCI+ngrok
• ITERATIVE DELIVERY(反復型デリバリ)
• コンテナ事例:Cucumber-Chef
• CircleCI + Cucumber-Chef
5
アンケートのお願い
• http://higanworks.com/ のトップにセッシ
ョンのアンケートを設置していますので、ご
協力お願い致します!!(4/14日まで)
6
コンテナ事例
CircleCI
※中の人とかではありません
CircleCIって?
• CI = 継続的インテグレーションのサービス
• Jenkins / Travis CI / drone.io / etc..
• We use LXC!!
• (herokuやDockerのアレだよ)
9
CircleCIの基本(一応)
• Githubと連携、pushでトリガー
• Ubuntuコンテナが起動して、コード取得
• タスクをこなす、主にテスト
• レポート/カバレッジなどを保存する
• 成果物を保存する
• 有料($19/mont...
多分こんな構成
11
EC2インスタンス
(LXCホスト)
ビルド用コンテナ
(ubuntu)
S3(ビルドのキャッシュ)
EC2インスタンス
(LXCホスト)
ビルド用コンテナ
(ubuntu)
ビルド用コンテナ
(ubuntu)
ビルド用コ...
ビルド一覧
12
コンテナだからどうなの?
• ビルド環境の起動・終了が高速
• リスタートは数秒
• 親ホスト(Ubuntu)ベースの環境
• LXC BRIDGE(多分)でコンテナにSSHログ
インを提供
• ビルドのデバッグがしやすい
• ライブラリなどの...
ビルド用コンテナにSSHでログイン
14
CircleCIの制限 1/2
• コンテナは最大1時間で停止
• そのまま運用はさすがにダメ
• SSHつきだと30分
• 親ホスト(Ubuntu)ベースの環境なので、
Ubuntuオンリー
15
CircleCIの制限 2/2
• sudoなし、パッケージ追加とかはNG
• 自前でローカルにビルドor 外部に用意
• ただ、言語やバージョンマネージャは豊富
• rvm, nvm, phpenv, pyenv, jre複数、

golan...
Ubuntu縛りに関して
• 将来的にはDocker!!
17
利点と制限から考える
• とにかく準備が速い
• CPU(ホスト32コア)もあまり無駄なく利用
• 時間のかかるビルドやテストも速い

※ まあまあ制限はかかってる模様

Binutils(SBU)の素ビルド(j8)は1m前後く
らい
• 時間...
ITERATIVE DELIVERY
(反復型デリバリ)
IMPACT MAPPINGより
ITERATIVE DELIVERYとは
• デプロイ + ビジネス デリバリ(意訳)
• アジャイルを、企画やらふくめて組織全体に
適用しよう(これも意訳)
• 開発だけアジャイルでも、ゴールは遠いまま
という事態が発生

=> ウォーター・...
インクリメンタルと

イテレーティブ
21
http://www.agileproductdesign.com/blog/dont_know_what_i_want.html
※Jeff Patton氏のブログ記事より
Iterating
inc...
Deploy feature branch to Heroku
with CircleCI [Rebuild.fm]
• ブランチごとにherokuデプロイしたりしま
すという話
22
コンテナの活用として
(とりあえず小さく)
実践してみよう
そこでngrok
(えぬぐろっく?)
24
ngrokのできること
25
WorkStation
app
localhost:4000
ngrokd server
(hosted or private)
*.sub.example.com (Aレコード)
ngrok(cli)
① loc...
CircleCI+ngrockで
• とりあえずGithubのブランチ全部?
• 折角だから1コミット1(and more)デリバリ
にしてしまおう
26
delivery per commit!!
27
コミットごとに一時的にデリバリ
• デプロイ対象サーバが固定だと、順番待ちに
なる
• ブランチだとだいたいHEADになる
• ロールバック(以前のコミットをデプロイし
直し)もまあ可能ですが。。
• ちょっとした デザイン変更をShare
•...
サンプルコードはこちら
29
https://github.com/OpsRockin/jekyll_and_ngrok
コンテナ事例
Cucumber-Chef
Cucumber-Chef
• テスト駆動型インフラ開発
31
TestLab
32
Cucumber-Chef
VM(Vagrant or EC2)
Chef Server
(on host os)
LXC Bridge
Container Container
Chef-Client
Chef-Clien...
設定サンプル
• 1台のEC2インスタンスに複数コンテナで

、まあまあ高速&節約のインフラテスト
33
CircleCI+Cucumber-Chef
• CircleCIコンテナ=>EC2コンテナのコンテ
ナ連鎖
• インフラ構築テストや、アプリ用任意バック
エンドを用意したり↓
34
時系列
CircleCIにコンテナ
Cucumber-Che...
コンテナお仕事情報
• 商用サービスで、エンドユーザ向けのデリバ
リプロセスの一部をコンテナでやろうと企画
中のプロジェクトがあります。
• おもしろそうだと思う方、やれそうな方、私
までご連絡で。
35
おわり
アンケートのお願い(再)
• http://higanworks.com/ のトップにセッシ
ョンのアンケートを設置していますので、ご
協力お願い致します!!(4/14日まで)
37
コンテナ事例 CircleCI, Cucumber-Chef
Upcoming SlideShare
Loading in...5
×

コンテナ事例 CircleCI, Cucumber-Chef

3,279

Published on

第3回 コンテナ型仮想化の情報交換会@大阪 の発表資料です

Published in: Technology
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,279
On Slideshare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
13
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

Transcript of "コンテナ事例 CircleCI, Cucumber-Chef"

  1. 1. コンテナ事例 CircleCI, Cucumber-Chef 第3回 コンテナ型仮想化の情報交換会@大阪 @sawanoboly
  2. 2. 運営組織 2 • 業務執行社員をつとめる合同会社 • アプリケーションのためのプラットフォーム構築/運 用自動化をテーマにした活動を担当 • http://opsrock.in 共同開発・運営 • Chefをはじめ、Infrastracture as Code 関連を主に取り扱うソリューションを提供 • 導入支援・トレーニングも
  3. 3. 以前話したlxcの話 『lxc on cloud』 • 自宅DCライクなクラウド上のインスタンス 3
  4. 4. 宣伝:Chefの本を書きました • 4/28発売 (ISBN:978-4-04-891985-2) • 「Chef活用ガイド ∼ コードではじめる構成管 理」 • Infrastructure as Codeを実践しよう! • 公式Docsの流れを踏襲し、
 さらに詳しく記述 • 日本公式代理店の
 クリエーションラインさんと
 共著 4
  5. 5. 本日の内容 • コンテナ事例:CircleCI • CircleCI+ngrok • ITERATIVE DELIVERY(反復型デリバリ) • コンテナ事例:Cucumber-Chef • CircleCI + Cucumber-Chef 5
  6. 6. アンケートのお願い • http://higanworks.com/ のトップにセッシ ョンのアンケートを設置していますので、ご 協力お願い致します!!(4/14日まで) 6
  7. 7. コンテナ事例 CircleCI ※中の人とかではありません
  8. 8. CircleCIって? • CI = 継続的インテグレーションのサービス • Jenkins / Travis CI / drone.io / etc.. • We use LXC!! • (herokuやDockerのアレだよ) 9
  9. 9. CircleCIの基本(一応) • Githubと連携、pushでトリガー • Ubuntuコンテナが起動して、コード取得 • タスクをこなす、主にテスト • レポート/カバレッジなどを保存する • 成果物を保存する • 有料($19/monthから) • Private Repo対応 • 複数コンテナの同時多重起動が可能 10
  10. 10. 多分こんな構成 11 EC2インスタンス (LXCホスト) ビルド用コンテナ (ubuntu) S3(ビルドのキャッシュ) EC2インスタンス (LXCホスト) ビルド用コンテナ (ubuntu) ビルド用コンテナ (ubuntu) ビルド用コンテナ (ubuntu)
  11. 11. ビルド一覧 12
  12. 12. コンテナだからどうなの? • ビルド環境の起動・終了が高速 • リスタートは数秒 • 親ホスト(Ubuntu)ベースの環境 • LXC BRIDGE(多分)でコンテナにSSHログ インを提供 • ビルドのデバッグがしやすい • ライブラリなどのキャッシュディレクトリ をいじれる 13
  13. 13. ビルド用コンテナにSSHでログイン 14
  14. 14. CircleCIの制限 1/2 • コンテナは最大1時間で停止 • そのまま運用はさすがにダメ • SSHつきだと30分 • 親ホスト(Ubuntu)ベースの環境なので、 Ubuntuオンリー 15
  15. 15. CircleCIの制限 2/2 • sudoなし、パッケージ追加とかはNG • 自前でローカルにビルドor 外部に用意 • ただ、言語やバージョンマネージャは豊富 • rvm, nvm, phpenv, pyenv, jre複数、
 golang, scala(play), clojure(lein)等々.. • バックエンドもいろいろ起動済み • mysql, postgres, memcache, redis,
 rabbitmqなど 16
  16. 16. Ubuntu縛りに関して • 将来的にはDocker!! 17
  17. 17. 利点と制限から考える • とにかく準備が速い • CPU(ホスト32コア)もあまり無駄なく利用 • 時間のかかるビルドやテストも速い
 ※ まあまあ制限はかかってる模様
 Binutils(SBU)の素ビルド(j8)は1m前後く らい • 時間の制限
 => 時間内は何やってもOKなのでは。。? • むしろ勝手に無くなるコンテナとして利用 18
  18. 18. ITERATIVE DELIVERY (反復型デリバリ) IMPACT MAPPINGより
  19. 19. ITERATIVE DELIVERYとは • デプロイ + ビジネス デリバリ(意訳) • アジャイルを、企画やらふくめて組織全体に 適用しよう(これも意訳) • 開発だけアジャイルでも、ゴールは遠いまま という事態が発生
 => ウォーター・スクラム・フォール 20
  20. 20. インクリメンタルと
 イテレーティブ 21 http://www.agileproductdesign.com/blog/dont_know_what_i_want.html ※Jeff Patton氏のブログ記事より Iterating incrementing
  21. 21. Deploy feature branch to Heroku with CircleCI [Rebuild.fm] • ブランチごとにherokuデプロイしたりしま すという話 22
  22. 22. コンテナの活用として (とりあえず小さく) 実践してみよう
  23. 23. そこでngrok (えぬぐろっく?) 24
  24. 24. ngrokのできること 25 WorkStation app localhost:4000 ngrokd server (hosted or private) *.sub.example.com (Aレコード) ngrok(cli) ① local:4000へのProxyを リクエスト ex) サブドメイン = hoge ② hoge.sub.example.com へのリクエストを フォワードする Public Network ③appに対して
 hoge.sub.example.com で到達可能に HTTP/HTTPS
 ほか普通のTCPも
  25. 25. CircleCI+ngrockで • とりあえずGithubのブランチ全部? • 折角だから1コミット1(and more)デリバリ にしてしまおう 26
  26. 26. delivery per commit!! 27
  27. 27. コミットごとに一時的にデリバリ • デプロイ対象サーバが固定だと、順番待ちに なる • ブランチだとだいたいHEADになる • ロールバック(以前のコミットをデプロイし 直し)もまあ可能ですが。。 • ちょっとした デザイン変更をShare • デザイナさんなどによる『ちょっとデプロ イお願い』を省略して、非同期な開発 (Rebuild.fmより拝借)、並列的な作業 28
  28. 28. サンプルコードはこちら 29 https://github.com/OpsRockin/jekyll_and_ngrok
  29. 29. コンテナ事例 Cucumber-Chef
  30. 30. Cucumber-Chef • テスト駆動型インフラ開発 31
  31. 31. TestLab 32 Cucumber-Chef VM(Vagrant or EC2) Chef Server (on host os) LXC Bridge Container Container Chef-Client Chef-Client ここ繰り返し 最後に Cucumber
  32. 32. 設定サンプル • 1台のEC2インスタンスに複数コンテナで
 、まあまあ高速&節約のインフラテスト 33
  33. 33. CircleCI+Cucumber-Chef • CircleCIコンテナ=>EC2コンテナのコンテ ナ連鎖 • インフラ構築テストや、アプリ用任意バック エンドを用意したり↓ 34 時系列 CircleCIにコンテナ Cucumber-Chefで EC2に
 Hadoopクラスタ CircleCIで 要Hadoopのアプリを テスト GithubにPush EC2の
 Hadoopクラスタ を破棄 CircleCIの コンテナは自動破棄 用事があればこの時点にSSHアタッチ
  34. 34. コンテナお仕事情報 • 商用サービスで、エンドユーザ向けのデリバ リプロセスの一部をコンテナでやろうと企画 中のプロジェクトがあります。 • おもしろそうだと思う方、やれそうな方、私 までご連絡で。 35
  35. 35. おわり
  36. 36. アンケートのお願い(再) • http://higanworks.com/ のトップにセッシ ョンのアンケートを設置していますので、ご 協力お願い致します!!(4/14日まで) 37
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×