PaaS on OpenStack

+1

No comments posted yet

Comments

Slide 12

How to measure productivity A 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 simplicity True 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 code Productivity 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 productivity True 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…)

Slide 25

Continues -> Continuous

Slide 1

PaaS on OpenStack @natishalom CTO & Founder GigaSpaces

Slide 2

Agenda ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 2

Slide 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

Slide 4

Agenda ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 4

Slide 5

Different Paths to PaaS Productivity vs. Control tradeoffs ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 5

Slide 6

Google App Engine Architecture ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 6

Slide 7

Control assumptions ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 7 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. You

Slide 8

Heroku Architecture ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 8 Routing Mesh Dyno Grid SQL Database Memory Cache

Slide 9

Control assumptions ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 9 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 You

Slide 10

Elastic Beanstalk Application Elastic Beanstalk Architecture Auto Scaling http://myapp-staging.elasticbeanstalk.com/ Elastic Load Balancer Apache Tomcat Amazon Linux AMI Your Running Application EC2 Instances EC2 Instances EC2 Instances Version Version Version Environment Elastic Beanstalk Host Manager ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 10

Slide 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

Slide 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

Slide 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

Slide 14

Agenda ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 14

Slide 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

Slide 16

The Building Blocks.. ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 16

Slide 17

Service Orchestration Layer ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 17 Grid Service Manager GigaSpaces Application Cluster Scale-out Scale-in Deploy Control Data Center/Cloud

Slide 18

Life cycle Provisioning Monitoring Statistics Zoom-In… ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 18

Slide 19

Service Recipe (Proposal) ® Copyright 2011 GigaSpaces Ltd. All Rights Reserved 19 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 {ServiceContext serviceContext ->       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"   }

Slide 20

Service Recipe Monitors & SLA ® Copyright 2011 GigaSpaces Ltd. All Rights Reserved 20 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()))       }       //     }   }  

Slide 21

Agenda ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 21

Slide 22

You take the control seat. How does it work?

Slide 23

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

Slide 24

The Deployment Process ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 24 Cassandra Installation Agent Grid Service Container 1) Deploy Cassandra DevOps CLI Elastic Service Manager

Slide 25

Continuous Availability ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 25 Grid Service Container Machine failure Elastic Service Manager Instance failure

Slide 26

Continuous Scalability ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 26 Elastic Service Manager Monitor Not enough resources to meet the SLA Add resources to meet the SLA

Slide 27

Multi-Tenancy ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 27 Elastic Service Manager

Slide 28

Composite Application ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 28 Elastic Service Manager Agent Grid Service Container Cassandra

Slide 29

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

Slide 30

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

Slide 31

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

Slide 32

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

Slide 33

GigaSpaces Cloud Enabled Platform gigaspaces.com/paas-enablement gigaspaces.com/saas-enablement GigaSpaces XAP Product Overview: http://www.gigaspaces.com/wiki/

Summary: The presentation provides an overview of the different PaaS platforms - specifically Google, Heroku, Amazon and suggest a better model for developing PaaS on top of OpenStack which will provide better degree of tradeoffs between control and simplicity

Tags: openstack gigaspaces jclouds paas

URL: