This is the first of three posts on DevOps outlining what I see as the main components, processes and benefits of DevOps, and specifically how and why we have been adopting DevOps at e-conomic. You can check out part II and part III here.
What is DevOps, and what are its main benefits?
As with concepts such as web 2.0 and Agile there are many views on what DevOps is. Our interpretation is that it is a set of processes, methods and tools that form a closed loop to measure software delivery all the way from inception to customer use.
Over the past 1-2 years, DevOps has become popular and has also become something we aspire to at e-conomic. Using DevOps inspired processes, methods and tools, we’ve been able to improve collaboration and interaction between our developer and operations teams, as well as our QA and deployment groups. This is of course primarily meant to benefit our customers who should experience improved product quality, a more reliable service and functionality that is more in tune with their needs.
Adopting the DevOps approach has also made a huge difference for us at e-conomic. We are now much better equipped to be on target with relevant functionality as we have the needed testing, deployment and recovery processes in place. It also means that we can keep our iterations shorter so that we’re able to divide new functionality into smaller tasks that we can complete and deploy allowing us to move on to other work.
On an individual level, the DevOps adoption has also brought about significant changes. Our developers are now much more involved in the entire process of developing features, testing them, delivering them to our customers and then monitoring how these features perform. This way, they get to accept responsibility and take credit for the value they bring to our customers. And in addition, they get a much better understanding of the role their work and code play for our product and our business.
Prerequisites & Components
Before going into details about what components are most essential to our DevOps setup, it’s important to stress, however, that DevOps is about more than methods and tools. It’s just as much about collaboration and communication across departments and about taking individual responsibility for the way your work interacts with your users and your company as a whole.
DevOps is mostly, but not exclusively, used by online service providers since DevOps can be used to address challenges that are integral to online as opposed to offline service, such as how to handle continuous deployments, how to maintain a reliable service with uninterrupted uptime etc.
A prerequisite for DevOps is the use of decent source and versioning control software such as Git along with the right branching structure. I won’t go further into versioning control software here, instead I suggest you read what one of our developers has to say about his thoughts and experiences on VCS and our shift from SVN to Git.
An important point about DevOps is that it is in many ways an extension of the Agile, scrum and lean frameworks. DevOps can be said to pick up where Agile left off by extending Agile from development only to all departments, i.e. development, deployment, operations, QA, etc. For operations, this agility means that they are better equipped to implement servers more quickly when the need arises, which then again leads to a better user experience.
Continuous integration is a central component of DevOps, as it involves frequently integrating local code changes into a central repository and then verifying them by automated builds. As part of implementing this process, a shift also needs to take place from the developer mentality of “It works on my machine” to “It works because the (integrated) build completes”, and ultimately, “It works because the customer is happy”.
We have also automated our deployments, which means that we have reduced the risk of errors occurring during deployment. Automated deployments also make it easier to deploy more frequently since we don’t need to think about whether we have the specialized developer resources in place to deploy. The developer work involved is reduced to a minimum and can be handled by most developers.
e-conomic developer with performance monitors top right
Finally, adopting DevOps has gone hand in hand with establishing a culture of measuring and monitoring, and of course taking action when the metrics don’t live up to our expectations. This means that production performance is not simply the concern of the operations team, but is in fact something everyone involved in the product needs to watch out for.
At e-conomic, we have screens, boards and monitors all over the company that show real-time metrics and KPIs – availability, response time, load, number of users, signups etc. This has played a big part in increasing the awareness of all stakeholders that they need to monitor and take action on what goes on in production.