Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

コンテナ事例 CircleCI, Cucumber-Chef

4,797 views

Published on

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

Published in: Technology
  • Be the first to comment

コンテナ事例 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

×