PaaS on OpenStack<br />@natishalom<br />CTO & Founder <br />GigaSpaces<br />
Agenda<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />2<br />
Defining the PaaS<br />There is a difference between knowing the PaaS (path), and walking the PaaS (path).  <br />Morpheus...
Agenda<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />4<br />
Different  Paths to PaaS<br />Productivity vs. Control tradeoffs<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved...
Google App Engine Architecture<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />6<br />
Control assumptions<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />7<br />You<br />HW configuration<br />...
Heroku Architecture<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />8<br />Routing Mesh<br />DynoGrid<br /...
Control assumptions<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />9<br />You<br />HW configuration<br />...
Elastic Beanstalk Architecture<br />Elastic Beanstalk<br />Application<br />http://myapp-staging.elasticbeanstalk.com/<br ...
Control assumptions<br />Amazon<br />Operating system<br />Language (Java)<br />Middleware stack (tomcat, RDS…)<br />Can b...
Productivity Myths<br />You have to give up control for more simplicity<br />Not always…<br />Less code = more productivit...
So Who’s Better?<br />Google/Heroku<br />Top-down sandbox approach<br />Highly opinionated<br />Designed for extreme simpl...
Agenda<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />14<br />
PaaS on OpenStack – Aim Higher <br />Anyone should be able to:<br />Build their own PaaS in a snap<br />Run on any cloud (...
The Building Blocks..<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />16<br />
Service Orchestration Layer<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />17<br />GigaSpaces Application...
<ul><li> Life cycle
 Provisioning
 Monitoring
 Statistics</li></ul>Grid Service Container<br />Agent<br />Zoom-In…<br />18<br />® Copyright 2011 Gigaspaces Ltd. All Rig...
Service Recipe (Proposal)<br />service {  name "cassandra-service"  icon new File("icon.png")  defaultScalingUnit "small" ...
Service Recipe Monitors & SLA<br />monitoring {    pluginClass "org.openspaces.usm.JmxMetricsCollector"    config {      j...
Agenda<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />21<br />
How does it work?<br />You take the control seat.<br />
The Demo<br />Use Cassandra as a private case for a service<br />Demonstrate what it takes to<br />Deploy<br />Manage<br /...
The Deployment Process<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />24<br />Elastic Service<br />Manage...
Continuous Availability<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />25<br />Instance failure<br />USM ...
Continuous Scalability<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />26<br />Not enough resources to mee...
Multi-Tenancy<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />27<br />Elastic Service<br />Manager<br />Ad...
Composite Application<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />28<br />Elastic Service<br />Manager...
Monitoring<br />Redirect console output<br />Monitor statistics through JMX<br />Pluggable monitoring<br />Management cons...
Current Status<br />JClouds provider for OpenStack is ready<br />Developed in Collaboration with GridDynamics & Adrian Col...
Upcoming SlideShare
Loading in...5
×

PaaS on Openstack

5,156

Published on

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,156
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
278
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide
  • How to measure productivityA generally accepted working definition of programmer productivity needs to be established and agreed upon. Appropriate metrics need to established. Productivity needs to be viewed over the lifetime of code. Example: Programmer A writes code in a shorter interval than programmer B but programmer A&apos;s code is of lower quality and months later requires additional effort to match the quality of programmer B&apos;s code; in such a case, it is fair to claim that programmer B was actually more productive.You have to give up control for better simplicityTrue in some cases – but there are many cases were better control gets you more productivity for example – choosing your own OS can get you better performance, save bugs through patches that was already addressed etc , choosing your own selection of middleware packages can save the need to develop things that was already addressed through the ecosystem,..Productivity is measured by the number of lines of codeProductivity is measured by units of features being delivered (not lines of code)Development languages is only a small measure – take scala or earlnag for example. You can code the same thing that you would do in Java in few lines of code but it doesn’t come with strong development tools support, adminstration tools, and its hard to find skilled programmer in Scala – so even in the case that you could write less code for the same feature it doesn’t means that you would be able to deliver more features faster.Opinionated architecture (Rails/Grails) gets your more productivityTrue only if you stick to the exact design concept – but in reality architecture change and doesn’t always fits to all cases – in those cases designing to an opinionated approach can be significantly more complex.. (See the Twitter example, they started with Rails and over time found out that they needed something different – at the time Rails became extremely un productive to address their new needs and coding around it was extremely difficult that twitter decided to move away from it to Java/Scala…)
  • PaaS on Openstack

    1. 1. PaaS on OpenStack<br />@natishalom<br />CTO & Founder <br />GigaSpaces<br />
    2. 2. Agenda<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />2<br />
    3. 3. Defining the PaaS<br />There is a difference between knowing the PaaS (path), and walking the PaaS (path). <br />Morpheus in “The Matrix”<br />Quiz: What do you<br />expect from a PaaS?<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />3<br />
    4. 4. Agenda<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />4<br />
    5. 5. Different Paths to PaaS<br />Productivity vs. Control tradeoffs<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />5<br />
    6. 6. Google App Engine Architecture<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />6<br />
    7. 7. Control assumptions<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />7<br />You<br />HW configuration<br />Operating system<br />Language (Java/Paython)<br />Middleware stack (data-base, messaging,…)<br />Architecture<br />Performance (Quota : CPU, Mem, Net,..)<br />Data center location<br />Application Code<br />Selecting the middleware stack from a predefined list. <br />
    8. 8. Heroku Architecture<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />8<br />Routing Mesh<br />DynoGrid<br />SQL Database<br />Memory Cache<br />
    9. 9. Control assumptions<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />9<br />You<br />HW configuration<br />Operating system<br />Language (Ruby)<br />Middleware stack (data-base, messaging…)<br />Flexibility of choices<br />Architecture<br />Performance (dyno)<br />Data center location<br />Application Code<br />Selecting the middleware stack from a predefined list<br />
    10. 10. Elastic Beanstalk Architecture<br />Elastic Beanstalk<br />Application<br />http://myapp-staging.elasticbeanstalk.com/<br />Version<br />Environment<br />Elastic Load Balancer<br />Auto<br />Scaling<br />EC2 Instances<br />EC2 Instances<br />EC2 Instances<br />Version<br />Version<br />Apache<br />Elastic Beanstalk<br />Host Manager<br />Tomcat<br />Your Running Application<br />Amazon Linux AMI<br />10<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />
    11. 11. Control assumptions<br />Amazon<br />Operating system<br />Language (Java)<br />Middleware stack (tomcat, RDS…)<br />Can be easily extended<br />Architecture (Web)<br />Storage<br />Data center<br />You<br />Application Code<br />Selecting the middleware stack (anything beyond tomcat)<br />HW configuration<br />Performance <br />Limited control over the OS using linux tools<br />JVM tuning/configuration<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />11<br />
    12. 12. Productivity Myths<br />You have to give up control for more simplicity<br />Not always…<br />Less code = more productivity<br />Productivity is measured by units of features being delivered (not lines of code)<br />Opinionated architecture (Rails/Grails) is extremely productive<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />12<br />“..developing on GAE introduced such a design complexity that working around it pushes us 5 months behind schedule.”<br />Carlos Ble's post Goodbye Google App Engine<br />
    13. 13. So Who’s Better?<br />Google/Heroku<br />Top-down sandbox approach<br />Highly opinionated<br />Designed for extreme simplicity at expense of user control <br />Amazon <br />Bottom-up approach<br />Designed for extreme simplicity with a significantly higher degree of control<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />13<br />Fits a small subset of apps<br />Fits a larger spectrum of apps<br />
    14. 14. Agenda<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />14<br />
    15. 15. PaaS on OpenStack – Aim Higher <br />Anyone should be able to:<br />Build their own PaaS in a snap<br />Run on any cloud (public/private)<br />Gain multi-tenancy, elasticity… Without code changes.<br />Provide a significantly higher degree of control without substantial complexity<br />Language choice<br />OS<br />Middleware stack<br />Should come pre-integrated with popular stack<br />Spring,Tomcat, DevOps, NoSQL, Hadoop…<br />Designed to run the most demanding mission-critical apps <br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />15<br />
    16. 16. The Building Blocks..<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />16<br />
    17. 17. Service Orchestration Layer<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />17<br />GigaSpaces Application Cluster<br />Deploy<br />Control<br />Grid Service Container<br />Grid Service Container<br />Grid Service Container<br />Grid Service Manager<br />Agent<br />Agent<br />Agent<br />Public Cloud<br />Private Cloud<br />Bare metal <br />Scale-in<br />Scale-out<br />Data Center/Cloud <br />
    18. 18. <ul><li> Life cycle
    19. 19. Provisioning
    20. 20. Monitoring
    21. 21. Statistics</li></ul>Grid Service Container<br />Agent<br />Zoom-In…<br />18<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />
    22. 22. Service Recipe (Proposal)<br />service {  name "cassandra-service"  icon new File("icon.png")  defaultScalingUnit "small"  IpRange "*.*.*.*"  lifecycle {    //life cycle events can be shell scripts or groovy closures that receive the admin as a parameter    //here you can implement logic to download binaries from any repository or file server    install {ServiceContextserviceContext ->      myCalculatedParam = serviceContext.serviceInstance.localHostAddress.hostName;      masterNodeIp = serviceContext.getServiceInstanceMatching(name("cassandra-master")).localHostAddress.hostName      serviceContext.environmentParameters["localHostName"] = myCalculatedParam;      port = serviceContext.portLocator.nextAvailablePort      serviceContext.environmentParameters["port"] = port      //inject runtime parameters to a config file / script using a utility class      serviceContext.templateReplacer.replace("cassandra.yaml", serviceContext.environmentParameters)      "install.sh".execute();    }    uninstall "install.sh"    relocate "relocate.sh"    preStart "pre-start.sh"    start "start.sh"    postStart "post-start.sh"    preShutdown "pre-shutdown.sh"    shutdown "shutdown.sh"    postShutdown "post-shutdown.sh"  }<br />® Copyright 2011 GigaSpaces Ltd. All Rights Reserved <br />19<br />
    23. 23. Service Recipe Monitors & SLA<br />monitoring {    pluginClass "org.openspaces.usm.JmxMetricsCollector"    config {      jmxOperations["org.apache.cassandra.db:CompactionManager:CompletedTasks:Cassandra": "Completed Tasks",                    "org.apache.cassandra.db:CompactionManager:PendingTasks:Cassandra": "Pending Tasks",                    "org.apache.cassandra.db:CompactionManager:ColumnFamilyInProgress:Cassandra": "Column Family In Progress"];      jmxHost "127.0.0.1";      jmxPort 8080;    }  }  sla {    deploymentConstraints {      scalingUnit small    }    scalingRules {      rule {        priority 1        when {thisSerice().anyInstace."Disk Space".lessThan(30.MB) }        add 2.ScalingUnits      }      rule {        priority 2        when {thisSerice().anyInstace."CPU Utilization".lessThan(30.Percent).for(5.Minutes)}        remove 1.ScalingUnit      }      rule {        when (alertOfType("CPU Utilization").raisedFor(anyServiceNode()))      }      //    }  } <br />® Copyright 2011 GigaSpaces Ltd. All Rights Reserved <br />20<br />
    24. 24. Agenda<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />21<br />
    25. 25. How does it work?<br />You take the control seat.<br />
    26. 26. The Demo<br />Use Cassandra as a private case for a service<br />Demonstrate what it takes to<br />Deploy<br />Manage<br />Handle failure<br />Scale<br />Monitor <br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />23<br />
    27. 27. The Deployment Process<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />24<br />Elastic Service<br />Manager<br />DevOps CLI<br />2) Pack<br />Cassandra<br />Installation<br />6) Start cassandra<br />Grid Service Container<br />3) Deploy<br />5) Start containers<br />Agent<br />Cassandra<br />Instances<br />Grid Service Container<br />1) Deploy Cassandra<br />4) Provision a <br />Machine and install<br />GigaSpaces<br />Agent<br />Cassandra<br />Instances<br />7) Add instance<br />
    28. 28. Continuous Availability<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />25<br />Instance failure<br />USM starts new instance <br />Grid Service Container<br />Grid Service Container<br />Grid Service Container<br />Machine failure<br />Agent<br />Agent<br />Elastic Service<br />Manager<br />Elastic manager starts a new instance on another machine<br />Cassandra<br />Instances<br />Cassandra<br />Instances<br />
    29. 29. Continuous Scalability<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />26<br />Not enough resources to meet the SLA<br />Add resources to meet the SLA<br />Elastic Service<br />Manager<br />Grid Service Container<br />Grid Service Container<br />Grid Service Container<br />Grid Service Container<br />Agent<br />Agent<br />Agent<br />Agent<br />Cassandra<br />Instances<br />Cassandra<br />Instances<br />Cassandra<br />Instances<br />Cassandra<br />Instances<br />Monitor<br />
    30. 30. Multi-Tenancy<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />27<br />Elastic Service<br />Manager<br />Add shared <br />tenant<br />Grid Service Container<br />Grid Service Container<br />Tenant B<br />Agent<br />Agent<br />Tenant A<br />Tenant C<br />Add private <br />tenant<br />
    31. 31. Composite Application<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />28<br />Elastic Service<br />Manager<br />Grid Service Container<br />Grid Service Container<br />Agent<br />Agent<br />Apache<br />Tomcat<br />Grid Service Container<br />Agent<br />Cassandra<br />
    32. 32. Monitoring<br />Redirect console output<br />Monitor statistics through JMX<br />Pluggable monitoring<br />Management console:<br />Web<br />CLI<br />API (REST, Groovy, Java)<br />Alerts<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />29<br />
    33. 33. Current Status<br />JClouds provider for OpenStack is ready<br />Developed in Collaboration with GridDynamics & Adrian Cole<br />Integrated with OpenStack/Cactus build<br />Required a few patch updates to OpenStack code base<br />Continuous collaboration with Citrix<br />Integrate the platform with the underlying IaaS stack<br />Better performance/utilization<br />Full stack (pre-engineered) enterprise-ready solution <br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />30<br />
    34. 34. Join the Effort<br />Call for action<br />Try out the provider jclouds<br />Establish a PaaS working group to drive PaaS within OpenStack community<br />Register now for the beta program<br />www.gigaspaces.com<br />Learn more..<br />natishalom.typepad.com<br />blog.gigaspaces.com<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />31<br />
    35. 35. Summary<br />Curving out complexity, opinionated architecture, relying on someone else’s stack is only one way to achieve productivity at the expense of control<br />With OpenStack we can aim higher and make the application infrastructure simpler and better suited for the cloud in the first place<br />® Copyright 2011 Gigaspaces Ltd. All Rights Reserved <br />32<br />
    36. 36. GigaSpaces Cloud Enabled Platform gigaspaces.com/paas-enablement<br />gigaspaces.com/saas-enablement<br />GigaSpaces XAP Product Overview:<br />http://www.gigaspaces.com/wiki/<br />
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×