You could treat your cloud like a data center full of servers with system administrators cracking the whip over them. But that would be wrong.
It would also technically and financially foolish.
To get the most from your cloud, you need to get not just your administrators, a.k.a. operators, thinking in different ways, but your developers as well. With clouds, they must learn to — oh, the horror! — learn to work together. Hence, DevOps, the portmanteau of development and operations.
And why do we need to do that?
It's simple. As DevOps expert Damon Edwards explains, "DevOps is a response to the growing awareness that there is a disconnect between what is traditionally considered development activity and what is traditionally considered operations activity."
Sure, historically operations has always valued stability, while programmers have always wanted the newest and best toys. As Edwards writes, "Development-centric folks tend to come from a mindset where change is the thing that they are paid to accomplish. The business depends on them to respond to changing needs. Because of this relationship, they are often incentivized to create as much change as possible."
On the flip side, "Operations folks tend to come from a mindset where change is the enemy. The business depends on them to keep the lights on and deliver the services that make the business money today. Operations is motivated to resist change as it undermines stability and reliability. How many times have we heard the statistic that 80% of all downtime is due to those self-inflicted wounds known as changes?"
That was then. This is now.
James Urquhart, a cloud expert, points out that, "First, server virtualization -- followed by storage and network virtualization -- introduced us to the idea that physical systems operations can be decoupled from the digital elements that they host. Operating systems no longer have to be shackled to physical servers. File systems no longer have to be locked down on specific spindles. Connections between servers are no longer statically assigned to specific physical switch ports."
It was one thing when servers needed constant hands-on attention to keep them running. Today, everything, especially on the cloud, is virtualized.
Sure. We'll never really get to NoOps, when we don't need anyone pulling dead servers from racks, but at the same time we need people who can both manage and develop on clouds.
Some people will always be better at administrating than programming, and vice versa. To make the most of the cloud, though, where's it's all virtual all the time, we need operators who can work with developers and programmers who get along with administrators. If those qualities happen to be in one person, that's great. But it's the ability to cross the decades-old gap between development and operations that's vital.
By using Agile techniques, which at heart are about working and talking together to achieve common goals, with DevOps - and its cloud management programs such as Chef, Juju, and Puppet - you can make the most of your cloud. If you don't - well, don't be surprised if your cloud projects go slowly, go over-budget, and never live up to their promise.