The Weakest Link in Your Chain
There is an old saying that a chain is only as strong as its weakest link. DevOps helps establish a reliable and secure pipeline to automate application and systems software deployments. DevOps also has an amazing way of very quickly discovering exactly which link in the deployment chain needs to be fixed or replaced.
Sometimes this is a distinctly technical challenge where deployment automation tools such as Puppet or Chef just need to be successfully implemented and supported. Other times, the root cause of deployment problems can be far more subtle.
Successfully deploying mission-critical software systems usually requires a considerable amount of complex technical work. For example, there are often database changes to be kept in sync with application code, and networking changes that must be coordinated with server configurations.
I have worked with many truly talented technology professionals who could handle the technical configurations like a pro but who also often got tripped up by poor communication skills and a lack of overall release coordination. Delivery dates might be understood at a high level, but stakeholders frequently do not fully grasp the complex dependencies that are required for a successful deployment. Too often, silos and organizational culture adversely impact the team, resulting in roadblocks to effective communication and collaboration. One commonplace issue is the failure to view deliverables from a complete systems perspective.
DevOps forms cross-functional teams that are responsible for all aspects of the software delivery and deployment process. This approach addresses the often dysfunctional behaviors we see where siloed organizational structures impede effective communication and collaboration. Quality must be built into the system from the very beginning of the software process.
Too often, poorly defined requirements and test cases adversely impact quality. Some developers struggle with using source code management tools effectively, which results in a lack of application baselines required for the build process, or even defects due to mismanaging code merges needed for parallel development. Other teams get challenged by their build tools such as Ant, Maven, or Make. Some teams struggle with monitoring and managing the environment dependencies, while others lack an effective change control process to recognize and manage technical risk. I have had technology professionals tell me their biggest challenge is getting a budget for buying the tools they need to get their job done.
Perhaps the most common challenge is failing to include all the stakeholders. Technology professionals often forget to include the product management team and the business representatives to help set priorities and understand business goals and objectives. If a chain is only as strong as its weakest link, then a software development lifecycle is only as efficient as each of the tasks required for its successful completion.
DevOps teaches us to take a broad systems view. We also need to take a comprehensive view of the software and systems lifecycle. The effective application lifecycle provides structure, transparency, and traceability so that everyone understands exactly what needs to be accomplished on a daily basis.