cloud foundryリポジトリの歩き方
DESCRIPTION
2012年9月13日に実施された,第9回CloudFoundry輪読会の発表資料です.イベントについては http://atnd.org/events/31797 を参照ください.TRANSCRIPT
Cloud Foundry リポジトリの歩き方
車谷駿介
#whoami
• 普段はNTTで研究開発に従事
– Cloud FoundryひいてはPaaS
– (勝手に)分散処理する技術
– スマートフォン向けのシンクライアント技術
• 元を辿るとa11y畑だった,ような.
本日のお題
• リポジトリ多すぎ
– 32個(cfcrjp06) -> 52個(cfcrjp09): +20!
• CF(PaaS)のざっくりとした概要を解説
– 註:主要部以外を省略していることがあります
– 註:2012年9月3日時点の情報です
• リポジトリとのざっくりとした対応付け
cloudfoundry/*
• 52 Public Repositories (2012-09-03)
Cloud Foundry..?
Cloud Foundry
Application Application Application Application Application Application
アプリケーション開発者
初期設定,運用等は Cloud Foundryに委譲
アプリケーション利用者
IaaS等の上に 構築する方法も, 実際には必要
APIを介して アプリケーションをデプロイ
Cloud Foundry.?
Cloud Foundry
Application Application Application Application Application Application
アプリケーション開発者 アプリケーション利用者
VMC: The VMware Cloud CLI
VCAP: Vmware’s Cloud Application Platform
BOSH: Cloud Foundry BOSH
Cloud Foundry?
• VCAP
– Open Platform as a Service
– いわゆるCloud Foundry
• VMC
– VCAPが外向けに用意しているAPI(HTTP)
• BOSH
–リリースエンジニアリングのツールチェーン
cloudfoundry/*
• VCAP/VMC/BOSH + 雑多なライブラリ等
VCAP入門 どんな機能を,何というコンポーネントが実現しているか……
VCAP....?
Cloud Foundry
Application Application Application Application Application Application
アプリケーション開発者 アプリケーション利用者
VCAP: Vmware’s Cloud Application Platform
Cloud Foundry
VCAP...?
アプリケーション利用者
Router
UAA
HTTPS
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
Cloud Foundry
VCAP..?
Cloud Controller
UAA
Router
アプリケーション開発者
HTTPS
Service Service
TCP
VMC
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
VCAP.?
アプリケーション開発者
Router
Cloud Controller
UAA
Health Manager
Stager
NATS Server
NATS: Messaging Bus
Service Service
Blobstore
TCP
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
VCAP?
アプリケーション利用者 アプリケーション開発者
Router
Cloud Controller
UAA
Health Manager
Stager
NATS Server
HTTPS
NATS: Messaging Bus
Service Service
Blobstore
TCP
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
ノード間の通信
アプリケーション利用者 アプリケーション開発者
Router
Cloud Controller
UAA
Health Manager
Stager
NATS Server
HTTPS
Service Service
Blobstore
TCP
NATS: Messaging Bus
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
ノード間の通信
• 軽量メッセージングバス「NATS」を使用
• http://github.com/derekcolison/nats
• テキストベース
PUB foo bar 11\r\n
Hello World\r\n
SUB bar 22\r\n
...
ルーティング
アプリケーション利用者 アプリケーション開発者
Router
Cloud Controller
UAA
Health Manager
Stager
NATS Server
HTTPS
NATS: Messaging Bus
Service Service
Blobstore
TCP
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
ルーティング
• 外からの通信はRouter(nginx)を介する
Cloud Foundry
Router: nginx + Lua拡張
Cloud Controller
アプリケーション利用者 アプリケーション開発者
Application Application Application Application Application Application
アプリケーションのデプロイ
アプリケーション利用者 アプリケーション開発者
Router
Cloud Controller
UAA
Health Manager
Stager
NATS Server
HTTPS
Service Service
Blobstore
TCP
NATS: Messaging Bus
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
アプリケーションのデプロイ
• Stagerでパッケージング(vcap-staging)
– インストーラ,起動スクリプトなど Cloud Foundry
Router
Cloud Controller
UAA: 認証
Stager: パッケージング
Blobstore: キャッシュ
DEA: 起動
必要に応じて ライブラリ等を自動取得 Gems, npm等
アプリケーションの動作環境
• Runtime
– Java 6/7, Scala, Ruby 1.8/1.9, PHP 5, Node.js 0.4/0.6/0.8, etc.
• Framework
– Spring, Groovy, Play!, Ruby on Rails, etc.
• Services
– 言語実行形以外の依存要素
– MySQL, filesystem, Redis, ElasticSearch, etc.
アプリケーションの隔離
アプリケーション利用者 アプリケーション開発者
Router
Cloud Controller
UAA
Health Manager
Stager
NATS Server
HTTPS
NATS: Messaging Bus
Service Service
Blobstore
TCP
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
アプリケーションの隔離
• DEAによって管理される
• wardenコンテナで隔離される予定 Cloud Foundry
Router
DEA
Wardenコンテナ Wardenコンテナ
Application
各コンテナにNWを用意してNAT (+ iptables etc.)
サービスの活用
アプリケーション利用者 アプリケーション開発者
Router
Cloud Controller
UAA
Health Manager
Stager
NATS Server
HTTPS
NATS: Messaging Bus
Service Service
Blobstore
TCP
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
サービスの活用
• DBやキュー等の付加機能を用意できる
• アプリケーションはサービスへ直接アクセス Cloud Foundry
Service Node
Wardenコンテナ
Service
DEA
Wardenコンテナ
Application
Cloud Controller
サービスの割り当て
• Service Gatewayがプロビジョニング
– Service Nodeに対する認証情報を払い出し
Cloud Foundry
Service Node
Wardenコンテナ
Service
DEA
Wardenコンテナ
Application
Cloud Controller Service Gateway
サービスのバックアップ等
• Service Workerが幾つかの処理をになう
– シリアライズやスナップショット作成
Cloud Foundry
Service Node
Wardenコンテナ
Service
DEA
Wardenコンテナ
Application
Cloud Controller Service Gateway
Service Worker
アプリケーションの死活監視
アプリケーション利用者 アプリケーション開発者
Router
Cloud Controller
UAA
Health Manager
Stager
NATS Server
HTTPS
Service Service
Blobstore
TCP
NATS: Messaging Bus
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
アプリケーションの死活監視
• Cloud Controllerが期待する状態を把握
• Health Managerが実態を把握・修正要求
• DEAはアプリケーションの実状態を監視 Cloud Foundry
DEA
Wardenコンテナ
Application
Cloud Controller
Health Manager
VCAP!
Router: ユーザとのI/F
Health Manager: 死活監視
Stager
NATS: Messaging
HTTPS
NATS: Messaging Bus
Blobstore
TCP
Cloud Controller: オーケストレータ
UAA: 認証
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
DEA: Droplet Execution Agent
Application Application Application
Service
VCAP!!
router
health_manager[_next]
†
nats
cloud_controller [_ng]
uaa
Application Application Application
Application Application Application
dea[_ng]
Application Application Application
vcap- services (-base)
warden
† stager(-client), vcap-staging, vcap(-java, node, ruby)
‡
‡ vmc-lib, vmc-glue, vmc-plugins || vmc || vcap-java-client
落ちRepo拾い (1)
• vcap本体
– vcap: 言うまでもがなのリポジトリ
– acm: 認可コンポーネント
• 使われる気配無し
• 試験ツール
– vcap-tests: ユニットテスト
– vcap-test-assets: テスト用アプリ群
– vcap-yeti: BVTツール
落ちRepo拾い (2)
• その他 – caldecott: TCP over HTTPを実現
• 外とService間を接続する際等に利用
– common: いわゆるcommon
– membrane: オブジェクトの妥当性検証
– package_cache: gemsや処理系等をキャッシュ
– steno: loggerもどき
– vcap-common: いわゆるcommon(vcap特化) • vcap-concurrency: 並列実行のサポート
– vcap-tools: ツールチェーン
落ちRepo拾い (3)
• リリースエンジニアリングのツールチェーン
– bosh
• BOSH向け環境構築セット
– bat-release: BOSH Acceptance Tests
– bosh-release: BOSH
– bosh-sample-release
– cf-release: Cloud Foundry (VCAP)
– oss-release
– vcap-services-sample-release
落ちRepo拾い (4)
• ドキュメント類
– cf-docs: docs.cloudfoundry.com
– oss-docs
• Micro Cloud Foundry関係
– micro: “This repository is currently broken”
– micro-deployments: “Nothing to see here”
落ちRepo拾い (5)
• その他
– eventmachine: 同名のGemのフォーク
– gerrit_test: レビューシステムの練習用
– gonats: go言語のNATSクライアント
– gonit: go言語の監視ツール(monit)
• gosigar: go言語のsigar API実装
– oss-tools: 雑多なツール類
• Pull Req.自動応答や,JenkinsのJob同期スクリプト
– vblob: S3互換I/Fを提供するサービス