Many Technology and IT organizations are looking to improve time to market and time to value by moving to not only agile development methodologies but also incorporating DevOps as a way to implement releases, new features, bug fixes and upgrades into production more quickly. Like agile development, DevOps requires tighter collaboration, communication and a strong working relationship across multiple teams. If an organization strives toward a continuous deployment / delivery capability it typically is using agile development to produce and DevOps to deploy.
So let’s describe the business results and characteristics of a successful DevOps collaboration:
- The business or operational need for the deployment is fulfilled quicker than before incorporating DevOps
- Existing services or applications functionality and performance were not negatively impaired during or post deployment
- Cycle times from Development to Production are dramatically reduced from months to weeks or even days or hours
- Satisfied with the incremental / iterative approach to deploy new capabilities.
Now let’s describe what Development considers as positive outcomes of a successful collaboration:
- Business stakeholders are happy with the ability to have changes incorporated quickly without problems
- Compliance to source code versioning, documentation
- Traceability of code changes to business requests / requirements
- Directionally, a reduction in the number of development platforms (though there might be an incremental bubble until other platforms are retired).
- Opportunity and ability to understand, influence and perhaps improve how Operations operates
Testing organizations will have:
- Increased the level and thoroughness of automated test suites
- Improved overall test case throughput per day
- Has incorporated self-service testing capability into the Development and perhaps the business and Operations organizations.
And of course, Operations, while always cautious with the velocity and volume of changes into production, would be delighted in these results:
- Services and Applications availability increases
- Higher change success rate into production
- Operational requirements are embraced and fulfilled by the Development teams
- They are no longer on the other side deploying blindly deploying code and configurations and taking the hit for outages and impairments
As described above, there are multiple stakeholders in a DevOps methodology, each with their sets of risks and rewards. And they each have responsibility and accountability to make DevOps work effectively to achieve the business benefit.
One should not implement DevOps blindly, but should at a figure out what will change, who needs to change and assess any gaps or assets. As with any operational transformations, DevOps enablers encompass the Operational pillars of People, Process, Tools/Technology, Strategy and Governance. A quick list of things to consider when thinking or executing toward DevOps and/or Continuous Delivery Operations are
Strategy
- Keep your eyes on the prize: What are you trying to accomplish?
- Enterprise Architecture and strategic platform implications
- Vendor implications, relationships and contracts
- Phasing (Pilot(s), 25%, 50% scope, 90% scope)
- Scope and timeline
Governance/Policy:
- Funding and budget and business case
- Stakeholder awareness and commitment
- Success Criteria and budget
- Risk Management
- Regulatory or Corporate Security Compliance issues
- Program / Project Management (or just do it?)
People
- Cultural, Leadership and/or Organizational changes and requirements
- Communications, Skills and Training – staff, vendors, contractors, outsourcers on goals, objectives, process changes, org changes and tools
- RACI – who is responsible, accountable, consulted or is informed when changes are put into production? Who pushes the button?
-
Team assignments and time allocation (or do you expect everyone to continue doing what they are currently doing and add DevOps on top?)
Process
- Development standards as well build and propagation processes
- Agile Development principles
- Code Revisioning and Versioning
- Change, Problem and Incident, and Configuration Management process changes
- Structured and unstructured Collaboration and Communication amongst business, development, test and operations teams
Tools / Technology
- Source Code Control Systems
- Code / Config Propagation Tools (push button deploy)
- Automated Testing
- Configuration Management and CMDB tools and updates
- http://devopscon.com/wordpress/presentation/a-devops-jungle-of-tools-infrastructure-vs-deployment-automation/
- https://www.scriptrock.com/blog/devops-tools-exist/
- (Google DevOps Tools for some fun reading)
Quickly on the people and the impact of DevOps. One cannot underestimate the confusion and/or skepticism when someone outside of the production team (or even the automation they themselves did not build and test themselves) makes production changes on the network, databases, servers and applications. Start small, anticipate rough spots, figure out solutions, then expand scope when the major kinks, whether technical or cultural are resolved. Be able to show results so the team gains confidence in the new way of doing things. But be transparent and gain their support in not rejecting DevOps but embracing it. You might have to consider role changes and job description revisions. Make sure your HR team is aligned as to what is being done and why so they can assist in the transformation.
If all of this is daunting, the intention is not to paralyze the effort before you even start. Just understand it is a journey and there are always multiple paths to get there. At the end of the day, DevOps may not fit your organization for a variety of reasons, but DevOps is a means to a business end which is to significantly reduce cycle time of development, testing and implementing business and technical change without sacrificing quality and availability. Identify your barriers and constraints using the Strategy, Governance, People, Process Technology/Tools framework and enable, not disable your business!
Already doing DevOps? Thinking about it? Chime in… also join the LinkedIn DevOps group…
