Devops is the new discipline that allows you to develop and run software faster and better. Traditionally Business and IT in the enterprise have always had this love – hate relationship. In a world where digitization is becoming more and more relevant, they rely on each other for their individual successes. Having said that, often times their priorities can differ and that can be a source of unending friction.
Business wants IT to deliver things quickly. They want to make changes to the existing system overnight and have people using the new features in the morning. They want IT to be reacting too slow for anything they would like to get done. IT has different priorities and constraints. It needs to ensure that all the right processes are being followed for development, testing and deployment. It needs to ensure that the best practices and technologies identified by it are being used for the new initiative. All of this takes a lot of time, effort and money that business is generally not appreciative of.
While it is not a panacea that can resolve all problems, DevOps is an emerging practice that comes close to it. Its helping create the much needed agility in the software development process and also helping in improving quality of the end product. Traditionally software is developed in three stages.
Once the requirements for a project are complete, the software architect designs how software needs to be built, and developers build the software. Once the software is complete, and assured of reasonable quality it is sent to the testing team to ensure that it is defect free.
Once the software has been built, the QA team performs a series of manoeuvres to ensure that the it is ready for being deployed for access to the users. It its not found suitable, it is sent back to the developers to fix the defects.
Once the testing team has certified that the product is ready to be released directly to users, the production team is responsible for deploying the software on various machines so that the users can access it. It is also responsible for ensuring security, performance and uptime. So it continuously needs to monitor the system.
Each cycle of software in traditional process takes many months and sometimes years. In recent times, newer development methodologies adhering to “Agile principles” have brought that time down to weeks instead of months. As part of this there have been some innovations focused on reducing the software development cycle time while maintaining quality. Some of these innovations include processes that blur the distinctions between development, testing and production. A collection of such practices and technologies that aid those practices are together known as “Dev Ops”.
Let’s look at how things change with the DevOps model. The first impact is on the development phase. Increasingly the trend is to develop software in smaller iterations of one-two weeks. This is inspired by the “agile methodology” in software development. There is another big wave of practices and tools that is a subset of Devops called “continuous integration, or CI. More on that later.
Devops also tries to achieve efficiencies in the testing phase of the project by encouraging developers to adopt automated testing. By using automated testing, the biggest advantage is that the manual effort involved in testing each and every release that is made available to the user decreases considerably. This leads to shorter timelines and better quality.
The third and most important difference is around operations and the production environment. In earlier times, teams were operations heavy. You needed operations team members to configure servers, configure them, ensure that deployment is happening currently, keep monitoring the servers constantly for anomalies and keep scaling up the servers and scaling down whenever needed. It was a full house and I’m not even touching the tip of the iceberg.
Things have changed with dev ops. Now large companies can do ten or hundred or more releases every day, because even a small feature can be released in isolation. Further developers check-in code to the repository on a daily basis, and a build is generated quickly. Any compilation errors, or failed test cases during the build or automated test that follows the build are immediately flagged to the developers for fixing. This ensures that the code base is stable and well tested.
Once the build is generated, configurations for the servers are automatically created by tools, deployment happens automatically and so does the server monitoring and scaleup/Scale down.
All of this ensures that software is being developed at a much faster pace and with a higher quality, and I’m sure this makes all of us addicted to our smartphones, so happy!