Cloud Foundry the Open PaaS - OpenTour Austin Keynote
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Cloud Foundry the Open PaaS - OpenTour Austin Keynote

on

  • 2,264 views

 

Statistics

Views

Total Views
2,264
Views on SlideShare
2,230
Embed Views
34

Actions

Likes
1
Downloads
72
Comments
0

5 Embeds 34

http://www.scoop.it 25
https://twimg0-a.akamaihd.net 6
https://si0.twimg.com 1
https://www.linkedin.com 1
http://preshavedyak.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Cloud Foundry the Open PaaS - OpenTour Austin Keynote Presentation Transcript

  • 1. Cloud Foundry The Open Platform as a ServicePatrick ChanezonSenior DirectorDeveloper Relationschanezonp@vmware.comhttp://twitter.com/chanezon Cloud Foundry OpenTour, Austin, April 2012Thursday, April 5, 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, CloudThursday, April 5, 12
  • 3. Dreams Of my childhood 3Thursday, April 5, 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! 4Thursday, April 5, 12
  • 5. Moores 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 5Thursday, April 5, 12
  • 6. Moores Law’s free lunch is over § Herb Sutter, Welcome to the Jungle http://herbsutter.com/welcome-to-the-jungle/ 6Thursday, April 5, 12
  • 7. Future “The future is already here — its just not very evenly distributed” William Gibson 7Thursday, April 5, 12
  • 8. Haiku - Skylark “Trampling on clouds, inhaling the mist, the skylark soars” —SHIKI 8Thursday, April 5, 12
  • 9. Haiku - Frog “Crouching, studying the clouds— a frog” CHIYO-JO 9Thursday, April 5, 12
  • 10. Architecture Changes: 60’s MainframeThursday, April 5, 12
  • 11. Architecture Changes: 80’s Client-ServerThursday, April 5, 12
  • 12. Architecture Changes: 90’s WebThursday, April 5, 12
  • 13. Architecture Changes: 2010’s Cloud, HTML5, MobileThursday, April 5, 12
  • 14. Back to Client Server: Groovy Baby! 14Thursday, April 5, 12
  • 15. What is Cloud Computing? Cloud According to my daughter Eliette 15Thursday, April 5, 12
  • 16. Cloud Stack - Classic Pyramid Software As A Service Platform As A Service Infrastructure As A Service 16Thursday, April 5, 12
  • 17. Cloud Stack - By Number Software As A Service Platform As A Service Infrastructure As A Service 17Thursday, April 5, 12
  • 18. Cloud Stack - By Value Software As A Service Platform As A Service Infrastructure As A Service 18Thursday, April 5, 12
  • 19. Cloud Stack - Neutral Software As A Service Platform As A Service Infrastructure As A Service 19Thursday, April 5, 12
  • 20. 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 20Thursday, April 5, 12
  • 21. 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 FoundryThursday, April 5, 12
  • 22. Infrastructure 22Thursday, April 5, 12
  • 23. 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 23Thursday, April 5, 12
  • 24. 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 24Thursday, April 5, 12
  • 25. Platforms 25Thursday, April 5, 12
  • 26. 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 26Thursday, April 5, 12
  • 27. Agile Development ProcessesThursday, April 5, 12
  • 28. 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 28Thursday, April 5, 12
  • 29. 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! 29Thursday, April 5, 12
  • 30. 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 30Thursday, April 5, 12
  • 31. Open Source 31Thursday, April 5, 12
  • 32. Open Source Advantage § http://code.google.com/p/googleappengine/issues/detail?id=13 • https://github.com/cloudfoundry/vcap/pull/25 32Thursday, April 5, 12
  • 33. Multi Cloud 33Thursday, April 5, 12
  • 34. CloudFoundry.COM Cloud Foundry Runtimes & Frameworks Services vCenter / vSphere Infrastructure 34Thursday, April 5, 12
  • 35. Cloud Foundry.ORG Cloud Foundry The Source Code to Compile & Build Cloud Foundry vCenter / vSphere Download Setup Setup Scripts Deploy Code Environment Behind Firewall 35Thursday, April 5, 12
  • 36. Micro Cloud Foundry Micro 36Thursday, April 5, 12
  • 37. What is a Micro Cloud? Or Entire Cloud Running inside of a single VM 37Thursday, April 5, 12
  • 38. Micro Cloud Foundry… (BETA) A pre-built Micro (Single VM) version of Cloud Foundry… You need a Cloud Foundry.com Account to use Micro Cloud Foundry Signup @ http://cloudfoundry.com/micro 38Thursday, April 5, 12
  • 39. Micro Cloud Foundry… (BETA) A pre-built Micro (Single VM) version of Cloud Foundry… Micro You need a Cloud Foundry.com Account to use Micro Cloud Foundry Signup @ http://cloudfoundry.com/micro 38Thursday, April 5, 12
  • 40. What is in Micro Cloud Foundry? .COM Dynamic Updating DNS App Instances Services Open source Platform as a Service project 10.04 39Thursday, April 5, 12
  • 41. Other Cloud Foundry powered PaaS Private PaaS Added Python and Perl Public PaaS Added PHP Tier3 and Uhuru recently added .NET support 40Thursday, April 5, 12
  • 42. Development LifeCycle 41Thursday, April 5, 12
  • 43. Traditional App Deploy and Request/Response Web Request/Allocate Web Build/Setup Install/Configure App Deploy/Test App Scale? Upgrade? DB DB Update?Thursday, April 5, 12
  • 44. How Apps are Deployed on Cloud Foundry Web Web App “vmc push MyApp” DB App Web Scale? “vmc instances MyApp 5” DB Upgrade? “vmc map MyApp MyApp2” Update? “vmc update MyApp”Thursday, April 5, 12
  • 45. How Apps are Deployed on Cloud Foundry Web Web App “vmc push MyApp” DB App Web Scale? “vmc instances MyApp 5” DB Upgrade? “vmc map MyApp MyApp2” Update? “vmc update MyApp”Thursday, April 5, 12
  • 46. How Apps are Accessed on Cloud Foundry Request Web Interface Load Balancing Response and Routing Web App App Instance DB “vmc push MyApp” ServiceThursday, April 5, 12
  • 47. How Apps are Scaled on Cloud Foundry Request Load Load Load Balancer(s) Balancing Response Balancer(s) and Routing App Instances Web Web Web App App App DB “vmc instances MyApp 3” ServiceThursday, April 5, 12
  • 48. How Apps are Updated on Cloud Foundry Previous Instance Updated New Version Stopped Code Version Web Web Web Web App App App App DB DB Service Service “vmc update MyApp”Thursday, April 5, 12
  • 49. Services 47Thursday, April 5, 12
  • 50. Current Services Available on Cloud Foundry 48Thursday, April 5, 12
  • 51. Service Creation and BindingVCAP_SERVICES:{"redis-2.2":[{"name":"redis_sample","label":"redis-2.2","plan":"free","tags":["redis","redis-2.2","key-value","nosql"],"credentials":{"hostname":"172.30.48.40","host":"172.30.48.40","port":5023,"password":"8e9a901f-987d-4544-9a9e-ab0c143b5142","name":"de82c4bb-bd08-46c0-a850-af6534f71ca3"}}],"mongodb-1.8":[{"name":"mongodb-e7d29","label":"mongodb-1.8","plan":"free","tags”:…………………. 49Thursday, April 5, 12
  • 52. Service Creation and Binding App Instance 50Thursday, April 5, 12
  • 53. Service Creation and Binding App Instance Redis Service 50Thursday, April 5, 12
  • 54. Service Creation and Binding App Instance Redis Service 50Thursday, April 5, 12
  • 55. Service Creation and Binding App Instance Redis Service MongoDB Service 50Thursday, April 5, 12
  • 56. How it works 51Thursday, April 5, 12
  • 57. Logical View Browser VMC client STS plugin (user app access) Routers CloudControllers App App HealthManager Services DEA Pool Messaging 52Thursday, April 5, 12
  • 58. Architecture 53Thursday, April 5, 12
  • 59. Register today http://cloudfoundry.com/signup Use Promo Code CFOpenTour2012 To avoid approval queue waiting time 54Thursday, April 5, 12
  • 60. Cloud for Developers: the true path is PaaS! 55Thursday, April 5, 12
  • 61. sample app polyglot in action by Mark Lucovsky 56 developer perspective v2.0Thursday, April 5, 12
  • 62. 57 developer perspective v2.0Thursday, April 5, 12
  • 63. 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 58 developer perspective v2.0Thursday, April 5, 12
  • 64. deployment instructions $ cd ~/stac2 $ vmc push 59 developer perspective v2.0Thursday, April 5, 12
  • 65. how is this possible? $  cd  ~/stac2;  cat  manifest.yml applications:    ./nabh:        instances:  16        mem:  128M        runtime:  node06        url:  ${name}.${target-­‐base}        services:            nab-­‐redis:                type:  :redis ./nabv:        instances:  96        mem:  128M          runtime:  ruby18        url:  ${name}.${target-­‐base}        services:            nab-­‐redis:                type:  :redis ./stac2:        instances:  2        mem:  128M          runtime:  ruby18        url:  ${name}.${target-­‐base} 60 developer perspective v2.0Thursday, April 5, 12
  • 66. 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 61 developer perspective v2.0Thursday, April 5, 12
  • 67. 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 62 developer perspective v2.0Thursday, April 5, 12
  • 68. 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);          }); 63 developer perspective v2.0Thursday, April 5, 12
  • 69. 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’]); } 64 developer perspective v2.0Thursday, April 5, 12
  • 70. 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);          }); } 65 developer perspective v2.0Thursday, April 5, 12
  • 71. 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” 66 developer perspective v2.0Thursday, April 5, 12
  • 72. 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” 67 developer perspective v2.0Thursday, April 5, 12
  • 73. 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 68 developer perspective v2.0Thursday, April 5, 12
  • 74. stac2 demo -or- screencast 69 developer perspective v2.0Thursday, April 5, 12
  • 75. stac2 demo -or- screencast 69 developer perspective v2.0Thursday, April 5, 12
  • 76. Lessons for Developers 70Thursday, April 5, 12
  • 77. 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 71Thursday, April 5, 12
  • 78. Things to Forget § First normal form § Waterfall model § Single server deployment § Single language skill § Build everything from scratch § Build custom infrastructure 72Thursday, April 5, 12
  • 79. Things to Learn • Agile, API Design • 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 73Thursday, April 5, 12
  • 80. Be your own bitch “Don’t be a Google Bitch, don’t be a Facebook Bitch, and Don’t be a Twitter Bitch. Be your own Bitch.” Fred Wilson http://techcrunch.com/2011/05/23/fred-wilson-be-your-own-bitch/ 74Thursday, April 5, 12
  • 81. Such stuff as dreams are made on § Like a kid on a candy store: theres 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 75Thursday, April 5, 12
  • 82. Cloud Foundry Resources Primary Site : cloudfoundry.com Open Source Site : cloudfoundry.org Twitter : @cloudfoundry , hash tag #cfoundry Blog : blog.cloudfoundry.com FB : facebook.com/cloudfoundry Support : support.cloudfoundry.com • Documentation • Knowledge Base • Q & A / Forums We’re hiring: www.cloudfoundry.com/jobs 76Thursday, April 5, 12
  • 83. Questions 77Thursday, April 5, 12 ?
  • 84. Thank You! t @CloudFoundry t @chanezon Website : www.cloudfoundry.com Blog : blog.cloudfoundry.com Forum : support.cloudfoundry.comThursday, April 5, 12
  • 85. 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 Cutts 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 79Thursday, April 5, 12
  • 86. 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 80Thursday, April 5, 12
  • 87. 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 81Thursday, April 5, 12