In the world of Agile Software development, Continuous Integration and Continuous Delivery have been creating several challenges for Developers and Operations since the very beginning. The list of challenges is huge; however, let’s have a look on some of the challenges –
- Each increment in software product (i.e. newly developed feature) adds to testing queue of QA team. The QA team has to test the newly developed feature along with the previously developed features to make sure that the new development does not have any adverse impact on the existing features. Thus with each increment testing load is increased on the QA team as they have to re-test the entire product along with the testing of the new increment.
If the same thing is tested again and again, it’s a human tendency that some scenarios and test cases are either overlooked or skipped, which eventually results defects in the product delivered.
- Once development is finished, product artefacts are handed over to separate team (Operations) for the deployment of the same on the other environment under release pipeline like UAT, Staging, and Production etc. Different configurations of these environments could lead to a situation where shipped product may not work on a specific environment. There could be ‘n’ number of reasons for the same which we will discuss later when we will talk about continuation delivery.
Other than these sorts of challenges, there are possibilities of having lower quality product in delivery cycle along with a lot of redundant work.
At first glance, it seems that applying automated testing will be helpful, but it is actually not enough.
Moreover, I’ve personally experienced that software developers show more interest in programming or writing code/scripts while very poor interest in other activities like unit testing, build, deployment etc. So, we need something that can help us overcome all such challenges with least effort and in minimum time.
So, DevOps is only the ultimate solution here.
The concept of DevOps has come with the same idea i.e. “Let the engineers do programming and involve machine to do the other work”. It’s a well-known fact that machines do repetitive/redundant task in a faster and efficient way.
What is DevOps?
DevOps is creating worldwide buzz for last two years. As a term, first time it was used in Agile conference in 2008 during a discussion between Andrew Clay Shafer and Patrick Debois on Agile Infrastructure. It’s a combination of two words i.e. Developers and Operations. DevOps has been developed to create such a culture / approach which may foster collaboration and Integration between Development & Operation teams.
The core idea behind this innovation is to integrate communication, collaboration and automation in order to improve the flow of work between software developers and IT operations professionals for faster development and deployment.
DevOps Toolchain
In DevOps, the process starts from developer’s machine where dev’s role is to write code for target functionality along with automated unit tests and to check-in the same to SCM tools. Rest is taken care of by DevOps toolchain.
Image below describes a DevOps toolchain
Why DevOps?
DevOps is not an ordinary accessory. Here are some key benefits of implementing DevOps:
- It decreases IT operational costs
- It improves quality of software and
- It speeds up time to market.
I believe, now you get a fair idea of DevOps and its benefits.