When we think about deploying software, how long does it take for us to deploy a change that involves just one single line of code. Do we have systems that can do this on a repeatable, reliable basis?
The time from deciding that you need to make a change to having it in production is known as the cycle time and it is a vital metric for every project. In order to shorten the cycle time from months to weeks or even days, we require a strategy where we can perform the following operations: Build, Deploy, Test and Release in a continuous fashion.
Let us look at some questions that would come across in a product lifecycle:
What happens once the requirements are identified? Solutions are designed, developed and tested? How are these activities joined together and coordinated to make the process as efficient and reliable as we can make it? How do we enable various personnel involved in the product to work together effectively?
This is where DevOps can play an important role.
So what is DevOps?
DevOps is a combination of Agile and Lean approaches. One of the popular definitions of DevOps proposed by Jez Humble is : "DevOps is across disciplinary community of practice dedicated to the study of building evolving and operating rapidly changing resilient systems at scale".
To break down the above in simple words: DevOps is a practice where both operational and development engineers work together throughout the entire lifecycle of a product. This lifecycle starts from the product design through the development process to production support.
Continuous Integration and Continuous Delivery practices are the very core of DevOps. Though there are specific techniques that fall under implementing the DevOps practices you will see that most of them are oriented towards creating a repeatable, scalable and reliable product.
If you are wondering whether now is the right time to learn DevOps, then the answer is definitely YES because DevOps in most organizations is already becoming mainstream.