While there is still much debate about the future of DevOps as an industry standard, market demand for DevOps skills is growing, DevOps engineers are among the highest sought-after IT practitioners today, and organizations are embracing DevOps as their work methodology.
In this article we are sharing from our own experience with DevOps transition, opportunities, challenges and customer expectations.
But what is DevOps?
DevOps is already an overloaded buzzword which means a lot of different things to a lot of people, but most definitions go back to breaking DevOps into the two words which have been put together to coin the term: development and operations.
Traditional software development would require the developers to write the code and the operations team would be responsible for deploying into the production servers, doing all the necessary setup and then making sure that the production environment is functioning properly 24/7. Depending on the release lifecycle, the deployment would be done once a month or week and various features would be combined all at once and deployed into production based on the development schedule.
All of us software developers have been there but there were a few problems with this method.
As the business of the client would grow and require the setup of a larger number of servers, the Operations team was under increased pressure to continuously monitor and maintain the production environment. The clients’ changing requirements called for our developers to write code for new features on a daily basis, and this further called for a need to have continuous integration.
The new code would then have to be deployed continuously into production. The operations team would be skeptical of this because they need to make sure that the new code being added must not break the existing system. So they wanted it to be thoroughly tested.
Since the code was written in development environment and deployed in production, there would invariably be a situation where the new code would cause issues in the production. So it was necessary to write code in an environment which was identical to production while also avoiding any delay in the deployment of new features for the client.
So how do we fix all these issues?
Well, this is where DevOps comes to the rescue. DevOps brings together the developers and the operations team to work together to improve the performance and the agility of the system by using automation tools to continuously integrate, test and deploy application and measure the performance.
DevOps is a cultural shift in the way software is being developed and hence it requires a lot of trust between the development and the operations teams. On top of that there are automation tools required to write and test code continuously, tools to track changes to the code, configuration management tools to allow automatic deployment and finally automation tools to measure system performance.
How has DevOps helped us?
DevOps is the practice of operations and development engineers participating together in the entire service lifecycle, from design through the development process to production support. Our goal in DevOps is to deliver software updates frequently, reliably and with better quality, and we achieved this through:
- Minimization of differences between development and production environments
- Development and testing against production-like systems
- Faster deployments
- Reduced time to delivery
- Reduced upgrade/rollbacks downtime
- Iterative and frequent deployments using repeatable and reliable processes
What does it all mean for the client?
In one word: speed. New products and features can be released much faster. New environments can be brought up in no time and the system can run seamlessly 24/7 which means less downtime.
What are some of the challenges associated with the DevOps culture?
From a developer’s perspective, additional layer of code is required to automatically deploy, verify and keep track of the system. Manual testing does not really fit in DevOps and Continuous Integration/Continuous Delivery pipelines, which means QA engineers need to be able to automate testing tasks.
However, as with any new technology or methodology, know-how, requirements and expectations need to be aligned. DevOps has been creating a lot of buzz lately and will continue to do so, while it brings a lot of opportunities for both software development companies and their clients with the goal to be reliable and agile.
Author: Paul Apetri – Senior QA Engineer