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."
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).