Programming for Cloud Computing: What's Different

Web developers who want to (or must) embrace cloud computing need to learn more than a few new tools. Experts explain the skills you need to hone.

Page 4 of 5

This has implications about the tools and languages you choose (as in the first point about learning new tools). "It's much easier to scale with stateless functions via programming languages like Perl, Python, and JavaScript," says Pavley. But other developers, who are committed to Java or open source or Microsoft development environments, explained to me at length why their choice is best. My conclusion is that you likely can use whichever environment you prefer, though the version 1.0-ish nature of some cloud development tools may generate limitations.

Design for a Dynamic Infrastructure

For many web developers, anything to do with servers is left to the operations department. Yet, as you move into the cloud, expect to learn more about sysadmin issues than you ever did before. There's even a new term for data-center-conscious programmers: dev-op. (See The New Type of Programmer: Dev-Op.)

"In the case of Amazon EC2, you'll be charged based on bandwidth, memory, and CPU, so a developer needs to build applications with these factors in mind."

Alpesh Patel, Ektron

One way in which the infrastructure informs your software design and coding is how cloud platform vendors get paid. Points out Chip Childers, chief architect of SunGard Availability Services' Enterprise Cloud Infrastructure Services, "Each piece of infrastructure you use in cloud computing is something you are charged for."

To keep costs down, says Childers, "Developers should sharpen their skills in 'less is more' development, in areas such as reducing memory and CPU consumption. Profile your application performance, check for resource leaks, and build a model for how many users you can support at each server instance size."

This applies to most cloud platforms. Ektron's Patel says, "In the case of Amazon EC2, you'll be charged based on bandwidth, memory, and CPU, so a developer needs to build applications with these factors in mind." Similarly, Microsoft Windows Azure charges based on compute instances and resource usage. "These are measured; and if they detect an application consuming extensive resources the application will be put into an isolation mode," Patel explains. "We did extensive testing on memory and CPU usage to avoid isolation mode and unnecessary charges."

According to Huckaby, novice cloud developers also struggle with the idea of data consistency. "When you start having multiple application servers and cloud instances that can spin up and down based on load, you have to assure the application can send and retrieve data properly," he says. "You don't want application instances deprived of data or losing data when they close."

Some of these activities are technical and design oriented, but serious cloud computing also requires developers to give more attention to process, procedure, and policies. Solutionary's Vice President of Industry Solutions, Pamela Fusco, is also the founding member of the Cloud Security Alliance. She advises developers to identify the level of application criticality (critical, high, medium, or low) to ensure the cloud service providers meet the required service level agreements (SLAs).

| 1 2 3 4 5 Page 4
ITWorld DealPost: The best in tech deals and discounts.
Shop Tech Products at Amazon