How to Successfully Develop and Deploy DevOps


In his Behaviorally Speaking series, Bob Aiello discusses hands-on software configuration management best practices within the context of organizational and group behavior.

Developers need to be trained to successfully use version control tools that secure the source code and reliably create milestones, including version labels or tags. DevOps also needs to focus on the seminal competency of excellent source code management. In other words, every function of DevOps depends upon effective source code management for success. Once your code is under version control, you should then work on an automated application build in which each configuration item is embedding a unique and immutable version ID. Release packages are created with embedded manifests containing a complete list of every included configuration item, whether it is a derived binary, text-based configuration file, or a Word document containing essential release notes. Good release management means that you can identify all of the code that is about to be deployed and also provide a procedure (known as a physical configuration audit) to verify that the correct code was, in fact, deployed. It is equally essential to provide a mechanism to ensure that unauthorized individuals have not modified a release package. Testing is also fundamental.

Deming noted that you should build in quality from the beginning. Effective DevOps embraces QA and testing best practices. This is true both for the application itself and also for the automated DevOps procedures that are being developed as part of this effort. In other words, as a DevOps engineer you write code to automate every function and you need to regard this work as a project too. In effect, we need to practice the procedures that we recommend for others as part of our own internal DevOps procedures development effort. This is also a paradigm shift. Developing DevOps is its own agile development effort and should be treated with the same rigor as any other project with the goal of having a fully automated application deployment effort.

The focus on developing these procedures from the beginning of the lifecycle and taking an agile iterative approach as they are developed are what make these practices “DevOps.” There is also an essential effort to share knowledge equally between development, QA, and operations. Development often knows the technology best, but operations understands the real-world challenges that will result in developers being roused from their slumber in the middle of the night. QA helps by developing the procedures to ensure that bugs are not found a second time in any release. DevOps is all about the synergy of productivity and quality with the real-world focus on sharing knowledge and building competencies.

User Comments

Clifford Berg's picture

Well explained Bob. I agree with every single point.

I would like to add that organizations should try to keep their devops processes simple. If you create a framework, that does not make the developer's job easier, because they have to learn the framework, and that means you need to be around to explain it. Stay with vanilla tools that people can Google. And keep the list of tools short: there are too many tools out there and it creates too much for developers to learn when they should be focusing on their application.


December 29, 2014 - 11:41am
Bob Aiello's picture

Simplicity is indeed an art form in a an arena where complexity may be unavoidable.

Good points Cliff!

December 29, 2014 - 11:55am

About the author

AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.