Will there will be no end to the media hype surrounding cloud computing? Every day a new press release touts the remarkable service provided by some previously unknown PaaS provider, or an article or research study comes out that trumpets the incredible benefits and cost savings we would all enjoy if we abolished our data centers and indoctrinated ourselves as patrons of the Church of IaaS or the Temple of SaaS. But putting all of the hype aside, not to mention the fact that there are indeed real benefits to be realized by properly leveraging cloud based technologies, the question remains: how does this shift towards cloud computing impact the typical developer who is building enterprise Java applications?
On first blush, one might assert that the emergence of cloud-based technologies really shouldn't have any impact on a Java developer at all. After all, the code a developer writes, especially a server-side, enterprise Java developer, should be agnostic with respect to where the code gets deployed. Whether a Web application developed using Spring-MVC gets deployed to a JBoss server, an instance of Tomcat or to a WebSphere Liberty profile is really of no concern to the application developer. As long as the Java code a developer writes passes all of the required unit tests, life should be grand. The developer can then just throw the code over the cubicle wall to those in operations and let them handle the intricacies of cloud-based deployment and runtime management.
So, if the cloud isn't necessarily impacting how applications are coded, in what ways is the emergence of cloud computing impacting application developers?
"The two biggest ways that the cloud will impact application development are the tools developers use and the approach that gets taken to application architecture," says Ryan Shriver, managing consultant with Dominion Digital. "Tools for source code control, continuous integration and automated testing have been around forever, long prior to the emergence of the cloud. But now, those tools are becoming easier to use than ever. Instead of downloading subversion, finding a server on which to install it, figuring out how to add users and all that kind of stuff, I can now go online, sign up for free, invite my friends, upload my code and away I go."
What is the net result of using these cloud based tools? Perhaps they don't actually change the way developers write code, but they do help to streamline the on-boarding process, and teams become more efficient as there is no longer the need for that dedicated person to do code integration or run the test suite before deployment. In the end, the developer is more empowered, more in tune with the process, and as a result is more productive.
And of course, while the existence of a cloud based runtime may not change the way you code a Servlet or write a JPA entity, the fact that your runtime environment can scale elastically may actually change the way you approach solving some of your more complex programming problems. "You're going to think differently about how you solve certain problems if you have access to those elastic resources that can scale up or scale down." Says Ryan. That might mean using Hadoop to process results, or taking a Big Data approach to data management, or even just worrying less about how big of a data graph you're throwing into the HttpSession, but regardless of whether a cloud-based technology is a fit or not for a given business problem, the fact is, the enterprise developer needs to know the capabilities that cloud-based solutions provide along with the knowledge of how to use and apply them when the time is right.
The fact remains that for many developers, the introduction of a PaaS provider or a move to leverage an IaaS play won't necessarily change the way they perform their day-to-day coding duties, but that doesn't mean they are insulated from the effects of the various technologies that are emerging in the cloud computing space. From the tools they use, to how they approach the design and development of complex enterprise solutions, the cloud is indeed changing the way applications are developed.