What exactly is DevOps?

What exactly is DevOps?

Understand it with a story

So, what is DevOps? Is it set of a tools? or a philosophy? a methodology? What's the right definition? Well to be quite honest, the definition could vary from person to person, but the core remains the same.

Just like there could be 5 different ways in which a line could be explained, similarly, there are several ways in which the DevOps definition could be explained. But I'll try to be as simple as possible.

So when someone asks me what DevOps is, I simply reply that it's a job profile just like a Software Developer who makes the life of a Software Developer and the Operation Team easy.

Pretty straightforward right?

Now let's do a deep dive into it and understand DevOps fundamentally.

And for that, you need to understand Waterfall and Agile methodology first because DevOps came out of Agile and Agile came out of the Waterfall.

So, let's put all the pieces together with a simple example:

Let's say you are the owner of a company, and you got a client who wants to develop a Clothing app.

Now, what's the first thing you would do?

1 - You'll connect the client with the developer's team who will make the app. Right?

So let's say the developer's team coded day and night and within a certain amount of time they finally made the app.

2 - Now the Testing Team comes into the picture. They will test the app in extreme situations and will try their best to find errors so that the customers won't experience them. If the error is found the app is sent back to the developer's team or if it isn't found, then

3 - Operation Team comes into the picture. They will package the app and will deploy it on the server and will test if it can manage thousands or millions of visitors or not.

This way of working was called Waterfall Methodology where each phase must be completed before the next phase can begin. See the image below:

Now our app is finally ready after around 2-3 months of hard work. So, the operation team sends the app to the client.

The client looks at the app and surprisingly he didn't like anything about the app, the layout was different, the images were not in order, landing pages, checkout pages, and every other thing on the app were not according to the client's needs.

In other words, a whole new app needs to be made. Around 90% of the app was supposed to change. All the hard work was wasted.

Think for a second. What would you do, if you were at the place of the owner? You'll get pissed off, right?

Now, this was a serious issue that needs to be solved. But what can you do, you don't have a choice. So you started again but this time you cannot afford to repeat the same mistake which cost you 3 months.

So this time, instead of telling the developer team to make the whole app in one go, you tell them ok listen, "make the app in small parts" which means to work on a single function at one time and send those small parts to the testing team before making the whole app.

Then the testing team will send it to the operation team who will demo package the app and will send it to the client.

This one round is called a sprint and this is what is known as Agile Methodology. See the image below:

This methodology was a total game changer for the tech industry because it was a total win-win for both the client and the companies.

The client gets more customizable apps, and the company has to make a lot fewer changes and needs a lot less time to complete the project. Also previously when the developers were busy building the app, the testing team and the operation team were sitting idle. But because of working in fragments, everyone was busy with their work.

Now you might wonder ok yeah that's pretty cool but when the hell did DevOps come into the picture?

Now everything was working great with this new methodology but there was one more issue, whenever the developer team was sending the code to the operations team to test the app on the server, there was always some form of error going which usually led to a debate between developers and operation team.

Developers (including testers) used to say that the operation team is not doing their work and the operation team was saying that these developers don't even know how to write code perfectly.

Now things were messy again and you want things to run smoothly. Is this too much to ask for an owner? No right?

So you appointed someone from the developer's team and said listen to me I am fed up with all this nonsense, we all are one team, and you are now responsible for the connection between the Developers team and the Operations team. And that guy my dear friend, our missing piece, is called a DevOps Engineer!

Hoof !!!

The above example is also the reason why DevOps is called the successor of Agile Methodology.

Now let's become a little technical and figure out the roles of DevOps engineers.

What exactly does a DevOps Engineer do? We discussed earlier that it makes the life of the developer and operation team easy. And one way to make the lives of others easy is to create automation. Just like you ask Alexa to turn off your bedroom light.

So basically more the automation in the company, the more it will run smoothly.

And in a nutshell, a DevOps Engineer is responsible for:

  1. Collaborating with the developer and operations department.

  2. Deploying the application on the server.

  3. Managing the application on the server and monitoring the application on the server.

  4. Writing infrastructure codes which are the codes to manage different pc within the organization or your servers.

So yeah that's pretty much of it.

Do share your feelings in the comment section.

Open to suggestions and improvements as well!

Images by Freepik