You can treat your cloud just like it was a data center full of servers with system administrators cracking the whip over them, but that misses the point of how to get the most from your cloud with DevOps.
The real secret of clouds is that they enable developers and system administrators (operators) to work together, hence DevOps: The portmanteau of development and operations.
By automating server operations, both programmers and administrators can focus on making the most from their hardware’s raw computing power. This is done using DevOps programs such as Chef and Puppet, or by leveraging earlier technologies such as version control systems like Git, to start automating system administration.
The credit for coming up with this idea goes to Patrick Debois, an IT consultant who came up with the idea of bridging the gap between projects and operations by using Agile programming techniques.
The point of all this, as DevOps expert Damon Edwards explained, is that “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.”
That’s because, Edwards explained, “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.”
At the same time, “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?”
Now this notion annoys the heck out of some programmers. Jeff Knupp, a noted Python programmer, for example, claims that DevOps is killing developers and encouraging a work environment where everyone is encourage to become a Jack of all trades and a master of none.
There may be something to his stance in some companies, but when it comes to the cloud, DevOps isn’t about forcing developers into becoming “technology utility players,” it’s about letting the technology carry the burden of server grunt work.
As James Urquhart, a cloud expert, has pointed out, “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 in the cloud, is virtualized.
No, we’ll never really get to NoOps. We’ll always need someone to go around pulling dead servers from racks. At the same time, in the 21st century cloud, we need people who can both manage and develop in clouds. In short, we need people who are adept at DevOps.
True, 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 now a rare, valuable skill.
By using Agile techniques, which at heart is about working and talking together to achieve common goals, DevOps can help you make the most of your cloud. If you don’t use DevOps techniques as well as programs, don’t be surprised if your cloud projects go slowly, go over-budget, and never live up to their promise.