Download - RubyWorld 2011
![Page 1: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/1.jpg)
RubyWorld 2011
Cloud FoundryWhy Ruby, and will it last?
Derek CollisonSept 5, 2011
![Page 2: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/2.jpg)
Agenda
‣ What is Cloud Foundry?
‣ Why Ruby?
‣ The Business of Cloud Foundry
‣ Challenges and Ruby’s future
![Page 3: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/3.jpg)
What isCloud Foundry?
![Page 4: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/4.jpg)
The OpenPlatform as a Service
![Page 5: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/5.jpg)
What is PaaS?
![Page 6: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/6.jpg)
Or more specifically, aPaaS?
![Page 7: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/7.jpg)
aPaaS
‣ Application Platform as a Service
‣ Applications and Services
‣ Not VMs, Memory, Storage, Networks, CPU
![Page 8: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/8.jpg)
What isOpenPaaS?
![Page 9: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/9.jpg)
OpenPaaS
‣ Multi-Language
‣ Multi-Framework
‣ Multi-Services
‣ Multi-Cloud, Multi-IaaS
‣ Hybrid - Public or Private or Both
‣ OpenSource
![Page 10: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/10.jpg)
OpenPaaS‣ Multi-Language
‣ Ruby, Java, Scala, Node.js, Erlang, Python, PHP..
‣ Multi-Framework
‣ Rails, Sinatra, Spring, Grails, Express, Lift, MochiWeb
‣ Multi-Services
‣ MySQL, Postgres, MongoDB, Redis, RabbitMQ
‣ Multi-Cloud, Multi-IaaS
‣ vSphere, MicroCloud, OpenStack, AWS, Eucalyptus
![Page 11: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/11.jpg)
The Open PaaS
Clou
d Pr
ovid
er In
terfa
ceApplication Service Interface
Private Clouds
PublicClouds
MicroClouds
Data Services
Other Services
Messaging Services
.js
![Page 12: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/12.jpg)
What was our Goal?
‣ Raise the unit of currency to be the application and its associated services, not the infrastructure
‣ Best of breed delivery platform for all modern applications and frameworks
‣ Favor Choice and Openness
‣ Simplicity and Speed
![Page 13: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/13.jpg)
How was it Built?
‣ Kernel (CloudFoundry OSS)
‣ Core PaaS System
‣ Kernel and Orchestrator Shells
‣ Layered on top of IaaS
‣ Orchestrator
‣ Creation, management and orchestration of IaaS
![Page 14: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/14.jpg)
High Level
Orchestrator / IaaS
CF Kernel
Hardware - CPU/Memory/Disk/Network
Clients (VMC, STS, Browser)
![Page 15: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/15.jpg)
Basic Premises
‣ Fail Fast
‣ Self Healing
‣ Horizontally Scalable Components
‣ Distributed State, No Single Point of Failure
‣ Should be as simple as possible
![Page 16: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/16.jpg)
Basic Patterns
‣ Event-Driven
‣ Asynchronous
‣ Non-blocking
‣ Independent, Idempotent
‣ Message Passing
‣ Eventually Consistent
![Page 17: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/17.jpg)
Logical View
VMC client STS plugin Browser(user app access)
Routers
CloudControllers App
Services DEA Pool
App
HealthManager
Messaging
![Page 18: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/18.jpg)
All built with Ruby 1.9!
![Page 19: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/19.jpg)
But whyRuby?
![Page 20: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/20.jpg)
Why Ruby?
‣ Amazingly Expressive Language
‣ Allows great productivity and rapid iteration
‣ Utilized EventMachine for Async Patterns
‣ Ruby 1.9 Fibers
‣ Language performance is not always key
‣ All components are independent
![Page 21: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/21.jpg)
Kernel and Orchestrator
‣ Both built using Ruby 1.9
‣ Kernel does have some performance issues
‣ Orchestrator, Chef, Puppet
‣ Ruby is a great language for cloud management
‣ CF Orchestrator built with Ruby as well
![Page 22: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/22.jpg)
How do we makeMoney?
![Page 23: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/23.jpg)
The Business
‣ Charge for CloudFoundry.com and Services
‣ Enable the private enterprise PaaS Cloud
‣ Hybrid clouds, combining service + software
![Page 24: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/24.jpg)
The key is theprivate cloud..
![Page 25: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/25.jpg)
OpenSource is mandatory..
![Page 26: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/26.jpg)
Many customers don’t want to be thrown into
the deep end of the pool!
![Page 27: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/27.jpg)
Same Patterns Everytime
‣ Customers get a CF.com account and try it
‣ Download source code and try to build
‣ Try to setup a multi-node installation
‣ Request information on hybrid capabilities
![Page 28: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/28.jpg)
Same Patterns Everytime
‣ Customers get a CF.com account and try it
‣ Download source code and try to build
‣ Try to setup a multi-node installation
‣ Request information on hybrid capabilities
![Page 29: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/29.jpg)
This can be hard..
![Page 30: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/30.jpg)
Answer:MicroCloud
Full single instance CF as a downloadable VMAvailable now
![Page 31: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/31.jpg)
Micro Cloud FoundryCloud Foundry on a USB
Available at RubyWorld
![Page 32: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/32.jpg)
Same Patterns Everytime
‣ Customers get a CF.com account and try it
‣ Download source code and try to build
‣ Try to setup a multi-node installation
‣ Request information on hybrid capabilities
![Page 33: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/33.jpg)
This can be even harder..
![Page 34: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/34.jpg)
Answer: Project Bento
Fully supported private cloud version of CFAvailable 2012
![Page 35: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/35.jpg)
VMwareproprietary
code
VMwareOSS code
3rd partyOSS code
CloudFoundry.org
CloudFoundry.com
3rd partyproprietary
code
Bento Micro Cloud Foundry
Cloud Foundry EcoSystem
![Page 36: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/36.jpg)
Demo
![Page 37: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/37.jpg)
Challenges we faced..
![Page 38: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/38.jpg)
Ruby VM, Gil, GC issues
![Page 39: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/39.jpg)
EventMachine Problems(1.9, IO skew)
![Page 40: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/40.jpg)
Evented IO
‣ Event-driven programming
‣ Fundamental shift in thinking, e.g. Node.js
‣ Does this require deeper language integration for Ruby?
‣ Does Ruby need a formal Reactor Pattern?
![Page 41: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/41.jpg)
Packaging(Bundler, Gems)
![Page 42: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/42.jpg)
Gem vs VM Choice compatibility
(MRI/Yarv, JRuby, RBX)
![Page 43: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/43.jpg)
Did we make the right decision?
![Page 44: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/44.jpg)
Did we make the right decision?
YES!
![Page 45: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/45.jpg)
But...
![Page 46: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/46.jpg)
What does Ruby want to be when it grows
up?
![Page 47: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/47.jpg)
What is Ruby?
‣ Great scripting language!
‣ Cloud Management and Tools
‣ Modern Application Language!
‣ Mobile, Data-Centric, Web
‣ Distributed/Cloud Systems Language?
![Page 48: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/48.jpg)
What would need to Change?
![Page 49: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/49.jpg)
Summary
![Page 50: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/50.jpg)
Summary
‣ Ruby can power large distributed systems
‣ Ruby can power your business
‣ What does Ruby want to be?
‣ What needs to evolve and improve?
![Page 51: RubyWorld 2011](https://reader038.vdocuments.us/reader038/viewer/2022110118/554a0f6bb4c905825d8b4912/html5/thumbnails/51.jpg)
Questions?