Deploying web applications and api services to clouds can be achieved through various ways such as using PaaSes, using deployment tools such as Chef/Puppet (which are more of configuration management tools), using hosted deployment services, or manual deployments. A deployment tool/system needs to support following capabilities:
- Ability to deploy applications starting from application source code (available either locally or in a source code tracking system such as Github)
- Ability to deploy applications that are available as built artifacts
- Ability to deploy applications on different compute form factors such as containers or VMs
- Ability to deploy and manage different application versions
- Provisioning services that are required by the application, such as MySQL or MongoDB, and connecting the application to them
Note that there are other aspects of application life-cycle management, such as running application unit and functional tests, collecting and accessing different kinds of application logs, monitoring application instances, scaling application instances, and so on. Strictly speaking these are not part of deployment issues/concerns.
In a recent Google survey that we ran it was instructive to see what all deployment tools are being used by people. As seen in the following graph, people’s preferred choice seems to be to use Cloud APIs/SDKs in tandem with configuration management solutions such as Chef and Puppet for handling their deployment needs. At the same time, PaaS systems are also gaining popularity as almost 20% of the respondents chose that option as well.
Deployment pain points
As PaaS systems keep on improving and adding more features, we anticipate that these percentages would start to tilt in their favor. This hypothesis is supported from the following two graphs which shows the pain points associated with cloud deployments, and who typically does cloud deployments.
We see that need of highly skilled professionals is the second most cited pain point in cloud app deployments. Correlating this point with the previous graph, it can be fair to say that the “highly skilled professionals” required for deployments are essentially the folks who are skilled in tools such as Chef/Puppet/Ansible/Salt.
Who does deployments?
The graph below shows that developers are the ones who are managing deployments to clouds. Correlating this with the first and second graphs, we can hypothesize that developers are resorting to tools such as Chef and Puppet for doing deployments, however they also find it a difficult skill as evidenced by cloud deployment pain points graph. This is to be expected since these tools help operation activities (purview of operators) more, than they do development activities (strength of developers).
The message here is simple. Developers would rather utilize PaaS systems for cloud application deployments. But currently their needs are probably not satisfied by these systems hence they are having to learn and use operations tools for this purpose. There is opportunity for PaaS systems here.