This isn't only a data-center-dude issue, though many developers are used to thinking that way. Where will your application reside on the network? Custom apps require custom support and diligence, Fusco says, hence too much of a special sauce in a cloud environment may contribute to SLA issues. "It's not only about knowing how and what to program," she says, "but also understanding basic business requirements and cloud service provider support contracts and SLAs. You need to gain a bit more insight about the business and the cloud tenant environment."
The Key Word is Service
A "regular" web developer may be able to ignore Web services to some degree, but cloud computing development will make you far more familiar with these concepts.
"It's not only about knowing how and what to program, but also understanding basic business requirements and cloud service provider support contracts and SLAs. You need to gain a bit more insight about the business and the cloud tenant environment."
This is one area in which enterprise developers may have an advantage over their start-up colleagues. According to LaFleur, "Developers with a solid understanding of [service oriented architecture] will fare much better in the cloud. Breaking up your monolithic application into discrete services does more than just facilitate reuse (the typical drum beat by the SOA proponents). A good SOA implementation will allow you to leverage the scalability of the cloud."
"The biggest difference between a web application and any enterprise application (including in the cloud) is the strict separation of the business logic layer and the web services layer," says Java enterprise architect Alexander Katrompas. "A typical web application is more concerned with delivering content while an enterprise application is concerned with processing and persistence." Moving from enterprise to cloud requires an understanding of widely distributed computing and load balancing, he says, and requires a strict enterprise architecture. "While most people consider cloud computing a 'revolution,' that is just marketing hype. Cloud computing is an evolution of the enterprise model which itself is an extension of the web application model," Katrompas adds.
Ultimately, says LaFleur, "Cloud development by itself isn't any different than traditional development. What it is, however, is less tolerant of poor development practices." For years, developers have been told to pay attention to things like scalability and security. "The reality is that most developers have relied on improving hardware and security through obscurity. Cloud computing exposes these bad practices for what they are," he says.
What differences have you found in writing software to run in the cloud? Share your experiences in the comments.