One theme that came up repeatedly in my research for an article about what's different about programming for cloud computing is that developers should expect to learn more about cloud computing platforms, virtualization, infrastructure operating environment, and other knowledge traditionally left to network specialists. A lot more. In fact, it may be spawning a new category of developer.
Says Standing Cloud CEO David J. Jilk, "Ultimately, developing in the cloud may require 'devops,' either including sysadmins in the development process to design the infrastructure, or for developers to learn these system deployment and management skills."
"The lines between developers, deployers, and IT people is blurred, and roles and knowledge are shared between all roles"
Guy Naor, Morphlabs
That isn't an idle matter of curiosity or yet another label to slap onto a resume. "A cloud developer needs to understand the operating environment (operating system, virtualization, monitoring), as well as the development environment," explains Guy Naor, CTO of Morphlabs, a cloud computing platform provider. "Only by breaking down how an application is deployed, managed, and scaled is a cloud developer able to develop applications in the cloud."
"Developers can't overlook how their production environments will be supported on the cloud platform, as they may find themselves supporting the production environment without the help of a system administration team," says Chip Childers, chief architect of SunGard Availability Services' Enterprise Cloud Infrastructure Services. "While cloud offerings provide easy access to infrastructure services, they often require customers to maintain everything inside the environment."
Traditional web developers' scope is limited to the development environment, which can be complex enough, thankyouverymuch. Many developers don't bother with issues of uptime or other such infrastructure matters; they leave that to the data center geeks. But, says Naor, a cloud developer must have an understanding of the replacement of application servers, database failover, changing routing on the fly, and more. "A good way to characterize the expansion of knowledge required today by cloud developers is embodied in the DevOps movement, in which the lines between developers, deployers, and IT people is blurred, and roles and knowledge are shared between all roles," he says.
These sysadmin coders intend to be bridge builders, "attempting to encourage the development of communication skills, understanding of the domain in which the software is being written, and, crucially, a sensitivity and passion for the underlying business, and for ensuring it succeeds," writes Stephen Nelson-Smith, a Technical Manager and Devop at Atalanta Systems, in a blog post.
This is especially relevant for cloud computing, though applicable elsewhere. "The biggest changes for developers when moving from traditional deployment models into a cloud infrastructure are around how to best take advantage of the dynamic nature of cloud infrastructure platforms," says Childers. Cloud developers need to ensure they are thinking through the deployment, configuration, management, and resiliency of their applications. "The core software they develop will be largely the same as traditional deployments, but applications designed to run well in the cloud require a renewed focus on the manageability of the overall system," Childers says.