2. AGENDA
PaaS, Defined
Different Paths to PaaS
What’s Missing?
A (Slightly) Different Approach
3. THE CLOUD STACK - RECAP
Manage
applications and
services
Provision
hosts/VMs
4. A PAAS TO SUCCESS?
“There is a difference between knowing the PaaS
and walking the PaaS…”
Morpheus (with slight adaptations…)
What do YOU expect
out of PaaS?
5. WHAT DO I EXPECT OUT OF PAAS?
I want to deploy my app
(regardless of the stack I’m using)
6. WHAT DOES PAAS REALLY MEAN?
Without fiddling with tedious installations
of OS & middleware
7. WHAT DOES PAAS REALLY MEAN?
Or host setup & provisioning
7
8. WHAT DOES PAAS REALLY MEAN?
But still maintain the same development practices, full
visibility, control & security
17. Control Assumptions
Servers Application Code
Operating system Selecting the middleware
Language (Java, .NET, PHP) stack (anything beyond Apache/IIS)
Middleware stack (tomcat, RDS, …) OS configuration (if you want)
– Can be easily extended Performance
Architecture (Web) JVM tuning/configuration
Storage
18. PRODUCTIVITY MYTHS
You have to give up control for “…developing on GAE
more simplicity introduced such a
Not always…
design complexity
that working around
it pushes us 5 months
Less code = more productivity behind schedule.”
Productivity is measured by units of
features being delivered (not lines of code)
Opinionated architectures
(e.g. RoR/Grails) are extremely
productive
Carlos Ble's post
Goodbye Google App Engine
19. Head to Head Comparison
GAE, Heroku Amazon
Top-down sandbox Bottom-up approach
approach Designed for extreme
Highly opinionated simplicity with a
Extreme simplicity at the significantly higher degree
expense of user control of control
Only “long tail”, Fits a larger
simple applications spectrum of apps
20. BUT STILL…
Current offerings are limited by
The stacks they support
The environment on which they run
Is this enough?
29. THE CHALLENGE (REALITY CHECK)..
“Majority of businesses are
planning to move their mission-
critical apps to the cloud over
the next two to five years” (HP
Survey amongst 940
Need Responders)
Only 5 percent have been able
to migrate at least half of their
applications to the cloud. By
Reality
the end of 2012, that number is
expected to rise to 20%
(Cisco Survey , 1300
Responders)
29
HTTP Reverse ProxyNginx (open source, C)This is the entry point for all requests coming into the platform. We maintain many of these front-end servers, and manage DNS, load balancing, and fail-over across them.This layer is tuned for high performance, and only handles HTTP-level processing, such as SSL and gzip compression, before passing connections immediately into the stack.HTTP CacheVarnish (open source, C)All requests, big or small, flow through this ultra-high-performance cache.If the requested content is available in the cache (a "hit"), the cache responds immediately and the request never reaches the dynamic application.Modern web apps get a huge performance boost from proper caching, and most frameworks (including Rails) have cache support built in.Routing Mesh(custom written, Erlang)The routing mesh balances requests across your app's dynos, tracking load and intelligently routing traffic to available resources.This makes your app more scalable and fault tolerant, as it can route traffic around misbehaving or overloaded app servers, as well as issue requests for new ones.A distributed pool of dynamic HTTP routers, the mesh easily handles frequent and instantaneous registration and de-registration of dynos.Dyno GridThis is where the action happens. Your actual code runs inside a dyno process. You can run as many dynos as needed, and they're distributed across the grid.The number of dynos running for your app can be increased or decreased instantly – it takes less than 2 seconds to start a dyno for most apps. The routing mesh can even hold connections while waiting for a dyno to start.Memory CacheMemcached (open source, C)A high-performance in-memory cache is a standard part of the modern web app, and is built-in to every Heroku app – big or small.Memcached is perfect for storing page fragments, the results of expensive database queries, or anything else you want blazingly fast access to.
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 extremly difficult that twitter decided to move away from it to Java/Scala…)