cloud foundryリポジトリの歩き方

36
Cloud Foundry リポジトリの歩き方 車谷駿介

Upload: shunsuke-kurumatani

Post on 15-May-2015

1.667 views

Category:

Technology


2 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Cloud Foundryリポジトリの歩き方

Cloud Foundry リポジトリの歩き方

車谷駿介

Page 2: Cloud Foundryリポジトリの歩き方

#whoami

• 普段はNTTで研究開発に従事

– Cloud FoundryひいてはPaaS

– (勝手に)分散処理する技術

– スマートフォン向けのシンクライアント技術

• 元を辿るとa11y畑だった,ような.

Page 3: Cloud Foundryリポジトリの歩き方

本日のお題

• リポジトリ多すぎ

– 32個(cfcrjp06) -> 52個(cfcrjp09): +20!

• CF(PaaS)のざっくりとした概要を解説

– 註:主要部以外を省略していることがあります

– 註:2012年9月3日時点の情報です

• リポジトリとのざっくりとした対応付け

Page 4: Cloud Foundryリポジトリの歩き方

cloudfoundry/*

• 52 Public Repositories (2012-09-03)

Page 5: Cloud Foundryリポジトリの歩き方

Cloud Foundry..?

Cloud Foundry

Application Application Application Application Application Application

アプリケーション開発者

初期設定,運用等は Cloud Foundryに委譲

アプリケーション利用者

IaaS等の上に 構築する方法も, 実際には必要

APIを介して アプリケーションをデプロイ

Page 6: Cloud Foundryリポジトリの歩き方

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

Page 7: Cloud Foundryリポジトリの歩き方

Cloud Foundry?

• VCAP

– Open Platform as a Service

– いわゆるCloud Foundry

• VMC

– VCAPが外向けに用意しているAPI(HTTP)

• BOSH

–リリースエンジニアリングのツールチェーン

Page 8: Cloud Foundryリポジトリの歩き方

cloudfoundry/*

• VCAP/VMC/BOSH + 雑多なライブラリ等

Page 9: Cloud Foundryリポジトリの歩き方

VCAP入門 どんな機能を,何というコンポーネントが実現しているか……

Page 10: Cloud Foundryリポジトリの歩き方

VCAP....?

Cloud Foundry

Application Application Application Application Application Application

アプリケーション開発者 アプリケーション利用者

VCAP: Vmware’s Cloud Application Platform

Page 11: Cloud Foundryリポジトリの歩き方

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

Page 12: Cloud Foundryリポジトリの歩き方

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

Page 13: Cloud Foundryリポジトリの歩き方

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

Page 14: Cloud Foundryリポジトリの歩き方

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

Page 15: Cloud Foundryリポジトリの歩き方

ノード間の通信

アプリケーション利用者 アプリケーション開発者

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

Page 16: Cloud Foundryリポジトリの歩き方

ノード間の通信

• 軽量メッセージングバス「NATS」を使用

• http://github.com/derekcolison/nats

• テキストベース

PUB foo bar 11\r\n

Hello World\r\n

SUB bar 22\r\n

...

Page 17: Cloud Foundryリポジトリの歩き方

ルーティング

アプリケーション利用者 アプリケーション開発者

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

Page 18: Cloud Foundryリポジトリの歩き方

ルーティング

• 外からの通信はRouter(nginx)を介する

Cloud Foundry

Router: nginx + Lua拡張

Cloud Controller

アプリケーション利用者 アプリケーション開発者

Application Application Application Application Application Application

Page 19: Cloud Foundryリポジトリの歩き方

アプリケーションのデプロイ

アプリケーション利用者 アプリケーション開発者

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

Page 20: Cloud Foundryリポジトリの歩き方

アプリケーションのデプロイ

• Stagerでパッケージング(vcap-staging)

– インストーラ,起動スクリプトなど Cloud Foundry

Router

Cloud Controller

UAA: 認証

Stager: パッケージング

Blobstore: キャッシュ

DEA: 起動

必要に応じて ライブラリ等を自動取得 Gems, npm等

Page 21: Cloud Foundryリポジトリの歩き方

アプリケーションの動作環境

• 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.

Page 22: Cloud Foundryリポジトリの歩き方

アプリケーションの隔離

アプリケーション利用者 アプリケーション開発者

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

Page 23: Cloud Foundryリポジトリの歩き方

アプリケーションの隔離

• DEAによって管理される

• wardenコンテナで隔離される予定 Cloud Foundry

Router

DEA

Wardenコンテナ Wardenコンテナ

Application

各コンテナにNWを用意してNAT (+ iptables etc.)

Page 24: Cloud Foundryリポジトリの歩き方

サービスの活用

アプリケーション利用者 アプリケーション開発者

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

Page 25: Cloud Foundryリポジトリの歩き方

サービスの活用

• DBやキュー等の付加機能を用意できる

• アプリケーションはサービスへ直接アクセス Cloud Foundry

Service Node

Wardenコンテナ

Service

DEA

Wardenコンテナ

Application

Cloud Controller

Page 26: Cloud Foundryリポジトリの歩き方

サービスの割り当て

• Service Gatewayがプロビジョニング

– Service Nodeに対する認証情報を払い出し

Cloud Foundry

Service Node

Wardenコンテナ

Service

DEA

Wardenコンテナ

Application

Cloud Controller Service Gateway

Page 27: Cloud Foundryリポジトリの歩き方

サービスのバックアップ等

• Service Workerが幾つかの処理をになう

– シリアライズやスナップショット作成

Cloud Foundry

Service Node

Wardenコンテナ

Service

DEA

Wardenコンテナ

Application

Cloud Controller Service Gateway

Service Worker

Page 28: Cloud Foundryリポジトリの歩き方

アプリケーションの死活監視

アプリケーション利用者 アプリケーション開発者

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

Page 29: Cloud Foundryリポジトリの歩き方

アプリケーションの死活監視

• Cloud Controllerが期待する状態を把握

• Health Managerが実態を把握・修正要求

• DEAはアプリケーションの実状態を監視 Cloud Foundry

DEA

Wardenコンテナ

Application

Cloud Controller

Health Manager

Page 30: Cloud Foundryリポジトリの歩き方

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

Page 31: Cloud Foundryリポジトリの歩き方

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

Page 32: Cloud Foundryリポジトリの歩き方

落ちRepo拾い (1)

• vcap本体

– vcap: 言うまでもがなのリポジトリ

– acm: 認可コンポーネント

• 使われる気配無し

• 試験ツール

– vcap-tests: ユニットテスト

– vcap-test-assets: テスト用アプリ群

– vcap-yeti: BVTツール

Page 33: Cloud Foundryリポジトリの歩き方

落ちRepo拾い (2)

• その他 – caldecott: TCP over HTTPを実現

• 外とService間を接続する際等に利用

– common: いわゆるcommon

– membrane: オブジェクトの妥当性検証

– package_cache: gemsや処理系等をキャッシュ

– steno: loggerもどき

– vcap-common: いわゆるcommon(vcap特化) • vcap-concurrency: 並列実行のサポート

– vcap-tools: ツールチェーン

Page 34: Cloud Foundryリポジトリの歩き方

落ち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

Page 35: Cloud Foundryリポジトリの歩き方

落ちRepo拾い (4)

• ドキュメント類

– cf-docs: docs.cloudfoundry.com

– oss-docs

• Micro Cloud Foundry関係

– micro: “This repository is currently broken”

– micro-deployments: “Nothing to see here”

Page 36: Cloud Foundryリポジトリの歩き方

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