To get an application running in the cloud you can spend long hours downloading, compiling, installing, configuring, and connecting all sorts of components— and that is just to get your application up and running on a single virtual server instance. Not only can this be time-consuming and costly, but it takes away from time you could have spent innovating and improving your application.
But now there is a better way. In the last several years, technologies between the operating system and your application—the platform layer—have evolved and matured to make cloud computing easier.
Rather than downloading and building all of those platform-level technologies on each server instance, and then later having to repeat the process as you scale, you can go to a simple Web user interface, click a few options, and have your application automatically deployed to a fully provisioned cluster. As application usage grows, you can later add more capacity by clicking a few more buttons. As you need to set up increasingly sophisticated architectures such as high availability and disaster recovery, you can do this from the same Web interface. And as all the constituent platform components evolve along their own respective paths, they are updated for you, with no required effort on your part. That is what Platform-as-a-Service (PaaS) is all about.
You get a reliable comprehensive application platform that lets you retain full access to all the environment components with “white-glove” expertise and support if you ever have questions or issues with your system. You can focus on improving your application while Engine Yard takes care of your platform. There are numerous benefits to using a PaaS rather than “doing it yourself” on an IaaS, including agility, efficiency, quality, and other needs. We briefly outline the most important of these benefits below.
PaaS consists of three main components. First, there are the layers of software that your application runs on—“the stack”. These are the various libraries, frameworks, and services that the developer uses to build the application and which are assumed to be present in the runtime environment. The stack consists of components such as the language interpreter or language virtual machine (VM), the application framework (e.g. Rails, Lithium), the HTTP server, the load balancer, caching mechanisms, databases and so on. A given PaaS may offer several stack combinations to choose from, such as different stacks for different languages or different frameworks within a language domain. The stack remains with your application as it runs; logically, it becomes essentially a part of your application.
The second major component of a PaaS is the deployment machinery that instantiates virtual servers and provisions them with instances of the stack and your application code. This machinery operates when you click the deploy button (or perhaps invoke it from a command line), and it gets out of the way once deployment is complete and your application is up and running. This machinery is itself code, perhaps a combination of scripts and Web services, and perhaps uses an off-the-shelf technology such as Puppet or Chef. The way this machinery is architected, the particular parameters it exposes, and the functions it makes available to an overlying graphical user interface (GUI) or command-line interface (CLI) are important differentiators between a good PaaS and a bad one.
The third component is the user interface and the overall user experience (UX). A particular PaaS may provide Web GUI, a CLI or both. The ordering of the screens, the choices made available, the logic of how multiple applications and environments are organized and presented—all these factors are make-or-break for the learnability and usability of a given PaaS. The goal is to make it easy to change the things you care about and hide the things you don’t care about. The right trade-offs between simplicity and flexibility, constraint and freedom, and opaqueness and transparency are all critical.
Choosing the right PaaS takes some thought and understanding of your needs and goals. It’s not trivial, but making the right choice can be of huge benefit to your business.
No matter what business you’re in, and no matter what stage your business is in, PaaS can help you innovate new offerings, expand your capacity, extend your customer base, and grow quickly. Here are a few examples of the value PaaS can bring to your business.
First and foremost, using a PaaS to deploy and run your application enhances your agility.
The Web is accelerating the pace of innovation. To compete, you need to quickly transform new ideas into real applications and evolve those applications with agility in order to meet fast-changing business and technical requirements. Market opportunities exist very briefly. Your business needs to build, deploy, and iterate in days or weeks, not months or years.
Setting up platform-level software to run your application is time-consuming and complex. By simplifying, automating, and in many cases eliminating the steps associated with setting up the foundation for your application, you can get your application deployed much more quickly in the first place, and you can iterate, adapt, and extend it more rapidly over time.
It takes us 50% less time to deploy on Engine Yard Cloud because it’s so easy to configure servers. We can deploy with just a few clicks and add another instance with just one more click—and on top of it all, everything is pre-configured by Rails experts at Engine Yard who could write the book on best practices for rapid deployment.
– Josh Krall, CTO, TransFS