+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
Cloud Foundry OpenTour Kiev Keynote
1. Cloud Foundry
The Open Platform as a Service
Patrick Chanezon
Senior Director
Developer Relations
chanezonp@vmware.com
@chanezon Cloud Foundry OpenTour, Kiev, April 2012
Tuesday, April 24, 12
2. P@ in a nutshell
• French, based in San Francisco
• Senior Director, Developer Relations,VMware
• Software Plumber, API guy, mix of Enterprise and
Consumer
• 18 years writing software, backend guy with a
taste for javascript
• 2 y Accenture (Notes guru), 3 y Netscape/AOL
(Servers, Portals), 5 y Sun (ecommerce, blogs,
Portals, feeds, open source)
• 6 years at Google, API guy (first hired, helped start the
team)
• Adwords, Checkout, Social, HTML5, Cloud
Tuesday, April 24, 12
4. Accelerando / Singularity, in a Galaxy far far away
§ Even if we automate ourselves out of a job every 10 years
§ ...I don’t think the singularity is near!
4
Tuesday, April 24, 12
5. Moore's Law is for Hardware Only
§ Does not apply to software
§ Productivity gains not keeping up with hardware and bandwidth
§ Writing software is hard, painful, and still very much a craft
5
Tuesday, April 24, 12
6. Moore's Law’s free lunch is over
§ Herb Sutter, Welcome to the Jungle
http://herbsutter.com/welcome-to-the-jungle/
6
Tuesday, April 24, 12
7. Future
“The future is already here
— it's just not very evenly
distributed”
William Gibson
7
Tuesday, April 24, 12
8. Haiku - Skylark
“Trampling on clouds,
inhaling the mist,
the skylark soars”
—SHIKI
8
Tuesday, April 24, 12
9. Haiku - Frog
“Crouching,
studying the clouds—
a frog”
CHIYO-JO
9
Tuesday, April 24, 12
14. Back to Client Server: Groovy Baby!
14
Tuesday, April 24, 12
15. What is Cloud Computing?
Cloud According to my daughter Eliette
15
Tuesday, April 24, 12
16. What is Cloud Computing?
Cloud at Михайлівський золотоверхий монастир
16
Tuesday, April 24, 12
17. Cloud Stack - Classic Pyramid
Software
As A Service
Platform As A Service
Infrastructure As A Service
17
Tuesday, April 24, 12
18. Cloud Stack - By Value
Software
As A Service
Platform As A Service
Infrastructure
As A Service
18
Tuesday, April 24, 12
19. Cloud Stack - History
§ What does cloud mean, 4 main angles
• Software 1994 Netscape
• Infrastructure 2002 Amazon AWS
• Platform 2008 Google
• Development now!
§ Industrialization of hardware and
software infrastructure
like electricity beginning of 20th century
§ But software development itself is moving towards craftmanship
19
Tuesday, April 24, 12
20. Cloud started at Consumer websites solving their needs
• Google, Amazon, Yahoo, Facebook, Twitter
• Large Data Sets
• Storage Capacity growing faster than Moore’s Law
• Fast Networks
• Horizontal -> Vertical scalability
• Open Source Software
• Virtualization
• Cloud is a productization of these infrastructures
• Public Clouds Services: Google, Amazon
• Open Source Software: Hadoop, Eucalyptus, Ubuntu, Cloud Foundry
Tuesday, April 24, 12
22. IaaS/Virtualization getting mainstream
§ AWS, Joyent, Rackspace,...
§ Open Source projects: OpenStack, DeltaCloud, Eucalyptus
§ Automation: Chef, Juju
§ Standardization? DMTF
§ Inside the Firewall, Virtualization: VMware, Microsoft, Xen, KVM
§ 50% of workloads are virtualized
§ Easy to provision, manage instance...BUT
§ Still need to manage backups, software stacks, monitor, upgrades
22
Tuesday, April 24, 12
23. With Infrastructure, you still need to build your own platform
§ Need to build a distributed platform on top of you infrastructure
§ Story of the AWS meltdown from last summer
• http://blog.reddit.com/2011/03/why-reddit-was-down-for-6-of-last-24.html
• http://www.readwriteweb.com/cloud/2010/12/chaos-monkey-how-netflix-
uses.php
• http://news.ycombinator.com/item?id=2477296
• http://stu.mp/2011/04/the-cloud-is-not-a-silver-bullet.html
§ Twilio, Smugmug, SimpleGeo survived it because they built their
own distributed platform on top of IaaS
§ Enterprise customers want to consider Infrastructure like CDNs
• Multi Cloud usage
• Based on Open Source de facto standards, or full standards whenever that
happens
23
Tuesday, April 24, 12
25. Platforms
§ Raise the Unit of currency to be application & services instead of
infrastructure
§ Google App Engine, Cloud Foundry, Joyent, Heroku, Stax
(Cloudbees), Amazon elastic beanstalk, Microsoft Azure, AppFog
§ Single or a few languages, services
§ Start of Multi language Polyglot platforms
§ Enabler for Agile Developers -> Create Business value faster
§ Lack of standards: risk, vendor lock-in
§ Enterprise needs:
• Control, customizability
• Private/Hybrid Cloud
• Avoid lock-in
25
Tuesday, April 24, 12
27. Agility as a survival skill
§ Consumer software is becoming like fashion
• Phone apps, social apps, short lifetime, fast lifecycles
• Ab testing
§ Clay shirky situational apps
§ Kent Beck, Usenix 2011 Talk, “Software G-Forces”
change in software process when frequency grows
§ Cloud Platforms enables an Agile culture, driver for innovation
• Scalability is built in the platforms
• Can iterate faster
• Focus on design
§ Cloud Platforms lets developers focus on driving business value
27
Tuesday, April 24, 12
28. Main Risk: Lock-In
Welcome to the hotel california
Such a lovely place
Such a lovely face
Plenty of room at the hotel california
Any time of year, you can find it here
Last thing I remember, I was
Running for the door
I had to find the passage back
To the place I was before
’relax,’ said the night man,
We are programmed to receive.
You can checkout any time you like,
But you can never leave!
28
Tuesday, April 24, 12
29. Cloud Foundry: The Open PaaS
• Open Source: Apache 2 Licensed
• multi language/frameworks
• multi services
• multi cloud
Ap
ce
pli
vFabric
rfa
Postgres Private
ca
nte
Data
Services tio Clouds
rI
n
e
Se
Public
vid
vFabric
RabbitMQTM rvi
Cloud
ro
Msg Services
ce
dP
Micro
ou
Other
Cloud
Cl
Services
29
Tuesday, April 24, 12
38. What is a Micro Cloud?
Or
Entire Cloud Running inside of a single VM
38
Tuesday, April 24, 12
39. What is in Micro Cloud Foundry?
.COM
Dynamic Updating DNS
App Instances Services
Open source Platform as a Service project
10.04
39
Tuesday, April 24, 12
40. Other Cloud Foundry powered PaaS
Private PaaS
Added Python and Perl
Public PaaS
Added PHP
Tier3 and Uhuru recently added .NET support
40
Tuesday, April 24, 12
41. Register today
http://cloudfoundry.com/signup
Use Promo Code CFOpenTour2012
To avoid approval queue waiting time
41
Tuesday, April 24, 12
43. Production Grade Cloud Foundry Clusters
§ 500 – 5,000 VMs cloudfoundry.com
§ 40+ unique node types
§ 75+ unique software packages
§ 75+ unique environments
§ 2x/week cf.com updates
§ 24x7x365 non-stop operation
§ No-downtime deployments
§ Reliable, robust, repeatable
deployments, updates, capacity
adjustments
§ Small teams manage many
instances production, staging, stress, qa, dev
Google style problem è Google style solution
43
Tuesday, April 24, 12
44. Cloud Foundry BOSH
§ Cloud Foundry BOSH is an open source tool-chain for release
engineering, deployment, and lifecycle management of large scale
distributed services
• Prescriptive way of creating releases and managing systems and services
• It is not a collection of shell scripts, not a pile of Perl
§ Built to deploy and manage production-class, large scale clusters
• Production grade Cloud Foundry clusters: 500+ VMs, 40+ jobs, 75+ packages
• Multi-node, multi-tier, complex clusters: e.g., our Gerrit/Jenkins Cluster
§ Built for devops usage and scale by a crack team of veterans
• A project, not a product: command line interface, YAML, etc.
• Continuous improvement, iterative development, rough edges
github.com/cloudfoundry/bosh
44
Tuesday, April 24, 12
45. BOSH: under the hood
BOSH User
“BOSH is deployed by BOSH”
bosh cli director healthmon
cloudfoundry.com
db redis nats
workers blobs active jobs
agent
IaaS CPI stemcell disk
45
Tuesday, April 24, 12
46. IaaS neutral by design
vSphere: battle tested implementation, thousands of
deployments CPI: code complete
vCloud Director: “work in progress”, 2H 2012 functional status: “work in progress”
Cloud Foundry BOSH
Cloud Provider Interface (CPI)
contribute: github.com/cloudfoundry/bosh
46
Tuesday, April 24, 12
48. Development
As A
Service
48
Tuesday, April 24, 12
49. Development
§ Final frontier, happening now
§ Not whole product yet
§ Social Coding: Google code, Github
§ Web IDEs: Cloud9, Exo, Orion
§ Higher level case tools, Wavemaker, Orangescape, Runmyprocess
§ Continuous Integration: Jenkins, Cloudbees, OpenShift
§ Test: feature of cloud platforms
§ Knowledge Sharing: StackOverflow
49
Tuesday, April 24, 12
50. Demo
Exo Cloud IDE
Mark Downey
Cloud Services Product Manager, Exo Platforms
Twitter: @marksdowney
50
Tuesday, April 24, 12
51. Lessons for
Developers
51
Tuesday, April 24, 12
52. Predictions
§ Software is becoming like fashion, design rules
§ Welcome to Babel, use the best tool for the job, embrace multiple
language & heterogeneity
§ Our jobs will change, build yourself out of your current job
§ Sysadmin jobs will morph, there will be less of them
§ Many opportunities open when you embrace change
52
Tuesday, April 24, 12
53. Things to Forget
§ First normal form
§ Waterfall model
§ Single server deployment
§ Single language skill
§ Build everything from scratch
§ Build custom infrastructure
53
Tuesday, April 24, 12
54. Things to Learn
• Agile
• Take risks, fail often, fail fast and learn
• API Design: create the API first
• UI Design, Javacript, HTML5, CSS3
• A/B Testing
• Open Source, Open Standards
• Architecture, Distributed Computing (CAP theorem, 8 fallacies)
• Cloud Platforms and APIs
• Multiple types of languages (imperative, object, functional, logic)
• Ability to encapsulate domain knowledge in a DSL
• Build on the shoulders of giants: reuse, REST APIs
• Pick your battles, choose what you need to build yourself to add value
• Learn to live in a box (embrace platform limitations) to think outside the box
• Use an App Store for distribution
• Consider your career as a startup
54
Tuesday, April 24, 12
56. Such stuff as dreams are made on
§ Like a kid on a candy store: there's never been a better time to be a
software developer!
§ Welcome to the Cloud: embrace change and reinvent yourselves
§ “The future is already there, not evenly distributed” Gibson
§ We Developers, invent the future today
56
Tuesday, April 24, 12
57. sample app
polyglot in action
by Mark Lucovsky
57 developer perspective v2.0
Tuesday, April 24, 12
58. 58 developer perspective v2.0
Tuesday, April 24, 12
59. stac2: load generation system
- jQuery, jQuery UI json-p stac2 - 2 x 128mb
- haml templates frontend - ruby 1.8.7, sinatra
- 100% JS based UI
smtp http json
email - 16 x 128mb*
api server - node.JS, 0.6.8
reports
rpush redis api
redis
blpop redis api blpop
- 96 x 128mb - 16 x 128mb*
- ruby 1.8.7, sinatra vmc worker http worker - node.JS, 0.6.8
* - api server and http worker
share the same node.JS
process/instance
59 developer perspective v2.0
Tuesday, April 24, 12
60. deployment instructions
$ cd ~/stac2
$ vmc push
60 developer perspective v2.0
Tuesday, April 24, 12
62. design tidbits
• producer/consumer pattern using rpush/blpop
• node.JS: multi-server and high performance async i/o
• caldecott – aka vmc tunnel for debugging
• redis sorted sets for stats collection
• redis expiring keys for rate calculation
62 developer perspective v2.0
Tuesday, April 24, 12
63. producer/consumer
• core design pattern
• found at the heart of many complex apps
classic mode:
- thread pools
- semaphore/mutex, completion ports, etc.
- scalability limited to visibility of the work queue
producer work work queue work consumer
cloud foundry mode:
- instance pools
- redis rpush/blpop, rabbit queues, etc.
- full horizontal scalability, cloud scale
63 developer perspective v2.0
Tuesday, April 24, 12
64. producer/consumer: code
//
producer
function
commit_item(queue,
item)
{
//
push
the
work
item
onto
the
proper
queue
redis.rpush(queue,
item,
function(err,
data)
{
//
optionally
trim
the
queue,
throwing
away
//
data
as
needed
to
ensure
the
queue
does
//
not
grow
unbounded
if
(!err
&&
data
>
queueTrim)
{
redis.ltrim(queue,
0,
queueTrim-‐1);
}
});
}
//
consumer
function
worker()
{
//
blocking
wait
for
workitems
blpop_redis.blpop(queue,
0,
function(err,
data)
{
//
data[0]
==
queue,
data[1]
==
item
if
(!err)
{
doWork(data[1]);
}
process.nextTick(worker);
});
64 developer perspective v2.0
Tuesday, April 24, 12
65. node.JS multi-server: http API server
//
the
api
server
handles
two
key
load
generation
apis
//
/http
–
for
http
load,
/vmc
for
Cloud
Foundry
API
load
var
routes
=
{“/http”:
httpCmd,
“/vmc”:
vmcCmd}
//
http
api
server
booted
by
app.js,
passing
redis
client
//
and
Cloud
Foundry
instance
function
boot(redis_client,
cfinstance)
{
var
redis
=
redis_client;
function
onRequest(request,
response)
{
var
u
=
url.parse(request.url);
var
path
=
u.pathname;
if
(routes[path]
&&
typeof
routes[path]
==
‘function’)
{
routes[path](request,
response);
}
else
{
response.writeHead(404,
{‘Content-‐Type’:
‘text/plain’});
response.write(‘404
Not
Found’);
response.end();
}
}
server
=
http.createServer(onRequest).listen(cfinstance[‘port’]);
}
65 developer perspective v2.0
Tuesday, April 24, 12
66. node.JS multi-server: blpop server
var
blpop_redis
=
null;
var
status_redis
=
null;
var
cfinstance
=
null;
//
blpop
server
handles
work
requests
for
http
traffic
//
that
are
placed
on
the
queue
by
the
http
API
server
//
another
blpop
server
sits
in
the
ruby/sinatra
VMC
server
function
boot(r1,
r2,
cfi)
{
//
multiple
redis
clients
due
to
concurrency
constraints
blpop_redis
=
r1;
status_redis
=
r2;
cfinstance
=
cfi;
worker();
}
//
this
is
the
blpop
server
loop
function
worker()
{
blpop_redis.blpop(queue,
0,
function(err,
data)
{
if
(!err)
{
doWork(data[1]);
}
process.nextTick(worker);
});
}
66 developer perspective v2.0
Tuesday, April 24, 12
67. caldecott: aka vmc tunnel
#
create
a
caldecott
tunnel
to
the
redis
server
$
vmc
tunnel
nab-‐redis
redis-‐cli
Binding
Service
[nab-‐redis]:
OK
…
Launching
'redis-‐cli
-‐h
localhost
-‐p
10000
-‐a
...’
#
enumerate
the
keys
used
by
stac2
redis>
keys
vmc::staging::*
1)
“vmc::staging::actions::time_50”
2)
“vmc::staging::active_workers”
…
#
enumerate
actions
that
took
less
that
50ms
redis>
zrange
vmc::staging::actions::time_50
0
-‐1
withscores
1)
“delete_app”
2)
“1”
3)
“login”
4)
“58676”
5)
“info”
6)
“80390”
#
see
how
many
work
items
we
dumped
due
to
concurrency
constraint
redis>
get
vmc::staging::wastegate
“7829”
67 developer perspective v2.0
Tuesday, April 24, 12
68. redis sorted sets for stats collection
#
log
action
into
a
sorted
set,
net
result
is
set
contains
#
actions
and
the
number
of
times
the
action
was
executed
#
count
total
action
count,
and
also
per
elapsed
time
bucket
def
logAction(action,
elapsedTimeBucket)
#
actionKey
is
the
set
for
all
counts
#
etKey
is
the
set
for
a
particular
time
bucket
e.g.,
_1s,
_50ms
actionKey
=
“vmc::#{@cloud}::actions::action_set”
etKey
=
“vmc::#{@cloud}::actions::times#{elapsedTimeBucket}”
@redis.zincrby
actionKey,
1,
action
@redis.zincrby
etKey,
1,
action
end
#
enumerate
actions
and
their
associated
count
redis>
zrange
vmc::staging::actions::action_set
0
-‐1
withscores
1)
“login”
2)
“212092”
3)
“info”
4)
“212093”
#
enumerate
actions
that
took
between
400ms
and
1s
redis>
zrange
vmc::staging::actions::time_400_1s
0
-‐1
withscores
1)
“create-‐app”
2)
“14”
3)
“bind-‐service”
4)
“75”
68 developer perspective v2.0
Tuesday, April 24, 12
69. redis incrby and expire for rate calcs
#
to
calculate
rates
(e.g.,
4,000
requests
per
second)
#
we
use
plain
old
redis.incrby.
the
trick
is
that
the
#
key
contains
the
current
1sec
timestamp
as
it’s
suffix
value
#
all
activity
that
happens
within
this
1s
period
accumulates
#
in
that
key.
by
setting
an
expire
on
the
key,
the
key
is
#
automatically
deleted
10s
after
last
write
def
logActionRate(cloud)
tv
=
Time.now.tv_sec
one_s_key
=
"vmc::#{cloud}::rate_1s::#{tv}"
#
increment
the
bucket
and
set
expires,
key
#
will
eventually
expires
Ns
after
the
last
write
@redis.incrby
one_s_key,
1
@redis.expire
one_s_key,
10
end
#
return
current
rate
by
looking
at
the
bucket
for
the
previous
#
one
second
period.
by
looking
further
back
and
averaging,
we
#
can
smooth
the
rate
calc
def
actionRate(cloud)
tv
=
Time.now.tv_sec
-‐
1
one_s_key
=
"vmc::#{cloud}::rate_1s::#{tv}"
@redis.get
one_s_key
end
69 developer perspective v2.0
Tuesday, April 24, 12
75. Thank You!
t @CloudFoundry
t @chanezon
Website : www.cloudfoundry.com
Blog : blog.cloudfoundry.com
Forum : support.cloudfoundry.com
Tuesday, April 24, 12
76. Books / Articles
§ Nick Carr, The Big Switch
§ Eric Raymond, The Art of Unix Programming
§ Weinberg, Psychology of Computer Programming
§ Wes python book
§ Mark html5 book
§ Kent Beck XP
§ Hunt, Thomas, The Pragmatic Programmer
§ Ade Oshineye, Apprenticeship Patterns
§ Matt Cutt's Ignite Talk IO 2011, Trying different things
§ Josh Bloch talk about api design
§ Larry and Sergey, Anatomy of a Search Engine
§ Rob Pike, The Practice of Programming
75
Tuesday, April 24, 12
77. Papers / Talks
§ Simon Wardley, Oscon 09 “Cloud - Why IT Matters”
§ Tim O’Reilly article on internet os
§ Peter Deutsch’s 8 Fallacies of Distributed Computing
§ Brewer’s CAP Theorem
§ Gregor Hohpe’s Starbucks Does Not Use Two-Phase Commit
§ Stuff I tag http://www.delicious.com/chanezon/
§ More specifically http://www.delicious.com/chanezon/cloudfoundry
§ My previous Talks http://www.slideshare.net/chanezon
§ My list of favorite books
http://www.chanezon.com/pat/soft_books.html
76
Tuesday, April 24, 12
78. Acknowledgement
§ Drawings from my daughters Eliette
§ Slides from Dave McCrory, Derek Collison, Duke Leto
§ Haiku from Addiss, Stephen; Yamamoto, Fumiko; Yamamoto,
Fumiko Y.; Yamamoto, Akira Y. (2011-06-22). Haiku: An Anthology of
Japanese Poems (Shambhala Library)
§ Painting Hiroshige, Sengai
77
Tuesday, April 24, 12