If indeed we are headed for a future in the cloud, developers are the big winners. And I'm not talking about that relatively small number of developers who frequent a PaaS (platform as a service) like Azure, CloudFoundry, Force.com, or Google App Engine. I'm talking about everyday dev and test infrastructure for whatever big new app needs to be built and deployed across hundreds or thousands of servers in private or public clouds.
Traditionally, developers have had a fraught relationship with operations. Sure, programmers do much of the coding on their own machines, but when it's time to get serious about an enterprise-grade application, someone has to stand up the testing environment to ensure availability, reliability, and scalability of the application, not to mention security. Operations people, who have other stuff on their plates, tend to be tasked with the job -- and sometimes they don't quite nail down the specific requirements needed for a real-world test.
[ InfoWorld's Matt Prigge asks, Moving data to the cloud? Read this first. | Get the no-nonsense explanations and advice you need to take real advantage of cloud computing in InfoWorld editors' 21-page Cloud Computing Deep Dive PDF special report. ]
That can lead to applications that are not properly tested before they're deployed. Yes, developers can be sloppy -- or sometimes too demanding -- in specifying their requirements, so I'm not saying that it's all ops' fault. But the point is: There has to be a better way than laborious manual deployment and configuration of such environments.
In fact, the most practical use of cloud computing today is to provide developers with the self-service tools they need to provision their own dev and test environments, either in a private cloud, a generic IaaS (infrastructure as a service) cloud such as Amazon Web Services, or in a PaaS cloud. On the private cloud side, HP and IBM even have appliance-like blade servers configured for precisely this purpose. Typically, you get a preinstalled app server, workflow tools, resource monitoring, and other stuff you need to get work under way.
But the advantages of the cloud run deeper than a turnkey dev and test environment. These days, development teams are often dispersed around the globe, and Web-based social media tools such as wikis provide a great way for developers to hash out issues, provide status reports, and otherwise keep the communication flowing. If there's a native cloud application, it's collaboration. You also want to put your source repository, build automation, and bug tracking in the cloud where everyone can access it.
Of course, many dev shops have moved to Web collaboration whether or not they work in a cloud environment. But think for a minute how well the bursty nature of the cloud fits the testing cycle. If you convince ops to scale up for regression testing or full-scale load testing, it's going to cost you a bundle. With the cloud -- particularly public cloud services -- you just fire up the VMs as needed and spin them down when you're done, pay-as-you-go style.
Cloud-based application development also fits nicely with agile development. When you bite off work in smaller chunks, with more iterations, you don't want to be slowed down by manual provisioning. You want to spin it up, test, deploy, and move on.
One consequence of cloud-based application development will almost certainly be a multiplicity of projects and applications spread across various public and private platforms. This presents a management challenge. Monitoring, integrating, and reporting across this diversity requires a new class of cloud app dev management tool that is only beginning to emerge. Solutions here range from VMWare's Hyperic, which provides agent-based application monitoring in virtual environments, to Nimsoft (acquired last year by CA), which provides both management and service desk capabilities, to zAgile, which provides a unified view of an application across its full development and deployment lifecycle.
Ultimately, the benefit for developers who learn how to leverage the cloud isn't just greater efficiency -- it's creating the apps that do a better job of meeting the needs of business stakeholders and deploying them with the same agility that is applied toward their development. With the time saved getting various environments provisioned properly, developers spend more time interacting with the business side -- and raise their profile in the organization.
Many people in IT complain, or at least worry privately, that the cloud threatens their livelihood. Developers enjoy the potential to make themselves more vital than ever.
This article, "What the cloud really means for developers," originally appeared at InfoWorld.com. Read more of Eric Knorr's Modernizing IT blog, and for the latest business technology news, follow InfoWorld on Twitter.