How to Successfully Develop and Deploy DevOps

[article]

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.

About the author

Bob  Aiello's picture Bob Aiello

Technical Editor of CM Crossroads and author of Configuration Management Best Practices: Practical Methods that Work in the Real World, Bob Aiello is a consultant and software engineer specializing in software process improvement, including software configuration and release management. He has more than twenty-five years of experience as a technical manager at top New York City financial services firms, where he held company-wide responsibility for configuration management. He is vice chair of the IEEE 828 Standards Working Group on CM Planning and a member of the IEEE Software and Systems Engineering Standards Committee (S2ESC) Management Board. Contact Bob at Bob.Aiello@ieee.org, via Linkedin linkedin.com/in/BobAiello, or visit cmbestpractices.com.

AgileConnection is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, TechWell.com is the place to go for what is happening in software development and delivery.  Join the conversation now!

Upcoming Events

Sep 22
Sep 24
Oct 12
Nov 09