|
|
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…)
Continues -> Continuous
PaaS on OpenStack @natishalom CTO & Founder GigaSpaces
Agenda ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 2
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
Agenda ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 4
Different Paths to PaaS Productivity vs. Control tradeoffs ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 5
Google App Engine Architecture ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 6
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
Heroku Architecture ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 8 Routing Mesh Dyno Grid SQL Database Memory Cache
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
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
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
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
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
Agenda ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 14
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
The Building Blocks.. ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 16
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
Life cycle Provisioning Monitoring Statistics Zoom-In… ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 18
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" }
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())) } // } }
Agenda ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 21
You take the control seat. How does it work?
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
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
Continuous Availability ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 25 Grid Service Container Machine failure Elastic Service Manager Instance failure
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
Multi-Tenancy ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 27 Elastic Service Manager
Composite Application ® Copyright 2011 Gigaspaces Ltd. All Rights Reserved 28 Elastic Service Manager Agent Grid Service Container Cassandra
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
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
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
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
GigaSpaces Cloud Enabled Platform gigaspaces.com/paas-enablement gigaspaces.com/saas-enablement GigaSpaces XAP Product Overview: http://www.gigaspaces.com/wiki/
by natis | Modified: 2 years ago
Language: Sundanese | Topic: Architecture
| 1409 Views | 1630 Downloads | 22 Embeds |
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
| URL: |
No comments posted yet
Comments