This is the first post in a series to help your engineering team transition into a DevOps model. We’ll start with the whys and get to the hows in future posts. Stay tuned.
DevOps is a software development approach that focuses on the collaboration between developers and operations, where developers are empowered to own their code from cradle to grave and operations develops tools for automation to be used by their devs. Using a DevOps model you will share a common goal to quickly deliver quality products and services through more frequent deployment and collaboration.
Most of us have spent time working in an office with so much red tape it can take a month just to get a new stapler or to replace a broken keyboard. Nobody likes these unnecessary and seemingly countless levels of approval. Especially for small updates, such a homepage sign-up button or a quick bug fix to solve a customer’s frustration.
In response to these blockers, we go in to our offices, sit at our desks and only commit to a small piece of the puzzle. We just can’t get things done, so why bother? But we want to do more. We want to feel valuable and know that we can contribute more to make things better. For engineers, these roadblocks can impact workflows, stunt creativity and hurt their product.
Forming a DevOps culture in our companies will help us eliminate many of these roadblocks. The DevOps model is a software development ideology that encourages developers and operations engineers to work together in order to make products better and faster through more frequent deployment and automation.
Instead of drowning in your waterfall model, linearly moving from one step to the next, adopting a DevOps culture will help create a collaborative environment where work is distributed between ops and devs. This allows ops engineers to develop systems that will enable devs to deploy their own code and deploy their code frequently.
DevOps Teams are Holistic
In a properly constructed culture, both software developers and ops engineers have their roles intertwined. Instead of tossing problems over the wall with little regard for the people on the other side, they align their teams rather than work against each other.
While most of us have our core disciplines we specialize in, our professional environments should be conducive to learning and using other skills, even if they aren’t listed on our resume. With more fluidity in our roles we can get more done because we will feel more empowered to do so.
Eventually, this blending of roles will lead to organic collaboration and socializing among teams. This will keep your team flat and goals aligned, aiding in a culture that emphasizes line level communication between teams so code can be deployed more frequently and reliably.
Because everyone is taking ownership of their own work from cradle to grave they hold themselves accountable for any issues that may arise instead of pointing fingers. For example, a developer deploying a new feature will own the reliability of that feature and not simply toss responsibility to the operations team.
Did We Mention More Frequent Deploys?
Let’s drive down on this point a bit more. Faster, more frequent deploys are better for your business. In a DevOps organizational model you will be moving much smaller blocks with each deploy. This means there is less risk, the chances of something going wrong in these smaller blocks is exponentially less likely than moving multiple, larger blocks at once. Should something break, you are only rolling back a small piece instead of months worth of work to identify the problem.
Since you can deploy more frequently you can roll out code in smaller chunks so there is less risk with each deployment. If something does go awry you can roll back a small piece of code without having to go through and QA months worth of work.
Within a DevOps model each change to your environment is easier to monitor so you can measure key metrics then improve your system based on data. With proper automation, such as continuous integration, your development environments will finally keep up with your production environments allowing you to confidently test new code without your customers experiences hiccups in your service. This will make your code’s behavior significantly more predictable for your customers. As a result they will be able to seamlessly enjoy a new feature in your product.
Define Your Culture
In the end, your culture is unique to your team and business (and it should be). We’ll help you to identify the steps you need to take to start creating your own collaborative environment, but its outcome will be something none of us can predict.
Keep reading, over the next several weeks, we’ll dive deeper into how you can introduce a DevOps organizational model into your company’s culture.
Update 4/10/14 – Continuing reading the transitioning to DevOps series: