Cloud Foundryリポジトリの歩き方

Post on 15-May-2015

1.667 views 2 download

description

2012年9月13日に実施された,第9回CloudFoundry輪読会の発表資料です.イベントについては http://atnd.org/events/31797 を参照ください.

Transcript of Cloud Foundryリポジトリの歩き方

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を提供するサービス