SlideShare a Scribd company logo
1 of 96
Download to read offline
Cloud Foundry

は、なぜ動くのか
@jacopen
Kazuto Kusama
NTT Communications
!
Cloudn PaaSの開発・運用をやっています
最近
質問
はじめに
今回の発表、元々は
!
• Cloud Foundryのアーキテクチャ概要に軽く触れる
• V2で変わったところを中心に、少し深く追ってみる
!
という予定でした
Open Cloud Summit Japan

とかで喋りました
が、概要説明だけで100スライド近くになったので、
今回は深追いするのは諦めました。
!
なので、かなり入門者向けの内容になっています。
!
深追いはまた次回!
Cloud Foundryに

Sinatraアプリをデプロイ
$ ls	
Gemfile README.md dora.rb
instances.rb logging_service.rb spec
stress_testers.rb	
Gemfile.lock config.ru
get_instance_cookie_jars.sh log_utils.rb scripts
stress vendor	
!
https://github.com/cloudfoundry/cf-acceptance-tests/tree/master/assets/dora
[23:08] jacopen@cape ~/Project/dora ✘╹◡╹✘ (master) cf push dora	
Creating app dora in org jacopen / space jacopen-space as admin...	
OK	
!
Creating route dora.107.22.72.200.xip.io...	
OK	
!
Binding dora.107.22.72.200.xip.io to dora...	
OK	
!
Uploading dora...	
Uploading from: /Users/jacopen/Project/dora	
1.2M, 36 files	
OK	
!
Starting app dora in org jacopen / space jacopen-space as admin...	
OK	
(中略)	
1 of 1 instances running	
!
App started	
!
Showing health and status for app dora in org jacopen / space jacopen-space as admin...	
OK	
!
requested state: started	
instances: 1/1	
usage: 256M x 1 instances	
urls: dora.107.22.72.200.xip.io	
!
state since cpu memory disk	
#0 running 2014-04-21 11:09:25 PM 0.0% 72.2M of 256M 0 of 1G
ok
!
[23:09] jacopen@cape ~/Project/dora ✘╹◡╹✘ (master) cf apps	
Getting apps in org jacopen / space jacopen-space as admin...	
OK	
!
name requested state instances memory disk urls	
dora started 1/1 256M 1G dora.
107.22.72.200.xip.io
cf push
この間、CF内では

何が行われていたのか?
CFというブラックボックスの
を解こう
アジェンダ
Cloud Foundryの仕組みを理解するための3章立て
!
• Cloud Foundryを外から叩いて、中身を推測する
• Cloud Foundryの各コンポーネントの役割を知る
• Cloud Foundryのコンポーネント間通信を知る
今回やらないこと
!
• WardenコンテナやBuildpackなどの解説
• MySQLやPostgresなどのService系の解説
• loggregatorなどの、周辺サービスの解説
では始めましょう
Cloud Foundryを
外から叩いて
中身を推測しよう
1
CF_TRACE=true
[23:49] jacopen@cape ~/Project/dora ✘╹◡╹✘ export CF_TRACE=true	
[23:49] jacopen@cape ~/Project/dora ✘╹◡╹✘ cf push dora	
!
REQUEST:	
GET /v2/spaces/dbf6ed0a-3108-45d8-9c78-a512d5071358/apps?q=name%3Adora&inline-relations-depth=1
HTTP/1.1	
Host: api.107.22.72.200.xip.io	
Accept: application/json	
Authorization: [PRIVATE DATA HIDDEN]	
Content-Type: application/json	
User-Agent: go-cli 6.0.0-90db382 / darwin	
!
!
!
RESPONSE:	
HTTP/1.1 200 OK	
Content-Length: 107	
Content-Type: application/json;charset=utf-8	
Date: Mon, 21 Apr 2014 14:49:13 GMT	
Server: nginx	
X-Content-Type-Options: nosniff	
X-Vcap-Request-Id: 18dcd4aefdd000506e49c4b5cf739aaa::65195823-dac9-410a-855a-4ef5ba249198	
!
{	
"total_results": 0,	
"total_pages": 0,	
"prev_url": null,	
"next_url": null,	
"resources": [	
!
]	
}	
Creating app dora in org jacopen / space jacopen-space as admin...
調査の CF_TRACE=true
CF_TRACE=trueにすると、cf コマンドが
裏で行っているリクエストを見ることができる。
cf pushを覗いてみよう
GET /v2/spaces/dbf6ed0a-3108-45d8-9c78-a512d5071358/apps?q=name%3Adora&inline-relations-depth=1 HTTP/1.1	
HTTP/1.1 200 OK	
!POST /v2/apps?async=true HTTP/1.1	
{"name":"dora","space_guid":"dbf6ed0a-3108-45d8-9c78-a512d5071358"}	
HTTP/1.1 201 Created	
!GET /v2/shared_domains HTTP/1.1	
HTTP/1.1 200 OK	
!GET /v2/domains?inline-relations-depth=1&q=name%3A107.22.72.200.xip.io HTTP/1.1	
HTTP/1.1 200 OK	
!GET /v2/routes?inline-relations-depth=1&q=host%3Adora%3Bdomain_guid%3A524ba14d-4d3f-495f-a2c7-a5ed25a70e81 HTTP/1.1	
HTTP/1.1 200 OK	
!POST /v2/routes?async=true&inline-relations-depth=1 HTTP/1.1	
{"host":"dora","domain_guid":"524ba14d-4d3f-495f-a2c7-a5ed25a70e81","space_guid":"dbf6ed0a-3108-45d8-9c78-a512d5071358"}	
HTTP/1.1 201 Created	
!PUT /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/routes/ed912294-be29-4013-8b1c-735851acee24 HTTP/1.1	
HTTP/1.1 201 Created	
!PUT /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/bits?async=true HTTP/1.1	
Content-Type: multipart/form-data;	
HTTP/1.1 201 Created	
!GET /v2/jobs/6dd46fe7-40b0-41d1-94aa-dd2ee80fd3b2 HTTP/1.1	
HTTP/1.1 200 OK	
(queued)	
!GET /v2/jobs/6dd46fe7-40b0-41d1-94aa-dd2ee80fd3b2 HTTP/1.1	
HTTP/1.1 200 OK	
(finished)	
!CONNECTING TO WEBSOCKET: wss://loggregator.107.22.72.200.xip.io:443/tail/?app=0e948568-aa90-47e9-a128-9ff3cc680600	
!PUT /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600?async=true&inline-relations-depth=1 HTTP/1.1	
{"state":"STARTED"}	
!GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/instances HTTP/1.1	
HTTP/1.1 400 Bad Request	
{"code":170002,"description":"App has not finished staging","error_code":"CF-NotStaged"}	
!GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/instances HTTP/1.1	
api.107.22.72.200.xip.io と

何かやりとりしてる
分かったこと
cf push
Cloud Foundryは、APIを提供している
APIを提供してくれる
何か
cf push
cf pushは、APIをいろいろ叩いてデプロイする
APIを提供してくれる
何か
GET xxxx
PUT xxxx
POST xxxx
GET xxxx
アプリを動かす何か
アクセス先を調べよう
API
api.107.22.72.200.xip.io
Application
dora.107.22.72.200.xip.io
あれ?
APIも、Appも、同じIPアドレス
$ nslookup api.107.22.72.200.xip.io	
Server:		 192.168.11.1	
Address:	 192.168.11.1#53	
!
Non-authoritative answer:	
api.107.22.72.200.xip.io	 canonical name = api.1jkk1uz.xip.io.	
Name:	 api.1jkk1uz.xip.io	
Address: 107.22.72.200	
!
$ nslookup dora.107.22.72.200.xip.io	
Server:		 192.168.11.1	
Address:	 192.168.11.1#53	
!
Non-authoritative answer:	
dora.107.22.72.200.xip.io	 canonical name = dora.1jkk1uz.xip.io.	
Name:	 dora.1jkk1uz.xip.io	
Address: 107.22.72.200
cf push
アドレスを元にアクセスを分配する

何者かが居る
APIを提供してくれる
何か
アクセス
を

分ける
何かブラウザ
アプリを動かす何か
cf scale
$ cf scale -i 3 -m 256M dora	
Scaling app dora in org jacopen / space jacopen-space as admin...	
OK	
cf scaleコマンドで、稼働する「インスタンス数」
「メモリサイズ」などを変更できる
cf push
アドレスを元にアクセスを分配する

何者かが居る
APIを提供してくれる
何か
アクセス
を

分ける
何かブラウザ
アプリが死ぬとどうなる?
dora/sigterm/KILL
sigterm/KILLで、自分自身のプロセスを終了
ポートが変わった
アプリの死活監視をしている

何かが居る
APIを提供してくれる
何か
アクセス
を

分ける
何か
死活
監視
結果
外から見えるCloud Foundry
APIを提供してくれる
何か
アクセス
を

分ける
何か
アプリを

動かす何か
死活
監視
Cloud Foundryの中身(の一部)
Cloud Controller
Router
DEA
Health

Manager
Cloud Foundryにおける
コンポーネントの
役割を知ろう
2
コンポーネント=?
Cloud Controller
Router
DEA
Health

Manager
コンポーネント=アプリケーション
Cloud Controller
(Ruby)
Router
(Golang)
DEA
(Ruby)
Health

Manager
(Golang)
全コンポーネントを1VMに集約できる
Cloud Controller
(Ruby)
Router
(Golang)
DEA
(Ruby)
Health

Manager
(Golang)
VM
(一般的に)実運用では、

コンポーネントごとにVMを分ける
Cloud Controller
(Ruby)
Router
(Golang)
DEA
(Ruby)
Health

Manager
(Golang)
VM
VM
VM VM
それぞれのコンポーネントを
見ていこう
Router
Cloud Controller
Router
DEA
Health

Manager
Routerとは
URLによって、適切なコンポーネントにアクセスを
振り分けるL7ロードバランサー(のようなもの)
ネットワーク機器の「ルーター」とは違う点に注意。
実体は、Ubuntu上で動く、Goで書かれた

アプリケーション。(Gorouterという)
Cloud Controller
Router
DEA
Health

Manager
api.107.22.72.200.xip.io
dora.107.22.72.200.xip.io
Cloud Controller
Router
DEA
Health

Manager
api.107.22.72.200.xip.io
dora.107.22.72.200.xip.io
なぜRouterはリクエストの振り先を
知っているのか?
Cloud Controller
Router
DEA
Health

Manager
router.register
各コンポーネントが、router.registerという
メッセージをRouterに送る
api.107.22.72.200.xip.ioは
10.244.0.138:9022に送って
dora.107.22.72.200.xip.io

は10.244.0.26:61032に送って
Cloud Controller
Router
DEA
Health

Manager
router.register
Routerは、収集した情報を元に

アクセスを分配する
dora.107.22.72.200.xip.io => 10.244.0.26:61032
api.107.22.72.200.xip.io => 10.244.0.138:9022
api.107.22.72.200.xip.io
dora.107.22.72.200.xip.io
Cloud Controller
Router
DEA
Health

Manager
router.register
同一URLに複数の振り先でも大丈夫
dora.107.22.72.200.xip.io => 10.244.0.26:61032
dora.107.22.72.200.xip.io => 10.244.0.27:58719
api.107.22.72.200.xip.io => 10.244.0.138:9022
api.107.22.72.200.xip.io => 10.244.0.139:9022
api.107.22.72.200.xip.io
dora.107.22.72.200.xip.io
Cloud Controller
DEA
Cloud Controller
Cloud Controller
Router
DEA
Health

Manager
Cloud Controllerとは
APIを提供するコンポーネント。
!
• cfコマンド等からアプリケーションの受け取り
• DEAに対してアプリの起動・停止の指示
• Service(データベース等)の作成の指示
!
などなど、Cloud Foundry全体に対しての

コントロールを行う。
POST /v2/apps?async=true HTTP/1.1	
{"name":"dora","space_guid":"dbf6ed0a-3108-45d8-9c78-a512d5071358"}	
HTTP/1.1 201 Created	
!
GET /v2/shared_domains HTTP/1.1	
HTTP/1.1 200 OK	
!
GET /v2/domains?inline-relations-depth=1&q=name%3A107.22.72.200.xip.io HTTP/1.1	
HTTP/1.1 200 OK	
!
GET /v2/routes?inline-relations-depth=1&q=host%3Adora%3Bdomain_guid%3A524ba14d-4d3f-495f-a2c7-a5ed25a70e81 HTTP/1.1	
HTTP/1.1 200 OK	
!
POST /v2/routes?async=true&inline-relations-depth=1 HTTP/1.1	
{"host":"dora","domain_guid":"524ba14d-4d3f-495f-a2c7-a5ed25a70e81","space_guid":"dbf6ed0a-3108-45d8-9c78-a512d5071358"}	
HTTP/1.1 201 Created	
!
PUT /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/routes/ed912294-be29-4013-8b1c-735851acee24 HTTP/1.1	
HTTP/1.1 201 Created	
!
PUT /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/bits?async=true HTTP/1.1	
Content-Type: multipart/form-data;	
HTTP/1.1 201 Created	
!
GET /v2/jobs/6dd46fe7-40b0-41d1-94aa-dd2ee80fd3b2 HTTP/1.1	
HTTP/1.1 200 OK	
(queued)	
!
GET /v2/jobs/6dd46fe7-40b0-41d1-94aa-dd2ee80fd3b2 HTTP/1.1	
HTTP/1.1 200 OK	
(finished)	
!
CONNECTING TO WEBSOCKET: wss://loggregator.107.22.72.200.xip.io:443/tail/?app=0e948568-aa90-47e9-a128-9ff3cc680600	
!
PUT /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600?async=true&inline-relations-depth=1 HTTP/1.1	
{"state":"STARTED"}	
!
GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/instances HTTP/1.1	
HTTP/1.1 400 Bad Request	
{"code":170002,"description":"App has not finished staging","error_code":"CF-NotStaged"}	
!
GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/instances HTTP/1.1	
⇐appの作成
⇐domainの取得
⇐routesの確認
⇐routesの作成
⇐appとroutesの紐付け
⇐ソースのアップロード
⇐appを起動
DEA
Cloud Controller
Router
DEA
Health

Manager
DEAとは
ユーザーアプリを動かすためのコンポーネント。

Droplet Execution Agentの略。
!
CF v2では、ユーザーアプリのStaging作業(Rubyの
bundle installなど)も担当する。
!
DEAはWardenというLinuxコンテナを使い、ユーザー
アプリを動かす(が、今回は触れない)
Clientからのソース受け取り
Cloud Controller
Router
DEA
Health

Manager
cf push
Gemfile
lib/
bin/
config.ru
app.rb
Staging依頼
(staging.start)
Cloud Controller
Router
DEA
Health

Manager
cf push
Gemfile
lib/
bin/
config.ru
app.rb
Gemfile
Gemfile.lock
vendor/
lib/
bin/
config.ru
Golden Packageの保存
Cloud Controller
Router
DEA
Health

Manager
cf push
Gemfile
Gemfile.lock
vendor/
lib/
bin/
config.ru
Start依頼
(dea.start)
Cloud Controller
Router
DEA
Health

Manager
cf push
Gemfile
Gemfile.lock
vendor/
lib/
bin/
config.ru
Gemfile
Gemfile.lock
vendor/
lib/
bin/
config.ru
Start依頼
(dea.start)
Cloud Controller
Router
DEA
Health

Manager
cf push
Gemfile
Gemfile.lock
vendor/
lib/
bin/
config.ru
Cloud Controller
Router
DEA
Health

Manager
cf scale -i 3
Gemfile
Gemfile.lock
vendor/
lib/
bin/
config.ru
DEA
Start依頼
(dea.start)
Cloud Controller
Router
DEA
Health

Manager
cf scale -i 3
Gemfile
Gemfile.lock
vendor/
lib/
bin/
config.ru
DEA
Start依頼
(dea.start)
Cloud Controller
Router
DEA
Health

Manager
cf scale -i 3
Gemfile
Gemfile.lock
vendor/
lib/
bin/
config.ru
DEA
Health Manager
Cloud Controller
Router
DEA
Health

Manager
DEA
Health Managerとは
!
ユーザーアプリが、「あるべき姿」になっているか
どうか、監視を行うコンポーネント。
!
最新版は、Goで書かれた「hm9000」
インスタンスの突然死
Cloud Controller
Router
DEA
Health

Manager
DEA
droplet.exited
Cloud Controller
Router
DEA
Health

Manager
DEA
hm9000.start
Cloud Controller
Router
DEA
Health

Manager
DEA
dea.start
Cloud Controller
Router
DEA
Health

Manager
DEA
dea.start
Cloud Controller
Router
DEA
Health

Manager
DEA
何故かインスタンスが多い場合
Cloud Controller
Router
DEA
Health

Manager
DEA
dea.heartbeat
Cloud Controller
Router
DEA
Health

Manager
DEA
3インスタンスのはず

なのに、4つ来た・・・
hm9000.stop
Cloud Controller
Router
DEA
Health

Manager
DEA
dea.stop
Cloud Controller
Router
DEA
Health

Manager
DEA
dea.stop
Cloud Controller
Router
DEA
Health

Manager
DEA
それぞれの関係、分かりましたか?
Cloud Controller
Router
DEA
Health

Manager
内部通信
外部からのアクセス
Cloud Foundryにおける
コンポーネント間
通信を知ろう
3
さっきのこの図
Cloud Controller
Router
DEA
Health

Manager
内部通信
外部からのアクセス
Cloud Controller
Router
DEA
Health

Manager
NATS
NATSとは
!
Publish-Subscribeモデルの軽量メッセージングシステム
!
Cloud Foundryの生みの親、Derek Collison氏が開発。

Cloud Foundry登場時から存在する、アーキテクチャの

キモになるシステム。
!
元々はRubyで、EventMachineを使って実装されていた。
現在はGoで実装された、gnatsdになっている
Publish-Subscribeモデル
Publisher Subscriber
NATS
Subject: foo.bar
Subject: foo.bar
Publish-Subscribeモデル
Publisher Subscriber
NATS
Subject: foo.bar

{“message”:“hogefuga”}
{“message”:“hogefuga”}
{“message”:“hogefuga”}
Publish-Subscribeモデル
Publisher Subscriber
NATS
Cloud
Controller
DEA
Router
Subject: router.register

{“host":"10.244.0.138","port":9022,"uris":
["api.107.22.72.200.xip.io"]}
Subject: router.register

{“host":"10.244.0.111","port":37902,"uris":
["dora.107.22.72.200.xip.io"]}
全Subscriberが同じメッセージを受け取れる
NATS
Cloud
Controller
DEA
Router
Subject: router.register

{“host":"10.244.0.138","port":9022,"uris":
["api.107.22.72.200.xip.io"]}
Subject: router.register

{“host":"10.244.0.111","port":37902,"uris":
["dora.107.22.72.200.xip.io"]}
Router
Router
Publisher Subscriber
もしNATSが無かったら・・・
NATSあり 直接通信
1.Routerを起動
2.Routerはrouter.registerを
subscribe
1.新Routerを管理DBに登録
2.Routerを起動
3.DEA, CCは管理DBを参照
し、Routerリストを取得
4.各Routerに対してメッ
セージ送信
Cloud
Controller
Router
DEA Health

Manager
NATSRouter
Router
Cloud
Controller
DEA
DEA
DEA
Cloud
Controller
Cloud
Controller
Cloud Foundryのアーキテクチャ
!
• NATSを中心とした、疎結合なコンポーネント間連携
• スケールしやすい!
• 自律分散型システム
• 管理する情報は必要最低限
• セルフヒーリング
• 要は勝手に治る
• SPoF(単一障害点)は排除
• ただし最近までのNATSを除く
Cloud Foundry V1と

変わってない?
CF v1 と v2 の違い
• 大まかなアーキテクチャは変わっていない
• DEAがDEAngになり、WardenというLinux

コンテナでアプリを動かすように
• いろんなコンポーネントがGoに書き換えられた
• HerokuのBuildpackが使えるように
• APIの互換性は一切無し!
次回はもうちょっと

踏み込んだ内容をやるよ

More Related Content

What's hot

What's hot (20)

DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
CRX: Container Runtime Executive 
CRX: Container Runtime Executive CRX: Container Runtime Executive 
CRX: Container Runtime Executive 
 
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
コンテナイメージの脆弱性スキャンについて
コンテナイメージの脆弱性スキャンについてコンテナイメージの脆弱性スキャンについて
コンテナイメージの脆弱性スキャンについて
 
データセンターネットワークでのPrometheus活用事例
データセンターネットワークでのPrometheus活用事例データセンターネットワークでのPrometheus活用事例
データセンターネットワークでのPrometheus活用事例
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
kubernetes(GKE)環境におけるdatadog利用
kubernetes(GKE)環境におけるdatadog利用kubernetes(GKE)環境におけるdatadog利用
kubernetes(GKE)環境におけるdatadog利用
 
Grafana Dashboards as Code
Grafana Dashboards as CodeGrafana Dashboards as Code
Grafana Dashboards as Code
 
5分で分かるgitのrefspec
5分で分かるgitのrefspec5分で分かるgitのrefspec
5分で分かるgitのrefspec
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
 

Viewers also liked

Viewers also liked (6)

GO-CFを試してみる
GO-CFを試してみるGO-CFを試してみる
GO-CFを試してみる
 
Cloud Foundry for PHP developers
Cloud Foundry for PHP developersCloud Foundry for PHP developers
Cloud Foundry for PHP developers
 
Bluemix and DevOps workshop lab
Bluemix and DevOps workshop labBluemix and DevOps workshop lab
Bluemix and DevOps workshop lab
 
How does the Cloud Foundry Diego Project Run at Scale?
How does the Cloud Foundry Diego Project Run at Scale?How does the Cloud Foundry Diego Project Run at Scale?
How does the Cloud Foundry Diego Project Run at Scale?
 
Introduction into Cloud Foundry and Bosh | anynines
Introduction into Cloud Foundry and Bosh | anyninesIntroduction into Cloud Foundry and Bosh | anynines
Introduction into Cloud Foundry and Bosh | anynines
 
今すぐ始めるCloud Foundry #hackt #hackt_k
今すぐ始めるCloud Foundry #hackt #hackt_k今すぐ始めるCloud Foundry #hackt #hackt_k
今すぐ始めるCloud Foundry #hackt #hackt_k
 

Similar to Cloud Foundryは何故動くのか

AWSをコードで定義する
AWSをコードで定義するAWSをコードで定義する
AWSをコードで定義する
Sugawara Genki
 
Scripting Layer for Android + Perl
Scripting Layer for Android + PerlScripting Layer for Android + Perl
Scripting Layer for Android + Perl
Naoya Ito
 
20150101勉強会 dokku alt
20150101勉強会 dokku alt20150101勉強会 dokku alt
20150101勉強会 dokku alt
Shugo Numano
 
Docker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレDocker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレ
peryaudo
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
 

Similar to Cloud Foundryは何故動くのか (20)

AWSをコードで定義する
AWSをコードで定義するAWSをコードで定義する
AWSをコードで定義する
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
 
Fluentdで本番環境を再現
Fluentdで本番環境を再現Fluentdで本番環境を再現
Fluentdで本番環境を再現
 
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
 
Scripting Layer for Android + Perl
Scripting Layer for Android + PerlScripting Layer for Android + Perl
Scripting Layer for Android + Perl
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
Server side Swift & Photo Booth
Server side Swift & Photo Booth Server side Swift & Photo Booth
Server side Swift & Photo Booth
 
20150101勉強会 dokku alt
20150101勉強会 dokku alt20150101勉強会 dokku alt
20150101勉強会 dokku alt
 
Start SQL Server with Docker
Start SQL Server with DockerStart SQL Server with Docker
Start SQL Server with Docker
 
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイドOpenstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!
 
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
 
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
 
Docker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレDocker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレ
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!
 
Garden introduction for dea users public
Garden introduction for dea users   publicGarden introduction for dea users   public
Garden introduction for dea users public
 
activerecord-turntable
activerecord-turntableactiverecord-turntable
activerecord-turntable
 
私のEC2 2015振り返り
私のEC2 2015振り返り私のEC2 2015振り返り
私のEC2 2015振り返り
 
Using Windows Azure
Using Windows AzureUsing Windows Azure
Using Windows Azure
 

More from Kazuto Kusama

More from Kazuto Kusama (20)

Concourseで快適な自動化の旅
Concourseで快適な自動化の旅Concourseで快適な自動化の旅
Concourseで快適な自動化の旅
 
Istio, Kubernetes and Cloud Foundry (修正版)
Istio, Kubernetes and Cloud Foundry (修正版)Istio, Kubernetes and Cloud Foundry (修正版)
Istio, Kubernetes and Cloud Foundry (修正版)
 
Istio, Kubernetes and Cloud Foundry
Istio, Kubernetes and Cloud FoundryIstio, Kubernetes and Cloud Foundry
Istio, Kubernetes and Cloud Foundry
 
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
 
k8sだけじゃないIstio - Cloud FoundryのIstioインテグレーションについて
k8sだけじゃないIstio - Cloud FoundryのIstioインテグレーションについてk8sだけじゃないIstio - Cloud FoundryのIstioインテグレーションについて
k8sだけじゃないIstio - Cloud FoundryのIstioインテグレーションについて
 
Cloud Foundry Container Runtimeで快適Kubernetes運用
Cloud Foundry Container Runtimeで快適Kubernetes運用Cloud Foundry Container Runtimeで快適Kubernetes運用
Cloud Foundry Container Runtimeで快適Kubernetes運用
 
改めてPaaSについて考えてみる
改めてPaaSについて考えてみる改めてPaaSについて考えてみる
改めてPaaSについて考えてみる
 
Cloud Foundry Container-to-Container Networking
Cloud Foundry Container-to-Container NetworkingCloud Foundry Container-to-Container Networking
Cloud Foundry Container-to-Container Networking
 
CFの便利機能を他の環境でも。Open Service Broker
CFの便利機能を他の環境でも。Open Service BrokerCFの便利機能を他の環境でも。Open Service Broker
CFの便利機能を他の環境でも。Open Service Broker
 
グループ会社を巻き込んで勉強会をやってみるには
グループ会社を巻き込んで勉強会をやってみるにはグループ会社を巻き込んで勉強会をやってみるには
グループ会社を巻き込んで勉強会をやってみるには
 
Docker PaaSとしての OpenShift, Deis, Flynn比較
Docker PaaSとしての OpenShift, Deis, Flynn比較Docker PaaSとしての OpenShift, Deis, Flynn比較
Docker PaaSとしての OpenShift, Deis, Flynn比較
 
クラウドを『作る』ってどういうこと?
クラウドを『作る』ってどういうこと?クラウドを『作る』ってどういうこと?
クラウドを『作る』ってどういうこと?
 
Lattice深掘り話
Lattice深掘り話Lattice深掘り話
Lattice深掘り話
 
Cloud Foundryで学ぶ、PaaSのしくみ講座
Cloud Foundryで学ぶ、PaaSのしくみ講座Cloud Foundryで学ぶ、PaaSのしくみ講座
Cloud Foundryで学ぶ、PaaSのしくみ講座
 
OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話
 
知って欲しいPaaSの話
知って欲しいPaaSの話知って欲しいPaaSの話
知って欲しいPaaSの話
 
KubernetesとOpenShiftの話
KubernetesとOpenShiftの話KubernetesとOpenShiftの話
KubernetesとOpenShiftの話
 
最近のKubernetesとDocker Machine/Swarmの話
最近のKubernetesとDocker Machine/Swarmの話最近のKubernetesとDocker Machine/Swarmの話
最近のKubernetesとDocker Machine/Swarmの話
 
DockerとKubernetesが作る未来
DockerとKubernetesが作る未来DockerとKubernetesが作る未来
DockerとKubernetesが作る未来
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
 

Cloud Foundryは何故動くのか