Your SlideShare is downloading. ×

PaaS on Openstack

5,001
views

Published on

Published in: Technology

0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
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's code is of lower quality and months later requires additional effort to match the quality of programmer B'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…)
  • Transcript

    • 1. PaaS on OpenStack
      @natishalom
      CTO & Founder
      GigaSpaces
    • 2. Agenda
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      2
    • 3. Defining the PaaS
      There is a difference between knowing the PaaS (path), and walking the PaaS (path).
      Morpheus in “The Matrix”
      Quiz: What do you
      expect from a PaaS?
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      3
    • 4. Agenda
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      4
    • 5. Different Paths to PaaS
      Productivity vs. Control tradeoffs
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      5
    • 6. Google App Engine Architecture
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      6
    • 7. Control assumptions
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      7
      You
      HW configuration
      Operating system
      Language (Java/Paython)
      Middleware stack (data-base, messaging,…)
      Architecture
      Performance (Quota : CPU, Mem, Net,..)
      Data center location
      Application Code
      Selecting the middleware stack from a predefined list.
    • 8. Heroku Architecture
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      8
      Routing Mesh
      DynoGrid
      SQL Database
      Memory Cache
    • 9. Control assumptions
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      9
      You
      HW configuration
      Operating system
      Language (Ruby)
      Middleware stack (data-base, messaging…)
      Flexibility of choices
      Architecture
      Performance (dyno)
      Data center location
      Application Code
      Selecting the middleware stack from a predefined list
    • 10. Elastic Beanstalk Architecture
      Elastic Beanstalk
      Application
      http://myapp-staging.elasticbeanstalk.com/
      Version
      Environment
      Elastic Load Balancer
      Auto
      Scaling
      EC2 Instances
      EC2 Instances
      EC2 Instances
      Version
      Version
      Apache
      Elastic Beanstalk
      Host Manager
      Tomcat
      Your Running Application
      Amazon Linux AMI
      10
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
    • 11. Control assumptions
      Amazon
      Operating system
      Language (Java)
      Middleware stack (tomcat, RDS…)
      Can be easily extended
      Architecture (Web)
      Storage
      Data center
      You
      Application Code
      Selecting the middleware stack (anything beyond tomcat)
      HW configuration
      Performance
      Limited control over the OS using linux tools
      JVM tuning/configuration
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      11
    • 12. Productivity Myths
      You have to give up control for more simplicity
      Not always…
      Less code = more productivity
      Productivity is measured by units of features being delivered (not lines of code)
      Opinionated architecture (Rails/Grails) is extremely productive
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      12
      “..developing on GAE introduced such a design complexity that working around it pushes us 5 months behind schedule.”
      Carlos Ble's post Goodbye Google App Engine
    • 13. So Who’s Better?
      Google/Heroku
      Top-down sandbox approach
      Highly opinionated
      Designed for extreme simplicity at expense of user control
      Amazon
      Bottom-up approach
      Designed for extreme simplicity with a significantly higher degree of control
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      13
      Fits a small subset of apps
      Fits a larger spectrum of apps
    • 14. Agenda
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      14
    • 15. PaaS on OpenStack – Aim Higher
      Anyone should be able to:
      Build their own PaaS in a snap
      Run on any cloud (public/private)
      Gain multi-tenancy, elasticity… Without code changes.
      Provide a significantly higher degree of control without substantial complexity
      Language choice
      OS
      Middleware stack
      Should come pre-integrated with popular stack
      Spring,Tomcat, DevOps, NoSQL, Hadoop…
      Designed to run the most demanding mission-critical apps
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      15
    • 16. The Building Blocks..
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      16
    • 17. Service Orchestration Layer
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      17
      GigaSpaces Application Cluster
      Deploy
      Control
      Grid Service Container
      Grid Service Container
      Grid Service Container
      Grid Service Manager
      Agent
      Agent
      Agent
      Public Cloud
      Private Cloud
      Bare metal
      Scale-in
      Scale-out
      Data Center/Cloud
    • 18. Grid Service Container
      Agent
      Zoom-In…
      18
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
    • 22. Service Recipe (Proposal)
      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"  }
      ® Copyright 2011 GigaSpaces Ltd. All Rights Reserved
      19
    • 23. Service Recipe Monitors & SLA
      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()))      }      //    }  } 
      ® Copyright 2011 GigaSpaces Ltd. All Rights Reserved
      20
    • 24. Agenda
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      21
    • 25. How does it work?
      You take the control seat.
    • 26. The Demo
      Use Cassandra as a private case for a service
      Demonstrate what it takes to
      Deploy
      Manage
      Handle failure
      Scale
      Monitor
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      23
    • 27. The Deployment Process
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      24
      Elastic Service
      Manager
      DevOps CLI
      2) Pack
      Cassandra
      Installation
      6) Start cassandra
      Grid Service Container
      3) Deploy
      5) Start containers
      Agent
      Cassandra
      Instances
      Grid Service Container
      1) Deploy Cassandra
      4) Provision a
      Machine and install
      GigaSpaces
      Agent
      Cassandra
      Instances
      7) Add instance
    • 28. Continuous Availability
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      25
      Instance failure
      USM starts new instance
      Grid Service Container
      Grid Service Container
      Grid Service Container
      Machine failure
      Agent
      Agent
      Elastic Service
      Manager
      Elastic manager starts a new instance on another machine
      Cassandra
      Instances
      Cassandra
      Instances
    • 29. Continuous Scalability
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      26
      Not enough resources to meet the SLA
      Add resources to meet the SLA
      Elastic Service
      Manager
      Grid Service Container
      Grid Service Container
      Grid Service Container
      Grid Service Container
      Agent
      Agent
      Agent
      Agent
      Cassandra
      Instances
      Cassandra
      Instances
      Cassandra
      Instances
      Cassandra
      Instances
      Monitor
    • 30. Multi-Tenancy
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      27
      Elastic Service
      Manager
      Add shared
      tenant
      Grid Service Container
      Grid Service Container
      Tenant B
      Agent
      Agent
      Tenant A
      Tenant C
      Add private
      tenant
    • 31. Composite Application
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      28
      Elastic Service
      Manager
      Grid Service Container
      Grid Service Container
      Agent
      Agent
      Apache
      Tomcat
      Grid Service Container
      Agent
      Cassandra
    • 32. Monitoring
      Redirect console output
      Monitor statistics through JMX
      Pluggable monitoring
      Management console:
      Web
      CLI
      API (REST, Groovy, Java)
      Alerts
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      29
    • 33. Current Status
      JClouds provider for OpenStack is ready
      Developed in Collaboration with GridDynamics & Adrian Cole
      Integrated with OpenStack/Cactus build
      Required a few patch updates to OpenStack code base
      Continuous collaboration with Citrix
      Integrate the platform with the underlying IaaS stack
      Better performance/utilization
      Full stack (pre-engineered) enterprise-ready solution
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      30
    • 34. Join the Effort
      Call for action
      Try out the provider jclouds
      Establish a PaaS working group to drive PaaS within OpenStack community
      Register now for the beta program
      www.gigaspaces.com
      Learn more..
      natishalom.typepad.com
      blog.gigaspaces.com
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      31
    • 35. Summary
      Curving out complexity, opinionated architecture, relying on someone else’s stack is only one way to achieve productivity at the expense of control
      With OpenStack we can aim higher and make the application infrastructure simpler and better suited for the cloud in the first place
      ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved
      32
    • 36. GigaSpaces Cloud Enabled Platform gigaspaces.com/paas-enablement
      gigaspaces.com/saas-enablement
      GigaSpaces XAP Product Overview:
      http://www.gigaspaces.com/wiki/