|
Although a relatively recent term, many of the principles have been around for a long time. This is similar to Agile methods – in some ways a repackaging of existing principles. Indeed Robert’s first article for this column, back in 2004, addressed some relevant aspects. Until it is released (in the hands of end-users), new developments are “inventory”, to use the lean software term – you have invested time, effort and resources in making changes, but no value is realised for the organisation until any development is actually released and being used by the end-users. So What is DevOps? Is it New? For those of us who do internal software tool development as part of their job (either from scratch, or to customize and configure), DevOps has always been a part of the reality that we have lived with day-in and day-out for at least a decade or two. Just as Agile Development calls for generalizing specialists across functions, we have had to do the same across the enterprise:
We've had to be process experts, application development experts, application deployment exports, tool support and administration experts, etc., for most all the business-activities and their processes surrounding those tools. Is it Elitist? It is Just a Fad? The underlying principles being espoused under the term DevOps have been around for a long time and successful organisations have been implementing them well for some time. The fact that they are wrapped up in a catchy title is good marketing Let’s look at some of the issues and principles involved. Global vs Local Optimizations Improving Communication This means improving global communication, and thus co-ordination. Make sure that new releases are not a surprise to operations – sprung at the last minute. As suggested in a previous column (CM as Communication and Coordination Enabler) some low tech approaches can have very good results. What are the Constraints for Dealing with Releases
By improving your communications you become aware of and deal with these issues. Reducing Risk Don’t Forget Testing and Environment Management I have been working with one client recently who recognise the problems they have in this area. Testing is a large bottleneck for them, and this is mainly due to poor deployment and environment management. It typically takes hours and sometimes days to get an environment into a situation in which they are actually able to test the new change reliably. With multiple testers being involved, conservative cost calculations showed 6 figure sums being wasted yearly. In this case we have started with an environment audit tool to be able to show what is in the current environment and how it differs from what is in production. It is then a relatively small step to being able to automatically deploy a new environment directly from their repository. Designing for Release Increasing Automation However, some companies are achieving multiple successful deployments of new functionality per day, e.g. John Allspaw’s presentation: "10+ Deploys Per Day: Dev and Ops Cooperation at Flickr". The key here is having the right mind set to seek out opportunities for automation and then to actually implement them – whether through acquiring tools, or by developing scripts or local tools. What About ITIL? There is nothing in ITIL which says this is the way it must be. Indeed, ITIL V3 takes a more holistic view of the whole lifecycle starting with service design. The concept of an application service then allows organisations to wrap up application development as part of the overall process – adding some useful checks and balances and improving communications and co-ordination. The Service Transition book covers the transition into production - but while looking at how to control it does not mean that it has to be slow or a burden - just well managed! By taking a DevOps mindset, we are not asking operations to give up control – we are working with them to improve the overall process, and typically achieve smoother and faster releases with much less friction. The underlying principles are still the same. How to Implement DevOps 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 – and 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
Commercial vendors include:
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 (not to say that the commercial tools are bad!). It is also important to realise 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. Summary 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 in enterprise application development & deployment, and in organizational and process change, We need to learn and become adept at not only 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 & processes we develop, deploy and support. The rise of DevOps has many things to commend it – and many organisations 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. So don’t oversell it within your organisation, but instead use it as part of your arsenal for improving your process and making your own job more satisfying and effective. Resources and Further Reading
About the Authors Brad Appleton is an enterprise SCM solution architect for a Fortune 100 technology company. Currently he helps projects and teams adopt and apply agile development & SCM practices. Brad also author's the Agile CM Environments blog, and is co-author of Software Configuration Management Patterns: Effective Teamwork, Practical Integration, the "Agile SCM" column in CMCrossroads.com's CM Journal, is a regular contributor to "The Agile Journal", and is a former section editor for The C++ Report. Since 1987, Brad has extensive experience using, developing, and supporting SCM environments for teams of all shapes and sizes. He holds an M.S. in Software Engineering and a B.S. in Computer Science and Mathematics. You can reach Brad by email at brad@bradapp.net
Robert Cowham has been in software development for over 20 years in roles ranging from programming to project management. He continues his involvement in development projects but spends most of his time on SCM Consultancy and Training for VIZIM Worldwide. He is the Chair of the Configuration Management Specialist Group of the British Computer Society, has a BSc inComputer Science from Edinburgh University and is a Chartered Engineer (CEngMBCS CITP). You can reach him by email at robert@vizim.com
Set as favorite
Bookmark
Email this
Hits: 1738 Trackback(0)Comments (1)
|
|
... Thanks for this article. This is one of the more coherent explanations of DevOps and where it fits that I've seen. In your title, you allude to Agile, which I think is actually a pretty key driver. To a large degree, it has been the role of Agile (and lean) that's driven the rapid rate of releases that has put stress on the IT / Ops side of the house to release faster. A painful, manual process works fine if you release once or twice a year. It works less well as the release rate increases. At Urbancode, we've been convinced of the benefits of co-operation between the development, test and release teams for quite a while, and built AnthillPro to facilitate automation from software build through production release. Deployments to the early test environments should facilitate good testing and rapid feedback, but they should also be a test of the deployment process itself to reduce deployment risk. Prior to the term "DevOps" catching on, we called this end to end cooperation "Enterprise Continuous Integration" as it took the automation principals common in Dev and applied them across the enterprise into test and operations. Our cheat sheet to review your ECI / DevOps maturity is up on the website: http://www.anthillpro.com/html...se-ci.html as is a matching white paper. |
|




This month we would like to address briefly the term DevOps which is steadily gaining traction and currency, particularly in the world of web apps. We want to give an introduction and some pointers to resources and further reading.

