I get a lot of questions about the best way for developers to move to the cloud. That's a good thing, because trying to forklift your existing applications "as-is" isn't a recipe for success. Building elastic applications requires a focus on statelessness, atomicity, idempotence, and parallelism — qualities which are not often built into traditional "scale-up" applications.
But I also get questions that I think are a bit beside the point, like "Which is better: Infrastructure as a Service or Platform as a Service?" My answer: "It depends on what you're trying to accomplish, your teams' skills and how you like to consume software from ISVs".
That first question is often followed up by a second: "Who's the leader in the public cloud space?" It's like asking, "who's the leading car maker?" There's a volume answer, and there's a performance answer. It's one answer if you like pick-ups, and it's a different answer if you want an EV. You have to look at your individual needs and match the capabilities of the car and it's "ilities" to those needs.
That's how I think we're starting to see developer adoption of cloud services evolve, based around the capabilities of individual services — not the *aaS taxonomy we pundits and vendors apply to what's out there.
This approach to service based adoption is reflected in data from our Q1 2013 Forrsights Developer Survey, so I've chosen publish some of it today to illustrate the adoption differences we see from service to service.
First, a bit about the data below. We asked all developers in our survey about the types of application development technologies they've worked with in the past 24 months. Of the 1,611 North American and European developers we surveyed, 325 (or just over 20 percent) indicated that they had worked with cloud computing or elastic applications.
We then asked those developers a variety of questions about how they are using cloud/elastic technologies. It's probably not a surprise that the three most common types of cloud services developers have adopted to this point are compute, storage, and relational data services (see figure 1). Compute and storage are both regularly employed by 47 percent of the survey respondents, and RDBMs services are used by 36 percent of survey respondents.
Other cloud-based services like development tools, messaging, caching, and No SQL DBMS trail these big three by a significant margin.
Figure 1: Most common types of cloud services developers adopt
So what happens when we look at how leading public cloud providers fare amongst developers that employ each of these three types of services? Each adoption profile tells a slightly different story (see figure 2):
- Amazon shows a lead with developers using cloud compute. 62 percent of developers surveyed that are using cloud compute resources have either implemented Amazon EC2 or plan to expand their use of it over the next 12 months. That's more than a 20 point gap between Amazon Web Services (AWS) and Microsoft Azure (39 percent implemented or expanding) or the Google Cloud Platform (29 percent implemented or expanding). This gap in adoption is well outside a standard margin of error, so we have to give the nod to AWS when it comes to compute.
- Microsoft and Amazon are neck and neck amongst users of cloud RDBMS. Things are very different when it comes to developers using cloud-based RDBMS services. While it's easy to look at developer adoption data and conclude that Microsoft Azure SQL Database has an edge over Amazon RDS (48 percent Implemented and Expanding vs. 45 percent) those numbers are within our margin of error. Also note that there are a high number of developers that are planning to implement Amazon's RDS service (27 percent) while 7 percent of Microsoft SQL Azure developers plan to decrease or remove their RDBMs workloads. Overall, we'd have to rate this workload as a push — with no clear adoption leader.
- Microsoft and Google are making inroads in storage. When it comes to developers using cloud storage, there's almost no difference in how developers plan to expand their use of AWS, Microsoft Azure, or Google Cloud Storage over the next 12 months (25 percent vs. 22 percent vs. 23 percent). Amazon still has a larger body of developers that have implemented but are not expanding AWS S3 (17 percent compared to 10 percent for Microsoft Azure and 9 percent for Google respectively). Our take: this workload looks like it's headed for a strongly competitive market in 2014.
Figure 2: Amazon Tops Developer Intentions Among Compute Users
Looking at each of these three important cloud services shows different competitive forces at play within each service type, and that's key to understanding how the cloud market is evolving.
We're moving away from distinct leaders in one market segment like Infrastructure-as-a-Service (IaaS) or Platform-as-a-Service (PaaS) and moving toward a model that mirrors a traditional buying pattern, where app development professionals choose between best of breed services (e.g. compute, storage, RDBMS, messaging, CRM) or integrated data-centers of services (AWS, Microsoft Azure, Google Cloud Platform, Salesforce/Heroku/Database.
If you believe in best of breed today for your on-premise strategy, then it's likely that it will make sense to look at adoption leaders in the cloud in a similar way — on a service-by-service basis. If you'd prefer to use one provider that has the best aggregate buffet of services, then who's leading who at the individual level will matter less.
Forrester clients should check out my developer landscape document and James Staten's "Who Are Enterprise Cloud Developers?" for more detail on cloud adoption by developers. If you're interested in other cloud providers not mentioned here, or other cloud workloads and how they compare against storage, compute, and RDBMS then consider becoming a Forrsights Developer Survey client.