How to Implement DevOps
If you want to implement this, how do you go about it? Can you hire a DevOp and expect all your problems to go away? The key starting point has to be around communication, ensuring that your development and operations departments are working together closely on a daily basis.
Look at what is causing deployment problems and releases to fail. Ensure that deployment considerations are factored in very early in the development cycle. Look at automation possibilities. Make sure you have a well-managed common set of tools including your source repository.
Consider the throughput rate you are achieving: the rate at which changes are actually being deployed. Also, how long on average that is. Measure inventory, work-in-progress that has not been deployed, and seek to reduce it.
If your software architecture makes frequent deployment difficult, then seek to change it as a high priority (treat this as a major code smell) or item of technical debt. This can be a major issue with legacy code and tools, and may take significant time to fix
Vendors and Tools
There are a number of companies and also open source communities that provide tools and methods:
- Puppet labs puppet
- Opscode’s chef, open source recipes
- Commercial vendors include XebiaLabs and Nolio (also included as part of Serena’s offering)
One of the advantages of the open source offerings is the way it encourages thinking and sharing within the wider community. People can get actively involved and engaged which is a major benefit for all. This is not to say that the commercial tools are bad, however.
It is also important to realize that a tool will not solve the problems, or necessarily make a huge difference by itself. It is the mindset and practices around the use of that tool that make the most difference.
This has been, perhaps, a whistle stop tour of some of the issues involved. Many points have just briefly been touched upon above.
DevOps takes the agile notion of cross-functional self-organizing teams of generalizing specialists across disciplines and lifecycles and applies that directly to the IT and process architecture of the enterprise itself, forcing those of us who are CM/ALM professionals be experts in not only the processes and tools/technology, but also in enterprise application development, deployment and in organizational and process change,
We need to learn and become adept not only at applying CM/ALM to agile projects, but also at applying lean/agile principles and techniques to CM & ALM. That includes figuring out what it means to apply TDD, refactoring and continuous integration, or identification of smells and technical debt for processes and documentation (and even organizations) as well as to the development and deployment of the tools and processes we develop, deploy and support.
The rise of DevOps has many things to commend it. Many organizations would do well to take the ideas on board. It isn’t just a fad and it is here to stay. Like most things it is not a magic bullet, but if you embrace the key ideas in a pragmatic and sensible manner, you will get real value from them.
Don’t oversell it within your organization, but instead use it as part of your arsenal for improving your process and making your own job more satisfying and effective.