If you are not working in the IT industry, DevOps is probably not a familiar term. But what is DevOps? Even among IT experts, opinions often differ as to what exactly is meant by the term. Half knowledge and unclear ideas can lead to misunderstandings. Therefore, it is first of all necessary to clarify what is meant by DevOps.
Development Operations - Framework on processes and tools
The framework of DevOps places people above processes and processes above tools or tools – this simultaneously provides a useful first definition of DevOps. With DevOps, developers take over the operation of their applications themselves and have the appropriate knowledge of what exactly happens when the application is used. This makes the development and delivery of applications more flexible and faster. And it is precisely this agility and speed that are necessary to meet the demands of digital transformation. After all, one factor of digital transformation is short innovation cycles and these must be served with the appropriate speed.
DevOps is teamwork: people are at the centre
In traditional software development, developers create an application and fix it when a problem arises, while the operations department works to maintain, support and monitor the accessibility of the applications.
At the core of DevOps is the increasing collaboration of these previously independent and often siloed teams. The previously clear separation is disappearing – hence the name Dev (Development) and Ops (Operations). This is not just about development and operations working more closely together, but rather about creating an environment in which both are involved in every phase of the product cycle. In other words, Dev and Ops are combined under DevOps.
DevOps process: New structures and more effective development
In practice, DevOps is faster, more efficient and more reliable than traditional methods of software development. However, this requires the appropriate structures. In more traditional software development manual tasks often slow down the processes and stand in the way of high-frequency development. In DevOps processes, however, the infrastructure is based on code and teams can automate deployment and management resources.
An example: the provision of server resources. In the past, a developer would first email the infrastructure team to request a resource with a specific configuration. Then someone on the infrastructure team would open a document and go through a checklist of tasks before deploying the server.
In DevOps processes, however, developers and infrastructure engineers not only work together, they also implement processes using so-called “Infrastructure as Code”. In the context of Infrastructure as Code, the provisioning of IT resources is automated through code: Instead of manually provisioning servers, the developer ideally only needs to click a button and the necessary infrastructure is delivered automatically. However, the developer is usually empowered to deploy and boot servers and container solutions, which not only speeds up the entire process, but also gives the DevOps team the opportunity to deploy programs more frequently and efficiently.
The process described here makes the difference between DevOps and traditional methods.
Why is DevOps successful?
The main goal of DevOps is not only to standardize development and operation, but also to shorten development cycles and provide solutions faster. DevOps aims at higher productivity and more satisfied customers. It is therefore not simply a matter of following and using DevOps as a new trend, but rather to increase productivity and make the business more productive. Companies like Google and Amazon are so successful because they are able to deliver new software quickly and at short notice. And DevOps is essential to that success.
DevOps tools and what they mean
Technology and the associated benefits for automation and management are the driving forces for DevOps. Advances in and adoption of cloud and virtualization and in particular the emergence of Infrastructure as a Service (IaaS) provide the flexibility and speed required for DevOps.
With IaaS it is possible to instantly provide computing resources for highly customized and ever-changing IT requirements without the need for local hardware or manual configuration. This provides the automation required for DevOps, as mentioned for example for server provisioning. These cloud solutions provide the technical foundation for DevOps. In addition, there are specific tools such as Docker, Kubernetes, GitHub, Jenkins, Travis CI that are widely used. Although container solutions, source control and continuous integration are tools that fit well into a DevOps environment, they are not in themselves DevOps defining features.
Solutions for continuous configuration automation enable automatic configuration and scaling of resources. However, these tools would also be completely at home in traditional setups and are therefore not DevOps-specific.
It should be made clear that there are no pure DevOps tools, only tools that can be used in a DevOps environment for DevOps processes. So if you want to define DevOps, you cannot simply use a list of tools. DevOps is rather about people, organizations and processes. And in that order. People come first, processes second and only at the end are the tools used. People – developers and engineers – organize themselves and work as a unified team to bring products to market faster. DevOps processes are then built on this structure – with a strong focus on automation and innovative tools.