What's Next? Paris - Adrian Colyer Keynote

1,497 views

Published on

Adrian's keynote slides from What's Next? Paris - 26th May 2011. Watch out for the full InfoQ recording of the session coming soon.

Published in: Technology
  • Be the first to comment

What's Next? Paris - Adrian Colyer Keynote

  1. 1. Enterprise  Apps  in  2011   and  beyond   Adrian Colyer VMware @adriancolyer
  2. 2. 1. Big Picture Stuff 2. Open PaaS3. Application implications
  3. 3. major  forces  that  impact  the  way  we  develop  and  deploy  applica;ons  PART  I:  THE  BIG  PICTURE  
  4. 4. language,new ways to tools,access fworks, data, enterprise services, apps designnew modes of new deploymentinteraction options
  5. 5. new ways toaccess client and server-side implications
  6. 6.          Greenhouse  
  7. 7. new modes of interactionsocial commentary social objects social entities
  8. 8. cross-­‐store  persistence  
  9. 9. cross-­‐store  persistence  
  10. 10. blobBIG column document graph key-valuedata map-reduce relational!
  11. 11. development andnew  deployment  op;ons   public traditional private PaaS hybrid
  12. 12.  why  PaaS?   •  eliminate tickets •  business agility •  cost models •  scalability •  low barrier to entry
  13. 13. this  changes  everything  PART  II:  OPEN  PAAS  
  14. 14. Cloud  Foundry  –  Open  PaaS   •  www.cloudfoundry.com •  www.cloudfoundry.org
  15. 15. choice  of  frameworks   Cloud Foundry
  16. 16. choice  of  applica;on  services   Data  Services   Msg  Services   Other  Services  
  17. 17. choice  of  clouds  Data  Services   Private     Clouds     Public   Msg  Services   Clouds   Micro   Other  Services   Clouds  
  18. 18. cloud  foundry  :  the  open  paas   Data  Services   Private     Clouds     Msg  Services   Public   Clouds   Micro   Other  Services   Clouds  
  19. 19. $
  20. 20. $ vmc info
  21. 21. $ vmc info VMwares Cloud Application Platform For support visit support@cloudfoundry.com Target: http://api.cloudfoundry.com (v0.999) Client: v0.3.4 User: acolyer@vmware.com Usage: Memory (512.0M of 2.0G total) Services (2 of 16 total) Apps (1 of 20 total) $
  22. 22. $ vmc info VMwares Cloud Application Platform For support visit support@cloudfoundry.com Target: http://api.cloudfoundry.com (v0.999) Client: v0.3.4 User: acolyer@vmware.com Usage: Memory (512.0M of 2.0G total) Services (2 of 16 total) Apps (1 of 20 total) $ vmc apps
  23. 23. For support visit support@cloudfoundry.com Target: http://api.cloudfoundry.com (v0.999) Client: v0.3.4 User: acolyer@vmware.com Usage: Memory (512.0M of 2.0G total) Services (2 of 16 total) Apps (1 of 20 total) $ vmc apps +-------------+----+---------+-----------------------------+----------+ | Application | # | Health | URLS | Services | +-------------+----+---------+-----------------------------+----------+ | showcase | 1 | RUNNING | showcase.cloudfoundry.com | | | hello-node | 1 | STOPPED | hello-node.cloudfoundry.com | | +-------------+----+---------+-----------------------------+----------+ $
  24. 24. For support visit support@cloudfoundry.com Target: http://api.cloudfoundry.com (v0.999) Client: v0.3.4 User: acolyer@vmware.com Usage: Memory (512.0M of 2.0G total) Services (2 of 16 total) Apps (1 of 20 total) $ vmc apps +-------------+----+---------+-----------------------------+----------+ | Application | # | Health | URLS | Services | +-------------+----+---------+-----------------------------+----------+ | showcase | 1 | RUNNING | showcase.cloudfoundry.com | | | hello-node | 1 | STOPPED | hello-node.cloudfoundry.com | | +-------------+----+---------+-----------------------------+----------+ $ vmc services
  25. 25. +-------------+----+---------+-----------------------------+----------+ | Application | # | Health | URLS | Services | +-------------+----+---------+-----------------------------+----------+ | showcase | 1 | RUNNING | showcase.cloudfoundry.com | | | hello-node | 1 | STOPPED | hello-node.cloudfoundry.com | | +-------------+----+---------+-----------------------------+----------+ $ vmc services ============== System Services ============== +----------+---------+-------------------------------+ | Service | Version | Description | +----------+---------+-------------------------------+ | rabbitmq | 2.4 | RabbitMQ message queue | | mysql | 5.1 | MySQL database service | | mongodb | 1.8 | MongoDB NoSQL store | | redis | 2.2 | Redis key-value store service | +----------+---------+-------------------------------+ =========== Provisioned Services ============ +----------+----------+ | Name | Service | +----------+----------+ | mybroker | rabbitmq | | mydb | mysql | +----------+----------+
  26. 26. $ vmc frameworks +---------+ | Name | +---------+ | node | | spring | | rails3 | | grails | | sinatra | +---------+ $
  27. 27. $ vmc frameworks +---------+ | Name | +---------+ | node | | spring | | rails3 | | grails | | sinatra | +---------+ $ vmc runtimes
  28. 28. | node | | spring | | rails3 | | grails | | sinatra | +---------+ $ vmc runtimes +--------+-------------+-----------+ | Name | Description | Version | +--------+-------------+-----------+ | node | Node.js | 0.4.5 | | java | Java 6 | 1.6 | | ruby18 | Ruby 1.8 | 1.8.7 | | ruby19 | Ruby 1.9 | 1.9.2p180 | +--------+-------------+-----------+ $
  29. 29. $ cd myapp myapp$ vmc push whatsnext Would you like to deploy from the current directory? [Yn]: Y Application Deployed URL: whatsnext.cloudfoundry.com? Detected a Java SpringSource Spring Application, is this correct?[Yn]: Memory Reservation [Default:512M] (64M, 128M, 256M, 512M or 1G) Creating Application: OK Would you like to bind any services to whatsnext? [yN]: N Uploading Application: Checking for available resources: OK Processing resources: OK Packing application: OK Uploading (8K): OK Push Status: OK Starting Application: OK myapp$
  30. 30. $ vmc instances whatsnext +-------+---------+--------------------+ | Index | State | Start Time | +-------+---------+--------------------+ | 0 | RUNNING | 05/23/2011 03:36PM | +-------+---------+--------------------+ $
  31. 31. $ vmc instances whatsnext +-------+---------+--------------------+ | Index | State | Start Time | +-------+---------+--------------------+ | 0 | RUNNING | 05/23/2011 03:36PM | +-------+---------+--------------------+ $ vmc instances whatsnext 3 Scaling Application instances up to 3: OK $
  32. 32. $ vmc instances whatsnext +-------+---------+--------------------+ | Index | State | Start Time | +-------+---------+--------------------+ | 0 | RUNNING | 05/23/2011 03:36PM | +-------+---------+--------------------+ $ vmc instances whatsnext 3 Scaling Application instances up to 3: OK $ vmc instances whatsnext
  33. 33. $ vmc instances whatsnext 3 Scaling Application instances up to 3: OK $ vmc instances whatsnext +-------+---------+--------------------+ | Index | State | Start Time | +-------+---------+--------------------+ | 0 | RUNNING | 05/23/2011 03:36PM | | 1 | RUNNING | 05/23/2011 03:46PM | | 2 | RUNNING | 05/23/2011 03:46PM | +-------+---------+--------------------+ $
  34. 34. other  vmc  commands  •  create-­‐service  <service>  <name>  <app>  •  bind-­‐service  <servicename>  <appname>  •  unbind-­‐service  <servicename>  <appname>  •  update  <appname>  •  map  <appname>  <url>  •  logs  <appname>  •  stats  <appname>  •  target  <url>  •  …  
  35. 35. Applica;on  Concepts   All  of  the  code,  libraries,  and,  data  that  are  needed  in   my  code   order  to  run  my  code  on  a  system  supplied  stack   Instances  make  my  applica;on  scale.  The  more   instances  the  more  load  the  app  can  handle   My  app  is  URL  addressable  and  can  have  mul;ple  URLs,   http://www.foo some  clouds  allow  custom  domains   Services  are  used  to  extend  an  applica;on  with  higher   level  func;ons  like  a  KV  store  or  email  gateway  Applica;on  Tools   $  vmc  update  myapp $  vmc  apps vmc  (command  line  tool)  and  STS  plugin  (IDE)  are  the   primary  tools  used  by  developers   $  vm
  36. 36. $ grails prod cf-push
  37. 37. Sends droplet heart beats and exit messages Router Router Registers and Registers and unregisters unregisters Routes REST API Routes droplet requests requests Droplet change notifications Droplet Cloud Controller OrchestratesHealth Manager start/stop Cloud Controller (Start, Stop, Find) Droplet Execution requests Agent (DEA)Periodically scans Persists droplets for consistency and provisioned Guest applications Advertise services consume Cloud Service Controller Provision and Database unprovision Service "A" Provision Service and "A" Provisioning Agent unprovision
  38. 38. and  it’s  only  just  the  beginning…  PART  III:  WHAT  PAAS  MEANS  FOR  APPS  &  SERVICES  
  39. 39. applica;on  enablers  •  polyglot  applica;ons  •  service  consump;on  •  web  of  services  
  40. 40. full description and links to source athttp://blog.springsource.com
  41. 41. ;cker-­‐sample   browser socket.io store ingenerate subscribe mongoticker tickerevents stream subscribe update min, max, ticker avg. stream
  42. 42. web  of  services  lot oflittleservicesinfrastructure …services
  43. 43. applica;on  challenges  •  portability  •  elas;c  scaling  •  cloud-­‐burs;ng  and  other  hybrid   scenarios  •  monitoring  
  44. 44. environment  beans  <beans profile="cloud"> <cloud:datasource id="dataSource"/> </beans> <beans profile="default"> <jdbc:embedded-database id="dataSource"/> </beans> @Profile("production") …
  45. 45. elas;c  scaling  •  no  silver  bullets  •  design  for  scale   -­‐  think  about  data,   -­‐  deployment  units,   -­‐  messaging  
  46. 46. design  for  scale   application database
  47. 47. design  for  scale   app app sessionsmsg fabric app data app app app ref data app data fabric database
  48. 48. cloud  foundry  example   system  load  balancer   elas;c  pool   redis   mysql   front_end   front_end   rabbitMQ   elas;c  pool   mongodb   back_end  
  49. 49. #  create  the  front  end  and  backend  apps#  front  end  is  small  but  multi-­‐instancevmc  push  fe  –instances  8  –mem  64M  –path  ../fe_codevmc  push  be  –instances  2  –mem  256M  –path  ../be_code#  create  the  services  and  bind  per  specvmc  create-­‐service  mysql  –name  mysql  –bind  fevmc  create-­‐service  mongodb  –name  mongo  –bind  bevmc  create-­‐service  rabbit  –name  rabbit  –bind  fevmc  create-­‐service  redis  –name  redis  –bind  fevmc  bind-­‐service  redis  bevmc  bind-­‐service  rabbit  be#  to  perform  an  update  of  codevmc  update  fe  –path  ../new_fe_codevmc  update  be  –path  ../new_be_code
  50. 50. the data’s overthere!
  51. 51. thank  you  for  listening  PART  IV:  IN  CONCLUSION  
  52. 52. language,new ways to tools,access fworks, data, enterprise services, apps designnew modes of new deploymentinteraction options
  53. 53. thank  you   Adrian Colyer VMware @adriancolyer

×