37
コンテナ事例 CircleCI, Cucumber-Chef 第3回 コンテナ型仮想化の情報交換会@大阪 @sawanoboly

コンテナ事例 CircleCI, Cucumber-Chef

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: コンテナ事例 CircleCI, Cucumber-Chef

コンテナ事例 CircleCI, Cucumber-Chef

第3回 コンテナ型仮想化の情報交換会@大阪 @sawanoboly

Page 2: コンテナ事例 CircleCI, Cucumber-Chef

運営組織

2

• 業務執行社員をつとめる合同会社

• アプリケーションのためのプラットフォーム構築/運用自動化をテーマにした活動を担当

• http://opsrock.in 共同開発・運営

• Chefをはじめ、Infrastracture as Code関連を主に取り扱うソリューションを提供

• 導入支援・トレーニングも

Page 3: コンテナ事例 CircleCI, Cucumber-Chef

以前話したlxcの話 『lxc on cloud』

• 自宅DCライクなクラウド上のインスタンス

3

Page 4: コンテナ事例 CircleCI, Cucumber-Chef

宣伝:Chefの本を書きました• 4/28発売 (ISBN:978-4-04-891985-2)

• 「Chef活用ガイド ~ コードではじめる構成管理」

• Infrastructure as Codeを実践しよう!

• 公式Docsの流れを踏襲し、さらに詳しく記述

• 日本公式代理店のクリエーションラインさんと共著

4

Page 5: コンテナ事例 CircleCI, Cucumber-Chef

本日の内容• コンテナ事例:CircleCI

• CircleCI+ngrok

• ITERATIVE DELIVERY(反復型デリバリ)

• コンテナ事例:Cucumber-Chef

• CircleCI + Cucumber-Chef

5

Page 6: コンテナ事例 CircleCI, Cucumber-Chef

アンケートのお願い• http://higanworks.com/ のトップにセッシ

ョンのアンケートを設置していますので、ご協力お願い致します!!(4/14日まで)

6

Page 7: コンテナ事例 CircleCI, Cucumber-Chef

コンテナ事例 CircleCI

※中の人とかではありません

Page 8: コンテナ事例 CircleCI, Cucumber-Chef
Page 9: コンテナ事例 CircleCI, Cucumber-Chef

CircleCIって?• CI = 継続的インテグレーションのサービス

• Jenkins / Travis CI / drone.io / etc..

• We use LXC!!

• (herokuやDockerのアレだよ)

9

Page 10: コンテナ事例 CircleCI, Cucumber-Chef

CircleCIの基本(一応)• Githubと連携、pushでトリガー

• Ubuntuコンテナが起動して、コード取得

• タスクをこなす、主にテスト

• レポート/カバレッジなどを保存する

• 成果物を保存する

• 有料($19/monthから)

• Private Repo対応

• 複数コンテナの同時多重起動が可能

10

Page 11: コンテナ事例 CircleCI, Cucumber-Chef

多分こんな構成

11

EC2インスタンス (LXCホスト)

ビルド用コンテナ (ubuntu)

S3(ビルドのキャッシュ)

EC2インスタンス (LXCホスト)

ビルド用コンテナ (ubuntu)

ビルド用コンテナ (ubuntu)

ビルド用コンテナ (ubuntu)

Page 12: コンテナ事例 CircleCI, Cucumber-Chef

ビルド一覧

12

Page 13: コンテナ事例 CircleCI, Cucumber-Chef

コンテナだからどうなの?• ビルド環境の起動・終了が高速

• リスタートは数秒

• 親ホスト(Ubuntu)ベースの環境

• LXC BRIDGE(多分)でコンテナにSSHログインを提供

• ビルドのデバッグがしやすい

• ライブラリなどのキャッシュディレクトリをいじれる

13

Page 14: コンテナ事例 CircleCI, Cucumber-Chef

ビルド用コンテナにSSHでログイン

14

Page 15: コンテナ事例 CircleCI, Cucumber-Chef

CircleCIの制限 1/2• コンテナは最大1時間で停止

• そのまま運用はさすがにダメ

• SSHつきだと30分

• 親ホスト(Ubuntu)ベースの環境なので、Ubuntuオンリー

15

Page 16: コンテナ事例 CircleCI, Cucumber-Chef

CircleCIの制限 2/2• sudoなし、パッケージ追加とかはNG

• 自前でローカルにビルドor”外部に用意”

• ただ、言語やバージョンマネージャは豊富

• rvm, nvm, phpenv, pyenv, jre複数、golang, scala(play), clojure(lein)等々..

• バックエンドもいろいろ起動済み

• mysql, postgres, memcache, redis,rabbitmqなど

16

Page 17: コンテナ事例 CircleCI, Cucumber-Chef

Ubuntu縛りに関して• 将来的にはDocker!!

17

Page 18: コンテナ事例 CircleCI, Cucumber-Chef

利点と制限から考える• とにかく準備が速い

• CPU(ホスト32コア)もあまり無駄なく利用

• 時間のかかるビルドやテストも速い※ まあまあ制限はかかってる模様Binutils(SBU)の素ビルド(j8)は1m前後くらい

• 時間の制限=> 時間内は何やってもOKなのでは。。?

• むしろ勝手に無くなるコンテナとして利用

18

Page 19: コンテナ事例 CircleCI, Cucumber-Chef

ITERATIVE DELIVERY (反復型デリバリ)

IMPACT MAPPINGより

Page 20: コンテナ事例 CircleCI, Cucumber-Chef

ITERATIVE DELIVERYとは• デプロイ + ビジネス ≒ デリバリ(意訳)

• アジャイルを、企画やらふくめて組織全体に適用しよう(これも意訳)

• 開発だけアジャイルでも、ゴールは遠いままという事態が発生=> ウォーター・スクラム・フォール

20

Page 21: コンテナ事例 CircleCI, Cucumber-Chef

インクリメンタルとイテレーティブ

21

http://www.agileproductdesign.com/blog/dont_know_what_i_want.html※Jeff Patton氏のブログ記事より

Iterating

incrementing

Page 22: コンテナ事例 CircleCI, Cucumber-Chef

Deploy feature branch to Heroku with CircleCI [Rebuild.fm]

• ブランチごとにherokuデプロイしたりしますという話

22

Page 23: コンテナ事例 CircleCI, Cucumber-Chef

コンテナの活用として (とりあえず小さく) 実践してみよう

Page 24: コンテナ事例 CircleCI, Cucumber-Chef

そこでngrok (えぬぐろっく?)

24

Page 25: コンテナ事例 CircleCI, Cucumber-Chef

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も

Page 26: コンテナ事例 CircleCI, Cucumber-Chef

CircleCI+ngrockで• とりあえずGithubのブランチ全部?

• 折角だから1コミット1(and more)デリバリにしてしまおう

26

Page 27: コンテナ事例 CircleCI, Cucumber-Chef

delivery per commit!!

27

Page 28: コンテナ事例 CircleCI, Cucumber-Chef

コミットごとに一時的にデリバリ

• デプロイ対象サーバが固定だと、順番待ちになる

• ブランチだとだいたいHEADになる

• ロールバック(以前のコミットをデプロイし直し)もまあ可能ですが。。

• ちょっとした デザイン変更をShare

• デザイナさんなどによる『ちょっとデプロイお願い』を省略して、非同期な開発(Rebuild.fmより拝借)、並列的な作業

28

Page 29: コンテナ事例 CircleCI, Cucumber-Chef

サンプルコードはこちら

29

https://github.com/OpsRockin/jekyll_and_ngrok

Page 30: コンテナ事例 CircleCI, Cucumber-Chef

コンテナ事例 Cucumber-Chef

Page 31: コンテナ事例 CircleCI, Cucumber-Chef

Cucumber-Chef• テスト駆動型インフラ開発

31

Page 32: コンテナ事例 CircleCI, Cucumber-Chef

TestLab

32

Cucumber-Chef

VM(Vagrant or EC2)

Chef Server (on host os)

LXC Bridge

Container Container

Chef-Client

Chef-Client

ここ繰り返し

最後に Cucumber

Page 33: コンテナ事例 CircleCI, Cucumber-Chef

設定サンプル• 1台のEC2インスタンスに複数コンテナで

、まあまあ高速&節約のインフラテスト

33

Page 34: コンテナ事例 CircleCI, Cucumber-Chef

CircleCI+Cucumber-Chef• CircleCIコンテナ=>EC2コンテナのコンテ

ナ連鎖

• インフラ構築テストや、アプリ用任意バックエンドを用意したり↓

34

時系列

CircleCIにコンテナ

Cucumber-Chefで EC2に

Hadoopクラスタ

CircleCIで 要Hadoopのアプリを

テストGithubにPush

EC2のHadoopクラスタ

を破棄

CircleCIの コンテナは自動破棄

用事があればこの時点にSSHアタッチ

Page 35: コンテナ事例 CircleCI, Cucumber-Chef

コンテナお仕事情報• 商用サービスで、エンドユーザ向けのデリバ

リプロセスの一部をコンテナでやろうと企画中のプロジェクトがあります。

• おもしろそうだと思う方、やれそうな方、私までご連絡で。

35

Page 36: コンテナ事例 CircleCI, Cucumber-Chef

おわり

Page 37: コンテナ事例 CircleCI, Cucumber-Chef

アンケートのお願い(再)• http://higanworks.com/ のトップにセッシ

ョンのアンケートを設置していますので、ご協力お願い致します!!(4/14日まで)

37