DevOps is a software development model that combines development and operations together stressing communication, integration, automation, collaboration, and cooperation. By aligning the IT operations, they aim to rapidly develop software for the business and improve performance. Some of the goals of DevOps are more frequent deployments, faster time to market, higher quality deliverables, and shorter lead times. The word DevOps itself was coined in 2009 by Patrick Debois, who has become one of its leaders. The term was formed by combining “development” and “operations,” which provides a starting point for understanding exactly what people mean when they say “DevOps.”
Culture is important
The success of your DevOps implementation requires a corporate culture that embraces the mindset that can foster this change. It must be found in all departments of a company, not just in one area. Everyone must contribute to solving problems and take ownership of the companies success. “One of the key elements of making DevOps successful, is actually making sure that it is part of an organizational plan. Organizations that want to be successful with DevOps typically transition away from managing tasks to managing boundaries cross-functionally.” This from Kevin Behr, Chief Science Officer at Praxis Flow in the DevOps Mindset. Flexibility is a key component of a culture that embraces the DevOps Mindset. Rigid rules and processes will stand in the way of innovative new ideas taking hold.
DevOps is implemented in many different ways, but there are some foundational components that most companies embrace. Let’s review these and explain how they are used in a DevOps context. These are from the eBook Navigating DevOps: Learn what it is and Why it matters to your Business.
As we mentioned earlier when talking about the culture that DevOps works well in, collaboration must extend outside of the DevOps team and into all areas of the organization. Everyone is responsible for the delivery of the product, this total ownership is critical to DevOps success.
Automated portions of the delivery chain help the team reduce cycle time. The DevOps team is constantly trying to automate by embracing tools that allow for this to happen. The tools need to support the process, not the other way around.
People in technical roles can’t let this happen. It can be a great exercise to review the process and remove the technology from the equation and ask “Is this the best process?”
The software process of continuous integration has been around for many years since Grady Booch proposed this. It is a staple in the Extreme Programming (XP) world as well. DevOps also embraces this as a foundational practice.
The goal of Continuous Integration (CI) is to isolate changes and test them immediately. Therefore, we can report any bugs or issues right away as opposed to later in the process of normal development.
DevOps makes continuous testing critical to meeting deployment goals. This is not just the responsibility of the Quality Assurance department but of the whole company. As new features are coded unit tests should be developed. Once the code is checked in there should be additional integration testing. The data used to test the changes should be as close to production data as possible.
One important aspect of the testing and changes is in DevOps you want to make small changes test them and rollback changes if necessary. Load testing should also be automated to determine if a small change has an impact on performance in a large system.
Once you have continuous integration with continuous testing, the next level is continuous delivery. Automation of the complete delivery cycle from development to production deployment. Release rates vary amongst companies desire for change as well as the size of release. Some internet companies such as Amazon and Flickr have multiple releases per day, where other companies have a slower pace.
With many moving pieces in flight at all times, the operations systems need to be monitored at all times. Similar to testing the monitoring also starts in development to get a quick understanding of changes as they are introduced. In a DevOps environment, we need to monitor the server performance as well as the application performance to clearly see issues in real-time.
Who is using DevOps
According to the 2014 State of DevOps Survey from PuppetLabs, Thoughtworks, and IT Revolution Press 16% of IT departments are using DevOps. It is primarily found in smaller companies with under 500 employees. The study concludes that DevOps will increase IT performance.