What is DevOps and why does it matter?

- Guys, there’s a bug in production! Due to latency, we hit some timeouts and customers can buy products without making a payment! We have to fix it ASAP! Do you know what is worse than hearing this from the development team?

Not hearing it at all and having an ongoing bug that causes your business to lose serious money for a longer period of time.

We could also encounter another problem here: releasing a bugfix could take days or even weeks as the software or even the process might not have been designed for implementing changes at a fast pace.

There is no perfect software, people tend to make mistakes, take bad technical and business decisions. But if you choose the right skill set when setting up the development team, these kind of issues would be incidental.

We at Boldare have plenty of experience in putting together development teams to craft products for our clients and we know very well how to avoid such situations.

Other articles for you:

Agile product development team and DevOps

When you build an agile development team, there is no golden bullet in terms of its structure. Moreover, the team composition may vary over time as the product backlog grows and matures. This is perfectly normal in agile software development, the product constantly changes and sometimes the team structure should be adjusted. So we have:

  • front-end and back-end developers,
  • product designers,
  • business analysts,
  • QA and machine learning engineers,
  • software architects and database administrators.

And all of them are actively participating in crafting the best possible software products. But there are things to consider in almost every phase of development, and in almost every one of the roles mentioned, which require a DevOps skill set to be present within the team.

Omitting such skills might lead to several problems which we will cover in more detail in a moment. But first, let’s agree what DevOps actually is.

DevOps - between dev and ops

The word “devops” can be confusing, especially to non-techies. Also, there is no formal definition and most of the ones seen on the Internet represent the very wide range of skills and problems DevOps solve. The essence is to understand how the word was built.

DevOps” is a combination of “dev” which stands for the development, the process of building a product. A Developer (e.g. in a scrum team) is any of its members who isn’t a Product Owner - maintaining the product backlog - or a Scrum Master - ensuring the process of product development is optimal. Every Developer is directly involved in building the product.

The second part is “ops” which stands for “operations”. In non-agile approaches to software development, when a product was built it would be taken over by engineers and specialists responsible for releasing it to production and keeping it operational. Using agile software development, we can’t really say a product is built.

In order to keep the client’s business running and competitive at all times, the team reacts to changes and adjusts the product accordingly. This requires a certain way of working and such a split of responsibilities is no longer needed. In order to quickly respond to changes, we need better collaboration in the team, namely someone in between.

After knowing the etymology it’s much easier to understand what DevOps is. I believe the easiest definition would be: it’s a skill set in agile software development required to keep the product working and flexible. Still too intricate? Let’s find some examples of a DevOps specialist’s everyday work.

Common devops tasks

Starting from the very beginning of product development, developers always need an infrastructure. It has to be stable, efficient, secure and reliable. Moreover, this infrastructure evolves over time, just as the product itself does.

Here’s where DevOps skills are essential - not only to set up a database server but to build the entire infrastructure around the product or even participate in designing the architecture. This means DevOps is about building the product together with the development team, not just fixing a Linux system configuration.

The Agile Manifesto states that responding to change is far more important than following a fixed plan. The team needs a way of integrating and deploying changes rapidly.

The DevOps skill set includes knowledge of the tools which help the team to release the software promptly or preferably to automate the process, e.g. implementing Continuous Integration, Continuous Delivery or ultimately Continuous Deployment.

Another value from the Agile Manifesto is “working software”. Regarding this point, there are some very important topics to cover, especially when crafting a product which is designed to change very often. Without monitoring the performance of the software product, we can’t really tell if it’s working or not.

DevOps also includes everything required to properly monitor the software, verify it is behaving correctly and raise an alert in the event of a failure.

Why DevOps is important?

What can happen when a development team is lacking DevOps skills? If they work in a waterfall-kind of approach, then probably not much. There would be a dedicated operations team which would handle some of the topics mentioned in the previous section.

But this way of developing a product has other major drawbacks, e.g. gathering feedback from users is possible only after the full product is finished and responding to any change which was not included into the initial concept can be highly ineffective.

What about an agile development team? If they lack DevOps capabilities, it could mean:

  • The system infrastructure might be inefficient and, for example, discourage users.
  • The software architecture could be non-scalable and at some point become insufficient as the business grows.
  • There might be security vulnerabilities which were not recognized by developers and QA specialists.
  • There might be severe bugs in the system which were not reported by the users and with no monitoring, there’s no alert to notify the team.
  • No easy or automated way of releasing the software can allow competitors in the market to take your customers as important changes are deployed just too late.
  • The development team would be generally inefficient because DevOps skills are needed by all of the roles, from software developers to QA engineers, from database administrators to software architects; and development team inefficiency means a higher cost of developing the product.

DevOps - it’s more than that

Some of the most common definitions for DevOps consider it rather as a community or a movement than just a skill set. This is obviously a valid statement because when many professionals share similar competences, they usually build a community around them to share their knowledge and find the best solutions for solving particular problems.

It’s also considered an organizational culture - companies have to change their ways of working and improve the collaboration between the development and operations roles in order to make the team truly interdisciplinary and responsible for the product.

And finally, DevOps skills allow you to benefit from the agile approach when it comes to responding to changes and adjusting the software product.

If you’re curious about DevOps-related topics, there are many places where you can enhance your knowledge and find people with similar interests. When thinking about DevOps get-togethers, the first thing that comes to my mind is definitely DevOpsDays - a worldwide series of conferences dedicated for DevOps aficionados.

If you wish to find a more “remote” way of communicating with such people you should definitely visit the r/devops feed. If you prefer books, the must-read title is:

The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations

It’s rather non-technical and guides you through the DevOps organizational transformation.

DevOps isn’t just a set of tools, an engineer configuring a database server or a developer interested in some operations-related topics. It’s a way of thinking and sharing the agile values which have been proven to work very well in this ever-changing world.

It’s about collaboration between team members to ensure the software they’re building is of good quality and is working as expected. DevOps is about bringing real value to the business.