What DevOps is and how to implement it in your company.
Definition of DevOps
DevOps is an amalgamation of the words ‘dev’ and ‘ops’, but what do these mean?
Thus, DevOps is the practice of operations and development engineers participating together in the entire service life cycle, from design through the development process to production and support.
What about Agile?
- Agile addresses communication gaps between internal and external customers and developers
- DevOps addresses gaps between developers and IT operations
- Note that although DevOps is shown below as between Devs and Operations only, Agile is a key enabler of DevOps as the customer and development team must fully integrated using agile before value can be drawn from bringing together the development and operations teams
DevOps is a matter of survival in the Digital Age. The ability to roll out business capabilities continuously will be the difference between companies that can evolve and ones that stagnate.
Benefits
- Up to 90% reduction in Provision and Deployment Time
- 15 - 25% overall IT Cost Reduction
- 50 - 70% reduction in Change Failure Rate
Four steps to successfully implementing DevOps
- Deploy iteratively
There are different stages to transformation a project to become DevOps: Continuous Integration, Continuous Delivery, Continuous Deployment and finally, full DevOps
Continuous Integration - Requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.
Continuous Delivery - Produce software in short cycles, ensuring that the software can be reliably released at any time and, when releasing the software, doing so manually
Continuous Deployment - Code commit that passes the automated testing phase is automatically released into the production environment, making changes that are visible to the software's users.
Full DevOps - The previous steps require improvements in technology, whereas 'full DevOps' requires a change in the team structure, as outlined in the next step.
2. Identify the initial team
"People are the main ingredient in a successful DevOps initiative. When selecting members of the initial team, emphasize behaviour over skills." - Gartner
There are six key roles in a DevOps team and it is the establishment of these roles that sets apart 'full DevOps' from Continuous Deployment.
3. Establish objectives and metrics
DevOps team members must realize that they all have the same objective, metrics and incentives to encourage teamwork toward business goals.
- Because people are the most important part of a DevOps initiative, understanding and implementing the right motivators is critical.
- In many traditional organizations, objectives are set departmentally and IT metrics are in place to solve problems and reward the person who solves them.
- In a DevOps initiative, objectives must be at the team level and aligned to the business objective given to the team.
- DevOps team members must realize that they all have the same objective, and metrics and incentives must encourage teamwork toward business goals as opposed to metrics that reinforce risk aversion and individual problem solving.
4. Develop the use and integration of new tools
Integrated tools (creating a 'toolchain') enable automation of testing and deployment. Two popular tools to include in your toolchain are:
Jenkins
Jenkins helps to automate the non-human part of the software development (build and testing) process, with continuous integration and facilitating technical aspects of continuous delivery.
Docker
Docker is a software platform designed to make it easier to create, deploy, and run applications by using containers. It allows developers to package up an application with all the parts it needs in a container, and then ship it out as one package.
Others
DevOps tools can be categorized in five groups depending on their purpose in the particular stage of DevOps lifecycle:
1. Continuous Integration: Jenkins, Travis, TeamCity
2. Configuration Management: Puppet, Chef, Ansible, CFengine
3. Continuous Inspection: Sonarqube, HP Fortify, Coverity
4. Containerization: Vagrant, Docker
5. Virtualization: Amazon EC2, VMWare, Microsoft Hyper-V
Conclusion
A DevOps team is responsible for both developing and maintaining their code. This shift in responsibility encourages them to create quality code first time. Without DevOps, applications are 'thrown over the wall' by development teams to their 'friends' in operations. In an increasingly technology based world, it is vital that the code companies build is cared for end to end.
The four steps to successfully implementing DevOps outlined in this article is a solid high level approach. However, each DevOps implementation is completely unique, please do reach out to me to find out more detail about how to successfully implement a DevOps transformation in your company. Fifth9 have hands on experience in both Agile and DevOps transformations and our lessons learnt save our clients massive amounts of time and money.
Digital Transformation | SaaS | Cloud, DevOps, AI/ML
5 年In my experience, team structure (cross functional) plays a key role in successful implementation. Specifically in large organizations, where roles are laid out from years, those too require changes as those roles are directly related to processes (approvals etc.), as these processes would be required to change to achieve agility. https://www.dhirubhai.net/pulse/why-horizontal-teams-facilitate-devops-sanjeev-malhotra/ https://www.dhirubhai.net/pulse/separate-devops-team-bad-idea-sanjeev-malhotra/
Quality Engineering Lead
5 年It's really a great stuff #Thomas Hulse.
Consultant
5 年Very well written and accurate. Nice work and a great resource for anyone to better understand DevOps (and how to actually go about it).?
Creative Lead / Digital Communication Officer
5 年Thanks Thomas, very insightful?
Acquisition Marketing at American Express
5 年Thanks for sharing Tom!