What is DevOps?

What is DevOps?

Introduction

Do you know that DevOps can accomplish tasks in minutes which use to take hours or even days of work. So the companies can work on the business or the product. And maybe that's why the IT industry is adopting DevOps at such a rapid pace.

But what exactly is DevOps?

  • Is it a software?

  • Is it a tool?

  • Is it a company?

So many explanations are out there:-

  • Some say it's all about Automation/Scripting, is it?

  • DevOps is about culture, is it?

  • It's about tools, what tools?

  • Is DevOps cloud computing?

To understand it first let's discuss Software Development Life Cycle (SDLC).

Software Development Life Cycle (SDLC)

Software development is a very well-defined and organized process. It consists of multiple phases.

sdlc.png

1) Requirement gathering and analysis: In this phase, information is collected like product features, what users, how it will be used, user requirements, current market states, etc

2) Planning: What do you want? It determines the cost and resources required for the implementation of the product and also the risks associated with it.

3) Designing: In this phase, architects design the software based on the inputs from the previous phase. Architects produce design documents. These act like a roadmap for the developers.

4) Development: This is where the developers write the software code based on the design.

5) Testing (Quality assurance): In this phase, the software is tested by software testers for any defects. Software is promoted to production only after fixing all the issues.

6) Deployment: In this phase, the software is deployed to the production environment so users can start using the product. It's the responsibility of the system admin and the entire operations team to make sure the software is up and running all the time.

7) Maintenance: It is a balance between regular changes and uptime.

This entire process is called Software Development Lifecycle (SDLC).

There are different models in SDLC:

  • Waterfall

  • Agile

  • Spiral

  • Big Bang, etc

You can refer to these models as paths or roadways to reach the same destination and choose a path based on different factors like cost, risk, and time taken to reach your destination.

Now let's discuss the Waterfall model and the Agile model in brief.

Waterfall Model

In the waterfall model, development happens in step by step manner. Each phase must be completed before the next phase begins. Requirement completes, then only planning begins. When everything is completed, all the features will be tested and then the maintenance phase starts.

It is very difficult to integrate new changes given by the client or change something that didn't work well in the planning. To do so, we have to almost restart the cycle which can be very expensive and time-consuming. This will lead to delays in delivering the software.

Agile Model

In the Agile model, instead of developing all the requirements for months, it is divided into smaller lists. Work on a list for 2 to 4 weeks and then move on to the next list. In other words, the entire process of building the application is divided into small sprints. Sprints generally last for 2 weeks (The team decides the length of the sprint). After every sprint, the client can give feedback so the team can make the changes quickly and effectively. The product is delivered faster as compared to the waterfall cycle.

Here, the product is tested only on the developer's environment and not on production. It's the operations team's job to deploy the application and make sure the application is up and running. But at times, the application fails in the production servers. This may be due to misconfigurations, or dependencies that didn't match, it can be anything. The operations team has no idea what's going on so they send the application back to the development team. Due to these failures and fixes, there is a delay in delivering the application.

Dev vs Ops

Dev and Ops are poles apart. Dev is agile, all about regular and quick changes. Ops is ITIL driven, and provides a stable environment for the application.

There is a big wall of confusion between these two teams. Developers toss their code over the wall and the Ops team's responsibility is to deploy the code on the servers. Developers complain about delays in deployments. The ops team complain about unclear instructions.

wallDevOps.png

Due to frequent delays and errors, the consumers are not happy. And unhappy consumers cloud mean direct business loss.

This is where DevOps comes in.

What is DevOps?

DevOps is an evolution from the Agile model. The Agile model is great for developing and testing out solutions. It addresses the gap between clients and developers.

DevOps addresses the gap between the ops team and the dev team. So we are bringing the development team and the operations team together into a single team. Now they can work smoothly because they are integrated. The wall of confusion is brought down and both teams work together.

devopsGap.png

Automation training and instructions are given to every team across the board. Automation of each and every task in the code delivery processes like code build, code testing, software testing, infra changes, deployments, and everything that comes along the way.

DevOps phases

The entire workflow in software development is divided into eight phases. This is quite similar to Agile as DevOps and agile are very closely related.

devopsCycle.png

  1. Plan:- In this phase, the client and software development team discuss the project goals and accordingly create a plan.

  2. Code:- In this phase, the development team design and code the application based on the design. They use Version Control System (VCS) like Git to maintain the code.

  3. Build:- In this phase, the application is built using tools like Gradle and Maven. Gradle and Maven take code from different repositories and combine them to build the complete application.

  4. Testing:- Here, the application is tested to ensure the software quality. Automation testing tools like Selenium and JUnit are used in this phase.

  5. Integrate:- After completing testing, new features are integrated automatically into the codebase. Tools like Jenkins are used in this phase.

  6. Deploy:- In this phase, the application is deployed from the development server to the production server.

  7. Operate:- Tools like Chef and Ansible are used to perform operations like configuring servers and provisioning them with the required resources.

  8. Monitor:- In this phase, you monitor the entire environment. Monitoring allows us to identify the specific issues of specific releases and understand the impact on end-users.

Companies following DevOps:-

  • Netflix

  • Adobe

  • Google

  • Microsoft

  • Nvidia

  • Cisco

  • Oracle

  • Sony

  • and many more...

DevOps Advantages

  • Continuous integration and continuous delivery ensure faster time to market.

  • Collaboration between developers and the operations team is improved.

  • Complexity of maintaining the application is reduced.

  • Time to create and deliver an application is reduced.