SlideShare a Scribd company logo
Cloud Foundry
How it works
@jacopen
Kazuto Kusama
NTT Communications
Developer of Cloudn PaaS
Introduction
Planned topic was originally,
• Briefly discuss about Cloud Foundry architecture
overview
• Talk about the featured changed in V2
But ! Overview slides nearly become 100, gave up to
deep dive into it.
So, this material is for beginner
Deep dive is next time!
$ 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
Deploy Sinatra
application to
Cloud Foundry
[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
What happened inside
CF during this time
Let’s reveal Cloud Foundry
black box
Agenda
3 chapters to understand mechanism of Cloud Foundry
• Inspect Cloud Foundry internal from external interface
• Understand role of Cloud Foundry components
• Understand communications between Cloud Foundry
components
Not included this time
• Explanation of Warden container and Buildpack
• Explanation of services such as MySQL or
Postgress.
• Explanation of related services such as
loggregator
Let’s begin
Inspect Cloud Foundry internal
from external interface
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 : Key to inspect
CF_TRACE=true
Enable to trace requests behind cf command.
Take a look at
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
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
HTTP/1.1 200 OK
{"0":{"state":"RUNNING","since":1398092703.1739626,"debug_ip":null,"debug_port":null,"console_ip":null,"console_port":null}}
GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/stats HTTP/1.1
HTTP/1.1 200 OK
{"0":{"state":"RUNNING","stats":{"name":"dora","uris":["dora.107.22.72.200.xip.io"],"host":"10.244.0.26","port":61026,"uptime":3,"mem_quota":268435456,"disk_quota":1073741824,"fds_quota":16384,"usage"
:{"time":"2014-04-21 15:05:04 +0000","cpu":0,"mem":75673600,"disk":0}}}}
GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/instances HTTP/1.1
HTTP/1.1 200 OK
{"0":{"state":"RUNNING","since":1398092703.1739626,"debug_ip":null,"debug_port":null,"console_ip":null,"console_port":null}}
GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/stats HTTP/1.1
HTTP/1.1 200 OK
{"0":{"state":"RUNNING","stats":{"name":"dora","uris":["dora.107.22.72.200.xip.io"],"host":"10.244.0.26","port":61026,"uptime":4,"mem_quota":268435456,"disk_quota":1073741824,"fds_quota":16384,"usage"
:{"time":"2014-04-21 15:05:05 +0000","cpu":0,"mem":75673600,"disk":0}}}}
GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/summary HTTP/1.1
HTTP/1.1 200 OK
GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/instances HTTP/1.1
HTTP/1.1 200 OK
GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/stats HTTP/1.1
HTTP/1.1 200 OK
Communicating something to
api.107.22.72.200.xip.io
Things found out
cf push
Cloud Foundry provides API
Something which provides
API
cf push
cf push deploy using various APIs
GET xxxx
PUT xxxx
POST xxxx
GET xxxx
Something which runs
application
Something which provides
API
Let’s check access point
API
api.107.22.72.200.xip.io
Application
dora.107.22.72.200.xip.io
Uhm?
$ 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
IP addresses are same for both API and App
cf push
Something to dispatch access
based on URL
Somethingtodispatchaccess
Browser
Something which runs
application
Something which provides
API
cf scale
$ cf scale -i 3 -m 256M dora
Scaling app dora in org jacopen / space jacopen-space as admin...
OK
cf scale command changes “number of active
instances” and/or “memory size”.
Somethingtodispatchaccess
cf push
Browser
Something which runs
application
Something which provides
API
Something to dispatch access
based on URL
What happens when
application die ?
dora/sigterm/KILL
Kill itself using sigterm/KILL
Port number has been changed.
Something to monitor application
health status
Monitor
Health
Somethingtodispatchaccess
Something which provides
API
Result
External view of
Cloud Foundry
Something
to run App
Monitor
Health
Somethingtodispatchaccess
Something which provides
API
Cloud Foundry components
(part of it)
DEA
Health
Manager
Router
Cloud Controller
Understand role of
Cloud Foundry
components
component=?
Cloud Controller
Router
DEA
Health
Manager
Component = Application
Cloud Controller
(Ruby)
Router
(Golang)
DEA
(Ruby)
Health
Manager
(Golang)
All components can run on 1VM
Cloud Controller
(Ruby)
Router
(Golang)
DEA
(Ruby)
Health
Manager
(Golang)
(Generally) In real situation, separate VM
for each components
Cloud Controller
(Ruby)
Router
(Golang)
DEA
(Ruby)
Health
Manager
(Golang)
Let’s take a look at each
components
Router
Cloud Controller
Router
DEA
Health
Manager
Router
Based on URL, dispatches access to appropriate
component. Similar to L7 load balancer.
This is different from “router” in network equipment.
It is implemented as an application (called Gorouter)
which runs on Ubuntu. Written in Go.
Cloud Controller
Router
DEA
Health
Manager
router.register
Each component send “router.register”
message to Router
Send
api.107.22.72.200.xip.io
to 10.244.0.138:9022
Send
dora.107.22.72.200.xip.io
to 10.244.0.26:61032
Cloud Controller
Router
DEA
Health
Manager
router.register
Router dispatches accesses based on
collected information
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
Multiple targets are handled for the same
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
A component to provide API.
Receive application from cf command, etc.
Control application start/stop against DEA.
Control creation of service such as database.
Etc, etc. Control overall 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
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
HTTP/1.1 200 OK
{"0":{"state":"RUNNING","since":1398092703.1739626,"debug_ip":null,"debug_port":null,"console_ip":null,"console_port":null}}
GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/stats HTTP/1.1
HTTP/1.1 200 OK
{"0":{"state":"RUNNING","stats":{"name":"dora","uris":["dora.107.22.72.200.xip.io"],"host":"10.244.0.26","port":61026,"uptime":3,"mem_quota":268435456,"disk_quota":1073741824,"fds_quota":16384,"usage":{"time":"2014-
04-21 15:05:04 +0000","cpu":0,"mem":75673600,"disk":0}}}}
GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/instances HTTP/1.1
HTTP/1.1 200 OK
{"0":{"state":"RUNNING","since":1398092703.1739626,"debug_ip":null,"debug_port":null,"console_ip":null,"console_port":null}}
GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/stats HTTP/1.1
HTTP/1.1 200 OK
{"0":{"state":"RUNNING","stats":{"name":"dora","uris":["dora.107.22.72.200.xip.io"],"host":"10.244.0.26","port":61026,"uptime":4,"mem_quota":268435456,"disk_quota":1073741824,"fds_quota":16384,"usage":{"time":"2014-
04-21 15:05:05 +0000","cpu":0,"mem":75673600,"disk":0}}}}
GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/summary HTTP/1.1
HTTP/1.1 200 OK
GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/instances HTTP/1.1
HTTP/1.1 200 OK
GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/stats HTTP/1.1
HTTP/1.1 200 OK
⇐ Create app
⇐ Obtain domain
⇐verify routes
⇐create routes
⇐ bind app and routes
⇐upload source files
⇐start app
DEA
Cloud Controller
Router
DEA
Health
Manager
DEA
A component to run user’s application.
Abbreviation of “Droplet Execution Agent"
In CF V2, it is responsible for user application staging (e.g.
Ruby bundle install).
DEA uses Linux container called Warden to run user
application. (Warden is not described this time)
Receive source files from client
Cloud Controller
Router
DEA
Health
Manager
cf push
Gemfile
lib/
bin/
config.ru
app.rb
Staging request
(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
app.rb
Store Droplet
Cloud Controller
Router
DEA
Health
Manager
cf push
Gemfile
Gemfile.lock
vendor/
lib/
bin/
config.ru
app.rb
Start request
(dea.start)
Cloud Controller
Router
DEA
Health
Manager
cf push
Gemfile
Gemfile.lock
vendor/
lib/
bin/
config.ru
app.rb
Gemfile
Gemfile.lock
vendor/
lib/
bin/
config.ru
app.rb
Start Request
(dea.start)
Cloud Controller
Router
DEA
Health
Manager
cf push
Gemfile
Gemfile.lock
vendor/
lib/
bin/
config.ru
app.rb
Cloud Controller
Router
DEA
Health
Manager
cf scale -i 3
Gemfile
Gemfile.lock
vendor/
lib/
bin/
config.ru
app.rb
DEA
Start request
(dea.start)
Cloud Controller
Router
DEA
Health
Manage
r
cf scale -i 3
Gemfile
Gemfile.lock
vendor/
lib/
bin/
config.ru
app.rb
DEA
Start request
(dea.start)
Cloud Controller
Router
DEA
Health
Manager
cf scale -i 3
Gemfile
Gemfile.lock
vendor/
lib/
bin/
config.ru
app.rb
DEA
Health Manager
Cloud Controller
Router
DEA
Health
Manager
DEA
Health Manager
A component to monitor user application to see if the
status is “what it should be”.
The latest version is “hm9000” written in Go.
Suddenly instance dies
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
When the number of instances
are over…
Cloud Controller
Router
DEA
Health
Manager
DEA
dea.heartbeat
Cloud Controller
Router
DEA
Health
Manager
DEA
I got 4, it should
be 3 ….
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
Did you understand the each
relationship?
Cloud Controller
Router
DEA
Health
Manager
Internal
Communication
External Access
Understand communications
between Cloud Foundry
components
The last chart
Cloud Controller
Router
DEA
Health
Manager
Internal
Communication
External Access
Cloud Controller
Router
DEA
Health
Manager
NATS
In reality
NATS
Publish-Subscribe model lightweight messaging
Developed by Derek Collison designed and architected
the industry's first Open PaaS, Cloud Foundry
Exists at the beginning of Cloud Foundry. Key component
in the architecture.
It was implemented in Ruby using EventMachine. It is re-
written using Go language (dnatsd)
Publish-Subscribe Model
Publisher Subscriber
NATS
Subject:
foo.bar
Subject:
foo.bar
Publish-Subscribe Model
Publisher Subscriber
NATS
Subject: foo.bar
{“message”:
“hogefuga”}
{“message”: “hogefuga”}
{“message”: “hogefuga”}
Publish-Subscribe Model
Publisher Subscriber
NATS
Cloud
Controller
DEA
Router
Subject: router.register
{“host":"10.244.0.138","port":
9022,"uris":["api.107.22.72.2
00.xip.io"]}
Subject: router.register
{“host":"10.244.0.111","port":
37902,"uris":["dora.107.22.7
2.200.xip.io"]}
All subscriber receive the same message
NATS
Cloud
Controller
DEA
Router
Subject: router.register
{“host":"10.244.0.138","port":
9022,"uris":["api.107.22.72.2
00.xip.io"]}
Subject: router.register
{“host":"10.244.0.111","port":
37902,"uris":["dora.107.22.7
2.200.xip.io"]}
Router
Router
Publisher Subscriber
When there is no NATS component…
NATS
Direct Communication
1.Run Router
2.Router subscribe
router.register
1.Register new Router in
admin DB
2.Run Router
3.DEA or Cloud Controler
obtain Router list from
admin DB
4.Sead message to each
Router
Cloud
Controller
Router
DEA Health
Manager
NATSRouter
Router
Cloud
Controller
DEA
DEA
DEA
Cloud
Controller
Cloud
Controller
Cloud Foundry Architecture
• Centered around NATS, loosely coupled
component communications. Scalable.
• Self-organized distributed system. Administrative
information is minimal.
• Self healing. The point is that it heals by itself.
• Removes SPoF( Single Point of Failure). Except
recent NATS.
Cloud Foundry V1
What’s the difference ?
Difference between CF v1 and v2
Overall architecture has not been changed.
DEA became DEAng, and runs Linux container called
Warden
Many components were re-written in Go.
Can use Heroku Buildpack
There is no API compatibility !
We will deep dive into Cloud
Foundry next time.
End Note.
This material was translated by @ibmamnt
From original chart by @jacopen
http://www.slideshare.net/jacopen/cloud-foundry-33851040

More Related Content

What's hot

Cloud Foundry Diego: Modular and Extensible Substructure for Microservices
Cloud Foundry Diego: Modular and Extensible Substructure for MicroservicesCloud Foundry Diego: Modular and Extensible Substructure for Microservices
Cloud Foundry Diego: Modular and Extensible Substructure for Microservices
Matt Stine
 
Cloud Foundry: Hands-on Deployment Workshop
Cloud Foundry: Hands-on Deployment WorkshopCloud Foundry: Hands-on Deployment Workshop
Cloud Foundry: Hands-on Deployment Workshop
Manuel Garcia
 
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
Docker, Inc.
 
Altoros Cloud Foundry Training: hands-on workshop for DevOps, Architects and ...
Altoros Cloud Foundry Training: hands-on workshop for DevOps, Architects and ...Altoros Cloud Foundry Training: hands-on workshop for DevOps, Architects and ...
Altoros Cloud Foundry Training: hands-on workshop for DevOps, Architects and ...
Manuel Garcia
 
Kubernetes day 2 Operations
Kubernetes day 2 OperationsKubernetes day 2 Operations
Kubernetes day 2 Operations
Paul Czarkowski
 
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
anynines GmbH
 
Rock Solid Deployment of Web Applications
Rock Solid Deployment of Web ApplicationsRock Solid Deployment of Web Applications
Rock Solid Deployment of Web Applications
Pablo Godel
 
A DevOps guide to Kubernetes
A DevOps guide to KubernetesA DevOps guide to Kubernetes
A DevOps guide to Kubernetes
Paul Czarkowski
 
Kubernetes for the PHP developer
Kubernetes for the PHP developerKubernetes for the PHP developer
Kubernetes for the PHP developer
Paul Czarkowski
 
Cloud infrastructure as code
Cloud infrastructure as codeCloud infrastructure as code
Cloud infrastructure as code
Tomasz Cholewa
 
Cloud Foundry and OpenStack - A Marriage Made in Heaven! (Cloud Foundry Summi...
Cloud Foundry and OpenStack - A Marriage Made in Heaven! (Cloud Foundry Summi...Cloud Foundry and OpenStack - A Marriage Made in Heaven! (Cloud Foundry Summi...
Cloud Foundry and OpenStack - A Marriage Made in Heaven! (Cloud Foundry Summi...
VMware Tanzu
 
Monitor your Java application with Prometheus Stack
Monitor your Java application with Prometheus StackMonitor your Java application with Prometheus Stack
Monitor your Java application with Prometheus Stack
Wojciech Barczyński
 
Cloud Foundry Deployment Tools: BOSH vs Juju Charms
Cloud Foundry Deployment Tools:  BOSH vs Juju CharmsCloud Foundry Deployment Tools:  BOSH vs Juju Charms
Cloud Foundry Deployment Tools: BOSH vs Juju Charms
Altoros
 
Devops: Enabled Through a Recasting of Operational Roles
Devops: Enabled Through a Recasting of Operational RolesDevops: Enabled Through a Recasting of Operational Roles
Devops: Enabled Through a Recasting of Operational Roles
cornelia davis
 
第一回Cloudfoundry輪読会資料
第一回Cloudfoundry輪読会資料第一回Cloudfoundry輪読会資料
第一回Cloudfoundry輪読会資料Toshihiko Ikeda
 
Finding and Organizing a Great Cloud Foundry User Group
Finding and Organizing a Great Cloud Foundry User GroupFinding and Organizing a Great Cloud Foundry User Group
Finding and Organizing a Great Cloud Foundry User Group
Daniel Krook
 
컨테이너 기술 소개 - Warden, Garden, Docker
컨테이너 기술 소개 - Warden, Garden, Docker컨테이너 기술 소개 - Warden, Garden, Docker
컨테이너 기술 소개 - Warden, Garden, Docker
seungdon Choi
 
An Introduction into Bosh | anynines
An Introduction into Bosh | anynines An Introduction into Bosh | anynines
An Introduction into Bosh | anynines
anynines GmbH
 
Building applications with Serverless Framework and AWS Lambda - JavaZone 2019
Building applications with Serverless Framework and AWS Lambda - JavaZone 2019Building applications with Serverless Framework and AWS Lambda - JavaZone 2019
Building applications with Serverless Framework and AWS Lambda - JavaZone 2019
Fredrik Vraalsen
 
CI Implementation with Kubernetes at LivePerson by Saar Demri
CI Implementation with Kubernetes at LivePerson by Saar DemriCI Implementation with Kubernetes at LivePerson by Saar Demri
CI Implementation with Kubernetes at LivePerson by Saar Demri
DoiT International
 

What's hot (20)

Cloud Foundry Diego: Modular and Extensible Substructure for Microservices
Cloud Foundry Diego: Modular and Extensible Substructure for MicroservicesCloud Foundry Diego: Modular and Extensible Substructure for Microservices
Cloud Foundry Diego: Modular and Extensible Substructure for Microservices
 
Cloud Foundry: Hands-on Deployment Workshop
Cloud Foundry: Hands-on Deployment WorkshopCloud Foundry: Hands-on Deployment Workshop
Cloud Foundry: Hands-on Deployment Workshop
 
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
 
Altoros Cloud Foundry Training: hands-on workshop for DevOps, Architects and ...
Altoros Cloud Foundry Training: hands-on workshop for DevOps, Architects and ...Altoros Cloud Foundry Training: hands-on workshop for DevOps, Architects and ...
Altoros Cloud Foundry Training: hands-on workshop for DevOps, Architects and ...
 
Kubernetes day 2 Operations
Kubernetes day 2 OperationsKubernetes day 2 Operations
Kubernetes day 2 Operations
 
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
 
Rock Solid Deployment of Web Applications
Rock Solid Deployment of Web ApplicationsRock Solid Deployment of Web Applications
Rock Solid Deployment of Web Applications
 
A DevOps guide to Kubernetes
A DevOps guide to KubernetesA DevOps guide to Kubernetes
A DevOps guide to Kubernetes
 
Kubernetes for the PHP developer
Kubernetes for the PHP developerKubernetes for the PHP developer
Kubernetes for the PHP developer
 
Cloud infrastructure as code
Cloud infrastructure as codeCloud infrastructure as code
Cloud infrastructure as code
 
Cloud Foundry and OpenStack - A Marriage Made in Heaven! (Cloud Foundry Summi...
Cloud Foundry and OpenStack - A Marriage Made in Heaven! (Cloud Foundry Summi...Cloud Foundry and OpenStack - A Marriage Made in Heaven! (Cloud Foundry Summi...
Cloud Foundry and OpenStack - A Marriage Made in Heaven! (Cloud Foundry Summi...
 
Monitor your Java application with Prometheus Stack
Monitor your Java application with Prometheus StackMonitor your Java application with Prometheus Stack
Monitor your Java application with Prometheus Stack
 
Cloud Foundry Deployment Tools: BOSH vs Juju Charms
Cloud Foundry Deployment Tools:  BOSH vs Juju CharmsCloud Foundry Deployment Tools:  BOSH vs Juju Charms
Cloud Foundry Deployment Tools: BOSH vs Juju Charms
 
Devops: Enabled Through a Recasting of Operational Roles
Devops: Enabled Through a Recasting of Operational RolesDevops: Enabled Through a Recasting of Operational Roles
Devops: Enabled Through a Recasting of Operational Roles
 
第一回Cloudfoundry輪読会資料
第一回Cloudfoundry輪読会資料第一回Cloudfoundry輪読会資料
第一回Cloudfoundry輪読会資料
 
Finding and Organizing a Great Cloud Foundry User Group
Finding and Organizing a Great Cloud Foundry User GroupFinding and Organizing a Great Cloud Foundry User Group
Finding and Organizing a Great Cloud Foundry User Group
 
컨테이너 기술 소개 - Warden, Garden, Docker
컨테이너 기술 소개 - Warden, Garden, Docker컨테이너 기술 소개 - Warden, Garden, Docker
컨테이너 기술 소개 - Warden, Garden, Docker
 
An Introduction into Bosh | anynines
An Introduction into Bosh | anynines An Introduction into Bosh | anynines
An Introduction into Bosh | anynines
 
Building applications with Serverless Framework and AWS Lambda - JavaZone 2019
Building applications with Serverless Framework and AWS Lambda - JavaZone 2019Building applications with Serverless Framework and AWS Lambda - JavaZone 2019
Building applications with Serverless Framework and AWS Lambda - JavaZone 2019
 
CI Implementation with Kubernetes at LivePerson by Saar Demri
CI Implementation with Kubernetes at LivePerson by Saar DemriCI Implementation with Kubernetes at LivePerson by Saar Demri
CI Implementation with Kubernetes at LivePerson by Saar Demri
 

Similar to Cloud Foundry | How it works

GO-CFを試してみる
GO-CFを試してみるGO-CFを試してみる
GO-CFを試してみる
Takeshi Morikawa
 
Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy
Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the ProxyCloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy
Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy
Maki Toshio
 
Introduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUGIntroduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUG
Toshiaki Maki
 
Cloud Foundry V2 | Intermediate Deep Dive
Cloud Foundry V2 | Intermediate Deep DiveCloud Foundry V2 | Intermediate Deep Dive
Cloud Foundry V2 | Intermediate Deep DiveKazuto Kusama
 
GE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoTGE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoT
Kai Zhao
 
Simplify Cloud Applications using Spring Cloud
Simplify Cloud Applications using Spring CloudSimplify Cloud Applications using Spring Cloud
Simplify Cloud Applications using Spring Cloud
Ramnivas Laddad
 
Kubernetes best practices
Kubernetes best practicesKubernetes best practices
Kubernetes best practices
Bill Liu
 
Real World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js ApplicationsReal World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js Applications
Ben Hall
 
Cloud focker を試してみた public
Cloud focker を試してみた   publicCloud focker を試してみた   public
Cloud focker を試してみた publicTakehiko Amano
 
Making a small QA system with Docker
Making a small QA system with DockerMaking a small QA system with Docker
Making a small QA system with Docker
Naoki AINOYA
 
Infrastructure = code - 1 year later
Infrastructure = code - 1 year laterInfrastructure = code - 1 year later
Infrastructure = code - 1 year later
Christian Ortner
 
Apache Airflow Introduction
Apache Airflow IntroductionApache Airflow Introduction
Apache Airflow Introduction
Liangjun Jiang
 
Deployment Tactics
Deployment TacticsDeployment Tactics
Deployment Tactics
Ian Barber
 
Docking with Docker
Docking with DockerDocking with Docker
How dorma+kaba leverages and deploys on CloudFoundry - CloudFoundry Summit Eu...
How dorma+kaba leverages and deploys on CloudFoundry - CloudFoundry Summit Eu...How dorma+kaba leverages and deploys on CloudFoundry - CloudFoundry Summit Eu...
How dorma+kaba leverages and deploys on CloudFoundry - CloudFoundry Summit Eu...
Adriano Raiano
 
CloudLand 2023: Rock, Paper, Scissors Cloud Competition - Go vs. Java
CloudLand 2023: Rock, Paper, Scissors Cloud Competition - Go vs. JavaCloudLand 2023: Rock, Paper, Scissors Cloud Competition - Go vs. Java
CloudLand 2023: Rock, Paper, Scissors Cloud Competition - Go vs. Java
Jan Stamer
 
From airflow to google cloud composer
From airflow to google cloud composerFrom airflow to google cloud composer
From airflow to google cloud composer
Bruce Kuo
 
PCF1: Cloud Foundry Diego ( Predix Transform 2016)
PCF1: Cloud Foundry Diego ( Predix Transform 2016)PCF1: Cloud Foundry Diego ( Predix Transform 2016)
PCF1: Cloud Foundry Diego ( Predix Transform 2016)
Predix
 
How to test if Cloudflare is running live for your website
How to test if Cloudflare is running live for your websiteHow to test if Cloudflare is running live for your website
How to test if Cloudflare is running live for your website
Vu Long Tran
 
Going live with BommandBox and docker Into The Box 2018
Going live with BommandBox and docker Into The Box 2018Going live with BommandBox and docker Into The Box 2018
Going live with BommandBox and docker Into The Box 2018
Ortus Solutions, Corp
 

Similar to Cloud Foundry | How it works (20)

GO-CFを試してみる
GO-CFを試してみるGO-CFを試してみる
GO-CFを試してみる
 
Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy
Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the ProxyCloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy
Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy
 
Introduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUGIntroduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUG
 
Cloud Foundry V2 | Intermediate Deep Dive
Cloud Foundry V2 | Intermediate Deep DiveCloud Foundry V2 | Intermediate Deep Dive
Cloud Foundry V2 | Intermediate Deep Dive
 
GE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoTGE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoT
 
Simplify Cloud Applications using Spring Cloud
Simplify Cloud Applications using Spring CloudSimplify Cloud Applications using Spring Cloud
Simplify Cloud Applications using Spring Cloud
 
Kubernetes best practices
Kubernetes best practicesKubernetes best practices
Kubernetes best practices
 
Real World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js ApplicationsReal World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js Applications
 
Cloud focker を試してみた public
Cloud focker を試してみた   publicCloud focker を試してみた   public
Cloud focker を試してみた public
 
Making a small QA system with Docker
Making a small QA system with DockerMaking a small QA system with Docker
Making a small QA system with Docker
 
Infrastructure = code - 1 year later
Infrastructure = code - 1 year laterInfrastructure = code - 1 year later
Infrastructure = code - 1 year later
 
Apache Airflow Introduction
Apache Airflow IntroductionApache Airflow Introduction
Apache Airflow Introduction
 
Deployment Tactics
Deployment TacticsDeployment Tactics
Deployment Tactics
 
Docking with Docker
Docking with DockerDocking with Docker
Docking with Docker
 
How dorma+kaba leverages and deploys on CloudFoundry - CloudFoundry Summit Eu...
How dorma+kaba leverages and deploys on CloudFoundry - CloudFoundry Summit Eu...How dorma+kaba leverages and deploys on CloudFoundry - CloudFoundry Summit Eu...
How dorma+kaba leverages and deploys on CloudFoundry - CloudFoundry Summit Eu...
 
CloudLand 2023: Rock, Paper, Scissors Cloud Competition - Go vs. Java
CloudLand 2023: Rock, Paper, Scissors Cloud Competition - Go vs. JavaCloudLand 2023: Rock, Paper, Scissors Cloud Competition - Go vs. Java
CloudLand 2023: Rock, Paper, Scissors Cloud Competition - Go vs. Java
 
From airflow to google cloud composer
From airflow to google cloud composerFrom airflow to google cloud composer
From airflow to google cloud composer
 
PCF1: Cloud Foundry Diego ( Predix Transform 2016)
PCF1: Cloud Foundry Diego ( Predix Transform 2016)PCF1: Cloud Foundry Diego ( Predix Transform 2016)
PCF1: Cloud Foundry Diego ( Predix Transform 2016)
 
How to test if Cloudflare is running live for your website
How to test if Cloudflare is running live for your websiteHow to test if Cloudflare is running live for your website
How to test if Cloudflare is running live for your website
 
Going live with BommandBox and docker Into The Box 2018
Going live with BommandBox and docker Into The Box 2018Going live with BommandBox and docker Into The Box 2018
Going live with BommandBox and docker Into The Box 2018
 

More from Kazuto Kusama

Concourseで快適な自動化の旅
Concourseで快適な自動化の旅Concourseで快適な自動化の旅
Concourseで快適な自動化の旅
Kazuto Kusama
 
Istio, Kubernetes and Cloud Foundry (修正版)
Istio, Kubernetes and Cloud Foundry (修正版)Istio, Kubernetes and Cloud Foundry (修正版)
Istio, Kubernetes and Cloud Foundry (修正版)
Kazuto Kusama
 
Istio, Kubernetes and Cloud Foundry
Istio, Kubernetes and Cloud FoundryIstio, Kubernetes and Cloud Foundry
Istio, Kubernetes and Cloud Foundry
Kazuto Kusama
 
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
Kazuto Kusama
 
k8sだけじゃないIstio - Cloud FoundryのIstioインテグレーションについて
k8sだけじゃないIstio - Cloud FoundryのIstioインテグレーションについてk8sだけじゃないIstio - Cloud FoundryのIstioインテグレーションについて
k8sだけじゃないIstio - Cloud FoundryのIstioインテグレーションについて
Kazuto Kusama
 
Cloud Foundry Container Runtimeで快適Kubernetes運用
Cloud Foundry Container Runtimeで快適Kubernetes運用Cloud Foundry Container Runtimeで快適Kubernetes運用
Cloud Foundry Container Runtimeで快適Kubernetes運用
Kazuto Kusama
 
コンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundryコンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundry
Kazuto Kusama
 
改めてPaaSについて考えてみる
改めてPaaSについて考えてみる改めてPaaSについて考えてみる
改めてPaaSについて考えてみる
Kazuto Kusama
 
Cloud Foundry Container-to-Container Networking
Cloud Foundry Container-to-Container NetworkingCloud Foundry Container-to-Container Networking
Cloud Foundry Container-to-Container Networking
Kazuto Kusama
 
CFの便利機能を他の環境でも。Open Service Broker
CFの便利機能を他の環境でも。Open Service BrokerCFの便利機能を他の環境でも。Open Service Broker
CFの便利機能を他の環境でも。Open Service Broker
Kazuto Kusama
 
グループ会社を巻き込んで勉強会をやってみるには
グループ会社を巻き込んで勉強会をやってみるにはグループ会社を巻き込んで勉強会をやってみるには
グループ会社を巻き込んで勉強会をやってみるには
Kazuto Kusama
 
Docker PaaSとしての OpenShift, Deis, Flynn比較
Docker PaaSとしての OpenShift, Deis, Flynn比較Docker PaaSとしての OpenShift, Deis, Flynn比較
Docker PaaSとしての OpenShift, Deis, Flynn比較
Kazuto Kusama
 
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
Kazuto Kusama
 
クラウドを『作る』ってどういうこと?
クラウドを『作る』ってどういうこと?クラウドを『作る』ってどういうこと?
クラウドを『作る』ってどういうこと?
Kazuto Kusama
 
Lattice深掘り話
Lattice深掘り話Lattice深掘り話
Lattice深掘り話
Kazuto Kusama
 
Cloud Foundryで学ぶ、PaaSのしくみ講座
Cloud Foundryで学ぶ、PaaSのしくみ講座Cloud Foundryで学ぶ、PaaSのしくみ講座
Cloud Foundryで学ぶ、PaaSのしくみ講座
Kazuto Kusama
 
OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話
Kazuto Kusama
 
知って欲しいPaaSの話
知って欲しいPaaSの話知って欲しいPaaSの話
知って欲しいPaaSの話
Kazuto Kusama
 
Cloud FoundryでDockerも.NETも。新しいDiegoの仕組み入門
Cloud FoundryでDockerも.NETも。新しいDiegoの仕組み入門Cloud FoundryでDockerも.NETも。新しいDiegoの仕組み入門
Cloud FoundryでDockerも.NETも。新しいDiegoの仕組み入門
Kazuto Kusama
 
KubernetesとOpenShiftの話
KubernetesとOpenShiftの話KubernetesとOpenShiftの話
KubernetesとOpenShiftの話
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運用
 
コンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundryコンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundry
 
改めて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比較
 
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
 
クラウドを『作る』ってどういうこと?
クラウドを『作る』ってどういうこと?クラウドを『作る』ってどういうこと?
クラウドを『作る』ってどういうこと?
 
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の話
 
Cloud FoundryでDockerも.NETも。新しいDiegoの仕組み入門
Cloud FoundryでDockerも.NETも。新しいDiegoの仕組み入門Cloud FoundryでDockerも.NETも。新しいDiegoの仕組み入門
Cloud FoundryでDockerも.NETも。新しいDiegoの仕組み入門
 
KubernetesとOpenShiftの話
KubernetesとOpenShiftの話KubernetesとOpenShiftの話
KubernetesとOpenShiftの話
 

Recently uploaded

Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
Abida Shariff
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 

Recently uploaded (20)

Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 

Cloud Foundry | How it works

  • 3.
  • 4. Introduction Planned topic was originally, • Briefly discuss about Cloud Foundry architecture overview • Talk about the featured changed in V2
  • 5. But ! Overview slides nearly become 100, gave up to deep dive into it. So, this material is for beginner Deep dive is next time!
  • 6. $ 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 Deploy Sinatra application to Cloud Foundry
  • 7. [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
  • 8. 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
  • 10. What happened inside CF during this time
  • 11. Let’s reveal Cloud Foundry black box
  • 12. Agenda 3 chapters to understand mechanism of Cloud Foundry • Inspect Cloud Foundry internal from external interface • Understand role of Cloud Foundry components • Understand communications between Cloud Foundry components
  • 13. Not included this time • Explanation of Warden container and Buildpack • Explanation of services such as MySQL or Postgress. • Explanation of related services such as loggregator
  • 15. Inspect Cloud Foundry internal from external interface
  • 16. 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...
  • 17. CF_TRACE=true : Key to inspect CF_TRACE=true Enable to trace requests behind cf command.
  • 18. Take a look at cf push
  • 19. 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 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 HTTP/1.1 200 OK {"0":{"state":"RUNNING","since":1398092703.1739626,"debug_ip":null,"debug_port":null,"console_ip":null,"console_port":null}} GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/stats HTTP/1.1 HTTP/1.1 200 OK {"0":{"state":"RUNNING","stats":{"name":"dora","uris":["dora.107.22.72.200.xip.io"],"host":"10.244.0.26","port":61026,"uptime":3,"mem_quota":268435456,"disk_quota":1073741824,"fds_quota":16384,"usage" :{"time":"2014-04-21 15:05:04 +0000","cpu":0,"mem":75673600,"disk":0}}}} GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/instances HTTP/1.1 HTTP/1.1 200 OK {"0":{"state":"RUNNING","since":1398092703.1739626,"debug_ip":null,"debug_port":null,"console_ip":null,"console_port":null}} GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/stats HTTP/1.1 HTTP/1.1 200 OK {"0":{"state":"RUNNING","stats":{"name":"dora","uris":["dora.107.22.72.200.xip.io"],"host":"10.244.0.26","port":61026,"uptime":4,"mem_quota":268435456,"disk_quota":1073741824,"fds_quota":16384,"usage" :{"time":"2014-04-21 15:05:05 +0000","cpu":0,"mem":75673600,"disk":0}}}} GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/summary HTTP/1.1 HTTP/1.1 200 OK GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/instances HTTP/1.1 HTTP/1.1 200 OK GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/stats HTTP/1.1 HTTP/1.1 200 OK Communicating something to api.107.22.72.200.xip.io
  • 21. cf push Cloud Foundry provides API Something which provides API
  • 22. cf push cf push deploy using various APIs GET xxxx PUT xxxx POST xxxx GET xxxx Something which runs application Something which provides API
  • 27. $ 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 IP addresses are same for both API and App
  • 28. cf push Something to dispatch access based on URL Somethingtodispatchaccess Browser Something which runs application Something which provides API
  • 29. cf scale $ cf scale -i 3 -m 256M dora Scaling app dora in org jacopen / space jacopen-space as admin... OK cf scale command changes “number of active instances” and/or “memory size”.
  • 30.
  • 31. Somethingtodispatchaccess cf push Browser Something which runs application Something which provides API Something to dispatch access based on URL
  • 34. Port number has been changed.
  • 35. Something to monitor application health status Monitor Health Somethingtodispatchaccess Something which provides API
  • 37. External view of Cloud Foundry Something to run App Monitor Health Somethingtodispatchaccess Something which provides API
  • 38. Cloud Foundry components (part of it) DEA Health Manager Router Cloud Controller
  • 39. Understand role of Cloud Foundry components
  • 41. Component = Application Cloud Controller (Ruby) Router (Golang) DEA (Ruby) Health Manager (Golang)
  • 42. All components can run on 1VM Cloud Controller (Ruby) Router (Golang) DEA (Ruby) Health Manager (Golang)
  • 43. (Generally) In real situation, separate VM for each components Cloud Controller (Ruby) Router (Golang) DEA (Ruby) Health Manager (Golang)
  • 44. Let’s take a look at each components
  • 46. Router Based on URL, dispatches access to appropriate component. Similar to L7 load balancer. This is different from “router” in network equipment. It is implemented as an application (called Gorouter) which runs on Ubuntu. Written in Go.
  • 47. Cloud Controller Router DEA Health Manager router.register Each component send “router.register” message to Router Send api.107.22.72.200.xip.io to 10.244.0.138:9022 Send dora.107.22.72.200.xip.io to 10.244.0.26:61032
  • 48. Cloud Controller Router DEA Health Manager router.register Router dispatches accesses based on collected information 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
  • 49. Cloud Controller Router DEA Health Manager router.register Multiple targets are handled for the same 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
  • 51. Cloud Controller A component to provide API. Receive application from cf command, etc. Control application start/stop against DEA. Control creation of service such as database. Etc, etc. Control overall Cloud Foundry.
  • 52. 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 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 HTTP/1.1 200 OK {"0":{"state":"RUNNING","since":1398092703.1739626,"debug_ip":null,"debug_port":null,"console_ip":null,"console_port":null}} GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/stats HTTP/1.1 HTTP/1.1 200 OK {"0":{"state":"RUNNING","stats":{"name":"dora","uris":["dora.107.22.72.200.xip.io"],"host":"10.244.0.26","port":61026,"uptime":3,"mem_quota":268435456,"disk_quota":1073741824,"fds_quota":16384,"usage":{"time":"2014- 04-21 15:05:04 +0000","cpu":0,"mem":75673600,"disk":0}}}} GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/instances HTTP/1.1 HTTP/1.1 200 OK {"0":{"state":"RUNNING","since":1398092703.1739626,"debug_ip":null,"debug_port":null,"console_ip":null,"console_port":null}} GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/stats HTTP/1.1 HTTP/1.1 200 OK {"0":{"state":"RUNNING","stats":{"name":"dora","uris":["dora.107.22.72.200.xip.io"],"host":"10.244.0.26","port":61026,"uptime":4,"mem_quota":268435456,"disk_quota":1073741824,"fds_quota":16384,"usage":{"time":"2014- 04-21 15:05:05 +0000","cpu":0,"mem":75673600,"disk":0}}}} GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/summary HTTP/1.1 HTTP/1.1 200 OK GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/instances HTTP/1.1 HTTP/1.1 200 OK GET /v2/apps/0e948568-aa90-47e9-a128-9ff3cc680600/stats HTTP/1.1 HTTP/1.1 200 OK ⇐ Create app ⇐ Obtain domain ⇐verify routes ⇐create routes ⇐ bind app and routes ⇐upload source files ⇐start app
  • 54. DEA A component to run user’s application. Abbreviation of “Droplet Execution Agent" In CF V2, it is responsible for user application staging (e.g. Ruby bundle install). DEA uses Linux container called Warden to run user application. (Warden is not described this time)
  • 55. Receive source files from client Cloud Controller Router DEA Health Manager cf push Gemfile lib/ bin/ config.ru app.rb
  • 56. Staging request (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 app.rb
  • 57. Store Droplet Cloud Controller Router DEA Health Manager cf push Gemfile Gemfile.lock vendor/ lib/ bin/ config.ru app.rb
  • 58. Start request (dea.start) Cloud Controller Router DEA Health Manager cf push Gemfile Gemfile.lock vendor/ lib/ bin/ config.ru app.rb Gemfile Gemfile.lock vendor/ lib/ bin/ config.ru app.rb
  • 59. Start Request (dea.start) Cloud Controller Router DEA Health Manager cf push Gemfile Gemfile.lock vendor/ lib/ bin/ config.ru app.rb
  • 60. Cloud Controller Router DEA Health Manager cf scale -i 3 Gemfile Gemfile.lock vendor/ lib/ bin/ config.ru app.rb DEA
  • 61. Start request (dea.start) Cloud Controller Router DEA Health Manage r cf scale -i 3 Gemfile Gemfile.lock vendor/ lib/ bin/ config.ru app.rb DEA
  • 62. Start request (dea.start) Cloud Controller Router DEA Health Manager cf scale -i 3 Gemfile Gemfile.lock vendor/ lib/ bin/ config.ru app.rb DEA
  • 64. Health Manager A component to monitor user application to see if the status is “what it should be”. The latest version is “hm9000” written in Go.
  • 65. Suddenly instance dies Cloud Controller Router DEA Health Manager DEA
  • 70. When the number of instances are over… Cloud Controller Router DEA Health Manager DEA
  • 75. Did you understand the each relationship? Cloud Controller Router DEA Health Manager Internal Communication External Access
  • 77. The last chart Cloud Controller Router DEA Health Manager Internal Communication External Access
  • 79. NATS Publish-Subscribe model lightweight messaging Developed by Derek Collison designed and architected the industry's first Open PaaS, Cloud Foundry Exists at the beginning of Cloud Foundry. Key component in the architecture. It was implemented in Ruby using EventMachine. It is re- written using Go language (dnatsd)
  • 81. Publish-Subscribe Model Publisher Subscriber NATS Subject: foo.bar {“message”: “hogefuga”} {“message”: “hogefuga”} {“message”: “hogefuga”}
  • 82. Publish-Subscribe Model Publisher Subscriber NATS Cloud Controller DEA Router Subject: router.register {“host":"10.244.0.138","port": 9022,"uris":["api.107.22.72.2 00.xip.io"]} Subject: router.register {“host":"10.244.0.111","port": 37902,"uris":["dora.107.22.7 2.200.xip.io"]}
  • 83. All subscriber receive the same message NATS Cloud Controller DEA Router Subject: router.register {“host":"10.244.0.138","port": 9022,"uris":["api.107.22.72.2 00.xip.io"]} Subject: router.register {“host":"10.244.0.111","port": 37902,"uris":["dora.107.22.7 2.200.xip.io"]} Router Router Publisher Subscriber
  • 84. When there is no NATS component… NATS Direct Communication 1.Run Router 2.Router subscribe router.register 1.Register new Router in admin DB 2.Run Router 3.DEA or Cloud Controler obtain Router list from admin DB 4.Sead message to each Router
  • 86. Cloud Foundry Architecture • Centered around NATS, loosely coupled component communications. Scalable. • Self-organized distributed system. Administrative information is minimal. • Self healing. The point is that it heals by itself. • Removes SPoF( Single Point of Failure). Except recent NATS.
  • 87. Cloud Foundry V1 What’s the difference ?
  • 88. Difference between CF v1 and v2 Overall architecture has not been changed. DEA became DEAng, and runs Linux container called Warden Many components were re-written in Go. Can use Heroku Buildpack There is no API compatibility !
  • 89. We will deep dive into Cloud Foundry next time.
  • 90. End Note. This material was translated by @ibmamnt From original chart by @jacopen http://www.slideshare.net/jacopen/cloud-foundry-33851040

Editor's Notes

  1. まずは簡単に自己紹介(35sec)
  2. Cloud Foundryはご存じの方が多いと思いますが、VMwareからスピンオフしたpivotal社が中心となって開発しているPaaSで(42sec)