Introduction To DevOps Concept

In this fast-moving world, IT is playing a major role in most of the sectors like Education, Banking, Aerospace, Medical, and others. So, what if the Information Technology itself is not upgrading its approach to designing and developing a product or providing the services to any other industry? Then, it won’t be so easy for other sectors  to grow faster. That’s why it’s mandatory for the IT industry to always come up with a new approach to deliver a product or service in a quicker manner.

In the traditional approach, we have a waterfall method - developers write their code and test or build it on their local machine; once it is passed, then give a build to the QA team; the QA team then tests it on different servers and then finally, deploys it on Production for operational use. So, this takes a lot of time, from requirement gathering to deployment. Both, the development and the operations, work independently, so product finally reaches  the operation team after a long time. Also, the product may not work as expected or may face some road blocks.

DevOps

Welcome to the world of DevOps

DevOps = Development + Operations is the practice of operations and development engineers participating together in the entire service lifecycle, from design through the development process to production support.

DevOps

In DevOps, almost everything is continuous; continuous integration, continuous delivery, continuous deployment, continuous monitoring.

DevOps

  1. Continuous Integration is a continuous process to check-in the code into repository or server so that the committed code can be tested in each iteration and if any bug comes up, it can be resolved and the fresh code is executed with the next functionality. The purpose is to provide the quick feedback to developers and minimize the possibility that a change causes some issue at a later stage, that requires the inversion of code to the early stage.

  2. Continuous Delivery is a process of delivering the code continuously to the environment that could be QA, staging, or production. The basic idea is to find out the bug at an early stage. This is similar to the continuous integration but the only difference here is that we test the business logic functionality. In continuous integration, we do unit testing and automated regression testing, but in continuous delivery, we do end-to-end testing which provides the information regarding the business logic related issues which might be missed in automated testing. And here, the code is delivered along with the required configuration and settings to make sure that the code is running in the same environment.

  3. Continuous Deployment is a process to release the code into the production environment when it is required or even in a short notice as well, with an automated process within a few clicks. It means the production branch must be ready all the time. So, testing is done in all the prior branches before merging the code into the production branch.

    Thus, Continuous Deployment requires Continuous Integration and Continuous Delivery; otherwise, errors may arrive in production branch. In this complete process, you should automate your Continuous Integration with build server and Continuous Delivery to staging, and should automate the Deployment process to production.

    DevOps
    DevOps Framework 

Now, the one obvious question that will come to mind is how Agile is different than DevOps.

Agile vs DevOps

Agile is a set of values and principles about how to develop a software with a small team in a short duration in small iterations called as a sprint. However, in the process, there is no communication with the operations team (system engineers, DBA, network and security engineers etc.) and this software might be working only on dev and test environment. Now, we want a way to deploy the software quickly on production in a safer and easier manner. Thus, we use DevOps tools and technique. DevOps brings more flexibility on top of the Agile methodology with continuous integration and delivery and makes sure that there are no road blockers.

So, basically, DevOps is not a separate concept but an extension of Agile to include operations.

Goals of DevOps

DevOps

Reasons for DevOps Failure

  • Creating DevOps Department
  • Failing to properly consider employee workload
  • Lack of connectivity in DevOps tools chain
  • Culture problem
  • Limited access to self-service environment
In my next blog, I will describe how we can implement DevOps with Jenkins.