Seems like every great battle has a good guy, a bad guy, and perhaps an even uglier monster of a thing to contend with. If you’ve ever opened a new server box, and hours later found yourself at wits’ end searching through manuals trying to figure out why the heck the thing won’t boot properly, you’ve faced ugly head-on.
There’s also an interesting situation that one might put into the bad category. Volumes of unstructured data are metaphorically rusting in places like behind enterprise firewalls, not being used to their full potential. In fact, some estimates put it at 80 - 85% of all potentially usable business information originates in unstructured form.[1] And whether this data represents patient health-care records, vital customer interactions, potentially fraudulent insurance claims, or comments regarding your company circling around social networks, all forms of businesses and consumers might benefit greatly from the development of new applications that unlock this data’s full potential.
Unfortunately, in the past, the development of such really good applications had lots of bad and ugly obstacles that limited their development and deployment. For instance, there was the challenge of assembling a team of seasoned programmers who had the technical expertise to write sophisticated apps. There were the high capital costs of acquiring compute and storage infrastructure and, of course, the enormous complexity of assembling and managing the entire deployed stack so users had a great experience. And if the technical challenges weren’t tough enough, there were also thorny business issues to contend with like building a sales channel, pricing, and the high cost of network bandwidth to get the data to and from the app and end customer.
James Lindenbaum, CEO and Co-Founder of Heroku, discusses various distractions at play in the Cloud Computing market, including platform abstraction.
These days, however, there are many forces well at work conquering many of these challenges. The cost of network bandwidth is in a steady decline. App stores have created a level of business abstraction that provides developers a packaged go-to-market plan option. Modern programming languages greatly reduce the technical expertise and time required to write compelling apps, increasing the pool of potential developers. Infrastructure-as-a-Service (IaaS) Cloud providers have abstracted infrastructure complexity away so developers, among other things, no longer need to find screwdrivers and stick-its every time they need to rack a new server and label the maze of connecting cables.
That said, the next force in play is platform abstraction. Here, Platform-as-a-Service (PaaS) providers further abstract away complexity such as resource configuration and operating system management. Finally, developers can simply run their code and not worry about the underlying supporting stack of hardware, software and network.
And who will win in drawing developers to its PaaS offering? The winners of this next cloud battleground could very well be the ones who win the hearts and minds of developers by providing the highest level of agility and productivity.
Forces driving application platform adoption
Decreasing Cost of Network Bandwidth
Indeed, a number of forces at work are fundamentally changing the landscape for application development and deployment.
Let’s start with the cost of network bandwidth. Although pricing can vary greatly by provider, back in 2005 the median GigE IP Transit prices in New York and London ranged from $28 to $30 per Mbps per month.[2] Now, prices can be found around $4/Mbps per month, and could very well maintain the price decline as Moore’s law continues to apply itself in the IP transit and IP transport spaces.[3]
So as network cost barriers continue to fall, the cost to transmit data to and from applications and end users will continue to drop as well.
Unstructured Data
Clearly, “unstructured data” is a vague term, often used to describe anything not stored in a database. Typical forms of unstructured data include email, blogs, and web pages. In addition, as relationship databases grow, developers are moving to unstructured key/value pairs to better scale.
Regardless though of where this data is stored, there’s a wealth of information contained in it. For instance, how cool would it be to easily and quickly search buckets of unformatted corporate data using an iPhone or iPad app to assist in the decision-making process?
Business Abstraction
In the old days, as software companies were shrink wrapping their products, they were also worrying about fundamental business issues such as developing a sales channel.
Now with App stores from companies like Apple, much of that goes away. If a developer wants to take advantage of an App store’s existing pool of potential buyers, the business terms are already set. In the case of Apple, it’s 30% to Apple, 70% to the developer. Simple. And if you don’t like it, you can go somewhere else.
In addition, App stores have emerged as part of the IaaS and PaaS provider’s offerings, creating entire Cloud service eco-systems. For instance, if a developer on Heroku needs more functionality to go along with his application, he can check out the “Add-On” catalog and he’s one click away from deploying an additional service. Again, all the business terms are already set so no need for haggling.
OK, cool, you’re a developer with a wickedly great app idea, and the business abstraction has simplified your business plan. Now you only need to develop that new app and get it into a few App Stores pronto.
Programming Abstraction
For starters, application development has also become a lot easier. Again, in the old days, you had to worry about such relics as punch cards, and chasing memory-eating runaway pointers. In those days, you had to have a large team of fairly serious computer science educated geek-noids to build a truly commercial application.
Now with modern and mainstream programming languages such as Ruby, Python and Java, more of the programming complexity has been abstracted away, leaving developers to focus more on the application logic. In simplified terms, one result is that a lower level of technical expertise is now required to write applications. This is a good thing as growth for software engineers is expected to continue. For example, in the U.S. software, engineer jobs are forecasted to grow at 32% between 2008 - 2018, much faster than the average for other occupations.[4]
Burstorm CTSO Edward Wustenhoff shows how easy it is to start a machine image on Amazon EC2
Infrastructure Abstraction
As anyone reading this article no doubt knows, one of the things an IaaS provider offers is a level of abstraction over the compute, storage and network.
In the old days, you had to buy, rack and stack the hardware, load the operating system, apply patches, etc., before you could even get “hello world” staring at you from your monitor. Now, in about the time it takes to order a latte, you can have a virtual core and 1+ GB of memory up and running. This, of course, means huge cost and time savings for the developer as the IaaS providers abstract away much of the complexity of getting infrastructure running.
Then there’s competition in the IaaS landscape to discuss. At Cloudbook.net, we track more than 50 IaaS providers, but there are no doubt many more on the horizon. For instance, any and all Telcos and co-location providers are prime candidates to put up their own run-on-my-Cloud shingles.
What this means is that competition will continue to drive prices for infrastructure downward, as spinning up instances will look more and more like commodity offerings.
The Founder and CEO of Heroku, James Lindenbaum, introduces us to Heroku, and Heroku's focus as an application platform.
Platform Abstraction
Although IaaS offerings abstract away a lot of the infrastructure work, the developer still has to have some level of operational expertise. For instance, developers have to decide how many instances of what type to spin up, and when, so spikes in traffic don’t run their applications into ugly halts. In addition, they have to manage the deployed operating systems and middleware stacks. This means that a sys admin type of function is still required to run on a typical IaaS offering.
This is where the Platform Abstraction comes in. PaaS providers go the next step by abstracting away such things as the virtual services, operating systems and middleware stack. This enables developers to focus on high-level management of the application akin to controlling a car’s steering wheel and gas pedal.
Meanwhile, the Platform provider’s secret sauce worries about managing the underlying stack and virtualized resources, effectively controlling the engine underneath. In other words, with PaaS, developers no longer need to have operations know-how, which is a great feature as the pool of less technical developers expands.
In addition, the competition in the PaaS space is definitely heating up. In terms of market cap, these players come in all shapes and sizes. There are the big guys like Google App Engine and Microsoft Azure. Public Software-as-a-Service companies are moving down stack such as Salesforce.com partnering with VMWare to create VMForce and Netsuite with SuiteCloud. There are also upstarts innovating in PaaS include Heroku and Joyent with their own platform offerings.
James Lindenbaum, CEO and Co-Founder of Heroku, provides an example of how a developer can utilize Heroku's application platform.
And the Winner Is?
So who will win the Cloud Platform wars? As we said earlier, the keys will be agility and productivity: agility to respond quickly to changes in application real-time demand, and productivity to build the next apps quickly and efficiently.
After all, with these levels of abstraction, today’s developer has the good fortune of focusing on creating and running his code. And as access to more and more unstructured data is released from behind firewalls, the developers with the highest level of agility and productivity will probably be first to market with the next killer apps.
Meanwhile, the bad and ugly parts of application deployment are handled by others with high levels of specialization expertise.
Of course, what today’s developer loses are such things as late-night detective-style datacenter cage crawling, solving yet another monster of an infrastructure bug, and the enjoyment of patch management.
Perhaps like being the owner of a modern car, it might be best to leave the maintenance of bad to ugly operations problems to specialized mechanics; today’s developer might have far more interesting good to great places to go.