PaaS on Openstack
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

PaaS on Openstack

on

  • 5,618 views

 

Statistics

Views

Total Views
5,618
Views on SlideShare
5,602
Embed Views
16

Actions

Likes
6
Downloads
264
Comments
0

2 Embeds 16

http://www.bretterhofer.at 8
http://bretterhofer.at 8

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

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
  • 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…)

PaaS on Openstack Presentation 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.
    • Life cycle
    • 19. Provisioning
    • 20. Monitoring
    • 21. Statistics
    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/