Dev@cloudの実装

5,288 views

Published on

CloudBeesのJenkinsホスティング・サービスであるDEV@cloudの実装とテクニックの話です。

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

No Downloads
Views
Total views
5,288
On SlideShare
0
From Embeds
0
Number of Embeds
1,362
Actions
Shares
0
Downloads
16
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide
  • スケールメリットがないと労働集約のままになってしまう
  • Dev@cloudの実装

    1. 1. DEV@cloudの実装Jenkins-as-a-Serviceはどうやって動いているか川口耕介 ©2010 CloudBees, Inc. All Rights Reserved
    2. 2. DEV@Cloudとは• Jenkinsのホスティング – 1000+ のマスタ – のべ 1,500,000分以上のビルド• ソースコード・バイナリリポジトリなど – Git, SVN, Maven• 現在はEC2上で動作 ©2010 CloudBees, Inc. All Rights 2 Reserved
    3. 3. Jenkins マスター• マスターは別々のJVMで – 別のOSユーザーで• なぜ? – 隔離 – モニタリング・診断などが簡単• 一台の計算機に多数のマスタを集積 – 使われていないインスタンスは乾燥保存 ©2010 CloudBees, Inc. All Rights 3 Reserved
    4. 4. Jenkins マスターのコード• Core = OSS Jenkins – LTS – 独自パッチはほぼ解消した• 独自プラグイン群 – ユーザーに使われると困るもの • Groovy Console • マスター上でビルドが起こらないように – ユーザーが設定する必要のないもの • メールサーバの設定 • ルートURLの設定 ©2010 CloudBees, Inc. All Rights 4 Reserved
    5. 5. Jenkins マスターのデータ• $JENKINS_HOMEはEBSに – 1テナント1ボリューム – スナップショットによるバックアップ• サイズの拡大が可能 – 再マウントの為の短いダウンタイムが必要• スナップショット+クローンを活用した い! – プラグイン実験用の一時的クローンとかど うでしょう? ©2010 CloudBees, Inc. All Rights 5 Reserved
    6. 6. Jenkinsの外:Chef• Tomcat• 初期設定• ビルドツール• … package “httpd” cookbook_file “/etc/httpd.conf” do source “myconfig” end service “httpd” do action :start end ©2010 CloudBees, Inc. All Rights 6 Reserved
    7. 7. Chefのアーキテクチャ chef-server masters slaves web-tier ©2010 CloudBees, Inc. All Rights 7 Reserved
    8. 8. Chefの使い方の工夫• Chefにゼロからスレーブをセットアップ させていると間に合わない• 予めセットアップしたやつをAMI化 – 残りデルタだけを起動時にChefにやっても らう ©2010 CloudBees, Inc. All Rights 8 Reserved
    9. 9. JenkinsとChef/Puppet 手間 Chef/Puppet 手動管理 台数 ©2010 CloudBees, Inc. All Rights 9 Reserved
    10. 10. スレーブの割り当ての仕組み• Providore – ブローカー・サービス – Jenkinsの外部 – Jcloudsを使ってEC2 APIと対話 – スレーブの割り当て・プール・破棄 ©2010 CloudBees, Inc. All Rights 10 Reserved
    11. 11. プールからの割り当て 再利用 スレーブくれ! プール providore ©2010 CloudBees, Inc. All Rights 11 Reserved
    12. 12. EC2からの割り当て 教訓: • EC2 APIが落ちてもよいようにせよ スレーブくれ! 割り当て ec2 api providore ©2010 CloudBees, Inc. All Rights 12 Reserved
    13. 13. 初期化と占有 スレーブくれ! providore 1. LXCを開始 2. マスターを割り当て スレーブ ©2010 CloudBees, Inc. All Rights slave 13 Reserved
    14. 14. スレーブの接続 1. 接続情報通知 providore 2. SSHで接続 スレーブ ©2010 CloudBees, Inc. All Rights 14 Reserved
    15. 15. スレーブの接続 1. 解放 providore 2. LXCの破棄・掃除 スレーブ ©2010 CloudBees, Inc. All Rights 15 Reserved
    16. 16. デモ ©2010 CloudBees, Inc. All Rights Reserved
    17. 17. Linuxコンテナ• OSレベルの仮想化 – 中からは完全な独立Linuxシステムのように見え る – 実は単一カーネルの上で動いている – Solarisの笑い声が聞こえる…• スレーブのリサイクルが高速 – リセット&リブートはLXCの方が圧倒的に早い• EC2からの独立性 – テナントの隔離や再利用のロジックがクラウド APIに依存しない方が望ましい ©2010 CloudBees, Inc. All Rights 17 Reserved
    18. 18. ロシア人形モデル EC2 Hypervisor EC2 Node LXC Guest ©2010 CloudBees, Inc. All Rights 18 Reserved
    19. 19. Linux コンテナ: ワークスペース• LXCホストには複数テナントのWSが接 続 – LXCゲストは1つしか見えないようになっ ている – Consistent hashによってできるだけ同じホ ストにビルドを割り当てる• 仮想化版のHDDカートリッジ ©2010 CloudBees, Inc. All Rights 19 Reserved
    20. 20. Nagiosによるモニタリング• jenkins-ci.orgも• 拡張可能• テキストベースの設定ファイル – マスターが追加されるたびに自動生成• PagerDutyとの統合• サービス間の依存関係の概念 – コア・サービスが落ちた時の大量の通知を 防ぐ ©2010 CloudBees, Inc. All Rights 20 Reserved
    21. 21. モニタすべきもの• ユーザーが見るもの: indexページ• JVMヒープ、特にpermgen• 負荷• ディスクスペース• スレーブの稼動状況 curl http://jenkins/computer/api/json ©2010 CloudBees, Inc. All Rights 21 Reserved
    22. 22. 未解決問題• マスタが増えるにつれスケーラビリティ が…• ポーリングからプッシュへ 大丈夫ですか?返事してください! ©2010 CloudBees, Inc. All Rights 22 Reserved
    23. 23. Groovyスクリプトコンソール• 探索的トラブルシューティング• データ収集• Scriptler 2.0 – コミュニティのリポジトリから管理スクリ プトをダウンロードして実行する仕組み – https://github.com/jenkinsci/jenkins-scripts/ ©2010 CloudBees, Inc. All Rights 23 Reserved
    24. 24. 「一度きり→手作業」 vs 「繰り返し→自動化」• 他のツールとの連携は我々には「一度き り」ではない – いわゆるスケールメリットというやつ• エコシステム・パートナー – あらかじめ統合を自動化しておく – ユーザーは連携を有効化するだけ ©2010 CloudBees, Inc. All Rights 24 Reserved
    25. 25. まとめ• 野良Jenkins、増えていませんか?• 少しずつシステマティックな管理を導入 する – スケールメリット – 一度にやろうとすると無限に先延ばしに なってしまう• この事例が参考になりますように ©2010 CloudBees, Inc. All Rights 25 Reserved
    26. 26. 今週末発売• 入門的内容 – Java & Ruby• チーム間作業の改善 – 昇進、指紋• 検証済みマージ – Subversion & Git• 分散ビルド• Selenium ©2010 CloudBees, Inc. All Rights 26 Reserved
    27. 27. Questions? Thank You! http://www.cloudbees.com ©2010 CloudBees, Inc. All Rights 27 Reserved
    28. 28. 2006年• 分散ビルドのサポート ©2010 CloudBees, Inc. All Rights 28 Reserved
    29. 29. ©2010 CloudBees, Inc. All Rights 29 Reserved
    30. 30. Jenkinsのクラウド化 Elastic マス 多数のマスタ タ 自動伸縮クラスタ 分散ビルド机の下計算機 ©2010 CloudBees, Inc. All Rights 30 Reserved

    ×