What exactly is DevOps?

Have you ever wondered what exactly is DevOps? Perhaps you have seen job offers looking for a “DevOps Engineer”? In this post I am going to describe DevOps in few words trying to somehow show you what it exactly means.

First of all, DevOps is a philosophy of work. Saying that we need to remember that there are different approaches towards software development and DevOps the most popular one. On the other hand, a DevOps Engineer is a person that uses the philosophy on a daily basis while supporting other teams. Moreover, such an engineer supports software developers (the Dev-part), operations (Ops-part) and performs admin-related tasks.

Figure 1. The DevOps Cycle source: https://www.hiclipart.com/free-transparent-background-png-clipart-pytym

The DevOps cycle starts with the planning phase and goes as follows:

  • Plan – after receiving a task and agreeing with the customer on the key points and action items we plan our work. We try to estimate the size of the tasks, required manhours, efforts and required knowledge.
  • Code – the planned task needs to get coded, the infrastructure needs to be prepared, some solutions needs to be changed (often challenges occur when you least expect it). During that phase we can notice things we might have missed, add better solutions and suggest some changes.
  • Build – when you believe you have working code and you are able to run it, you hit the build button. If it fails – you debug it. If it runs, you go to testing.
  • Test – you need to test your solution either by yourself, by testers or quality engineers. First you test it by yourself, obviously. When you trust everything works fine then you give it to your customer so they can bless it. Usually it gets accomplished on a test environment. It is separated from the production and only developers, testers, etc. can access it.
  • Release – supposing all tests went well, you release your system/application/etc. to production but usually only to a small number of customers. It means that the end client sees the new features, new functionalities or, simply, new look. Such a system should be bug free but in real life it rarely is. When all the bugs get fixed you are ready to deploy it.
  • Deploy – you go live with the final version of the application. All of your customers can now access it. All you need to do is to manage it.
  • Operate – you simply use your system. When you create your software or system, only limited number of people have access to it. Even in the biggest organizations you employ maximum a few thousand of people. When the customers start using the software you suddenly get millions of users. Things can go wrong so you need to focus on the next step.
  • Monitor – this is the crucial part. You need to know that everything is working. If your website is not working it means your customers cannot buy anything or learn about your services. It means no cash flow which means no profits. You must know if your system is working right here and right now. If something suspicious is happening then you need to react fast. Timing is crucial because if you provide customers with, e.g., news service and you fail, your customers can simply go to another service that is working at the moment. You do not want that.

When you monitor your system you are able to track bugs, bottlenecks or other issues. When they are found and named they get described and they need to get fixed. The fix gets planned and the DevOps cycle starts again.

This is just a glance of DevOps. If you want to learn more you can check out how it is seen by other organizations in the ICT field:

https://azure.microsoft.com/en-gb/overview/what-is-devops/

https://aws.amazon.com/devops/what-is-devops/

https://www.atlassian.com/devops/what-is-devops

Remigiusz Pospieszyński