What is DevOps?

Smartpedia: DevOps, a combination of Development (Dev) and Operations (Ops), integrates the collaboration of both disciplines in a continuous process.

DevOps – the continuous collaboration of software development and IT operations

DevOps is the abbreviation of Development (Dev) and Operations (Ops) and integrates software development and IT operations with the aim of improving the collaboration between the two. DevOps uses a set of practices and principles to optimise the continuous flow of development and operations.

The DevOps approach is based on four simple building blocks:

  • The permanent increase of customer value and thereby the increase of value creation,
  • the shortening of feedback cycles, including the active use of stakeholder feedback,
  • the continuous improvement of processes, and
  • the joint responsibility of the stakeholders for software development and IT operations.

 

DevOps - the continuous collaboration of software development und IT operations

DevOps is a way of working in which development and operations teams collaborate closely throughout the software development lifecycle, from design and development to deployment and maintenance. This approach aims to improve collaboration, communication and integration between these teams with the goal of delivering software faster and more reliably.

Typically, the DevOps approach is based on the use of automation tools to facilitate the creation, testing and deployment of software, as well as the monitoring and management of the infrastructure on which the software runs. This allows teams to quickly recognise and fix issues as they arise, and to continuously improve and evolve the software. The use of agile and lean methodologies that prioritise the rapid deployment of small, usable increments over the traditional ‘big bang’ approach, where major releases are often deployed at long intervals, is proving very beneficial in practice.

The phases in the DevOps lifecycle

The DevOps lifecycle is often depicted as a continuous loop that includes the following phases¹:

  • Plan: this phase establishes the business requirements and objectives for the software, as well as the resources and timelines required to achieve these goals.
  • Code: The development teams use development environments, write code and use version control systems to manage and track changes.
  • Build: Code is then built and tested using continuous integration (CI) tools to ensure it is bug-free and works as expected.
  • Test: The code is deployed for testing, including integration and acceptance testing, in a staging environment.
  • Release: Once the code has been successfully tested, it is released for production use and made available to end users.
  • Deploy: The code is deployed to the production environment and any necessary infrastructure changes are made.
  • Operate: The software is monitored and managed in the production environment to ensure that it works as expected and to quickly recognise and fix any problems that arise.
  • Monitor: Metrics, logs and data are collected to monitor the performance of the system and recognise any problems.

Although the individual phases vary in the lived practice of companies, the goal remains the same: to enable a continuous and automated flow between the phases for the purpose of faster and more reliable software deployment. Particular importance is given to user feedback and monitoring to improve the flow and overall quality of the software.

DevOps practices at a glance

A key goal of DevOps is to automate and streamline processes associated with building, testing and deploying software, as well as monitoring and managing the infrastructure on which it runs. Several practices are used to achieve this goal:

Versioning: software developers write their code using a version control system so that all version statuses are permanently available to all stakeholders.

Continuous Integration: As developers commit their code changes, a Continuous Integration (CI) system automatically builds and tests the code. This allows integration problems to be recognised at an early stage before they become major problems.

Continuous Delivery: Once the code has been successfully created and tested, it is automatically deployed to a staging environment for further testing. This environment should be as close as possible to the production environment to ensure a smooth transition.

Continuous Deployment: If the staging tests are successful, the code is made available in the production environment and thus to the end users.

Monitoring and management: The production environment is continuously monitored to ensure that the software is working as expected. If problems are detected, they are quickly recognised and fixed.

Throughout the process, the development and operations teams work closely together to ensure that the software is deployed quickly and reliably, while being able to respond to any issues that arise. In enterprise practice, automation tools and technologies such as containerisation and orchestration, cloud platforms and automation tools are often used to facilitate this process.

Remark: DevOps is an iterative process where the teams and people involved will continuously improve and evolve their processes and practices over time.

DevOps principles at a glance

The DevOps Agile Skills Association (DASA)² lists six key DevOps principles:

Being customer-centric puts the needs and priorities of the customer at the centre of all development and operations activities. This means that the entire DevOps process, from development to deployment, is designed and executed with the goal of delivering value to the customer as quickly and effectively as possible. The practices mentioned, such as continuous integration, continuous delivery and continuous feedback, enable teams to respond quickly and efficiently to customer needs and requests.

“Create with the end in mind” is a principle that refers to designing and building products, services or systems with a clear understanding of the end goal or outcome that the customer or end user is seeking. In the context of DevOps, this means that development and operations teams work together with a shared understanding of the desired outcome for the customer and align their efforts and processes to achieve that outcome. This principle encourages teams to think about the entire lifecycle of a product or service, from design and development to deployment and maintenance, and to consider the needs and expectations of the customer at each stage. This includes thinking about scalability, maintainability and other factors that will impact the performance of the product or service in the long term.

A core of the DevOps philosophy is “end-to-end responsibility”. High levels of interest and ownership in the teams will increase motivation towards the product. It is important here that the teams retain responsibility for the product even after development and launch. The teams take over the operation and further development of the product until the end of the life cycle.

The integration of software development and IT operations works best with cross-functional, autonomous teams. They are composed of members from different functional areas (e.g. development, operations, testing, etc.) and have the autonomy to make decisions and take responsibility for their work. These teams are empowered to take full responsibility for the delivery of a product or service, from development to deployment and ongoing maintenance. To make this really work, there is a need to break down corporate silos that can slow down the development and delivery process. By giving teams decision-making freedom, they can respond quickly to changing customer needs and market conditions and deliver value to customers faster. Teams can also take full ownership of the product or service and have a higher level of accountability and commitment to the success of the product.

Continuous improvement is another key principle of the DevOps approach. It calls for a mindset that aims to continuously optimise and improve the development and operational processes as well as the products and services provided to customers. The aspiration is to continuously deliver value to customers, for example by identifying and addressing bottlenecks, inefficiencies and areas for improvement in the software development cycle. This can be achieved through practices such as measuring and monitoring performance metrics, collecting and analysing data, and implementing changes and improvements based on this data.

Continuous improvement also means always looking for ways to optimise the process, automation and tools to deliver value faster and more efficiently, as well as minimise risk and increase the quality of the software product.

“Automate everything you can” is the sixth principle that DASA names. It is a principle that emphasises the use of automation to streamline and optimise development and operations processes. This principle encourages teams to identify and automate repetitive tasks, processes and workflows, especially if they are prone to human error or require a lot of time and effort to perform manually.

The goal of automation is to free up time and resources for more valuable tasks such as innovation and problem solving, and to increase the efficiency, consistency and reliability of the software development lifecycle. Automation can include tasks such as build and test, deployment, monitoring and scaling.

Automation can be achieved through the use of various tools such as scripts, configuration management tools, continuous integration and deployment tools, and monitoring and logging tools. By automating as much as possible, organisations can ideally reduce the amount of time and effort teams spend performing tasks and increase the speed, quality and accuracy of the software development process.

Advantages and disadvantages of DevOps

The DevOps approach offers several advantages:

  • Using the aforementioned practices, DevOps enables teams to build, test and deploy software faster, allowing new features and updates to be delivered to end users more quickly and increasing the benefits to users.
  • By automating the software development process, DevOps helps reduce human error and improve the overall quality of software.
  • DevOps fosters a culture of collaboration between development and operations teams, ideally leading to better communication and more efficient problem solving.
  • DevOps enables teams to respond quickly to changes in business requirements and customer needs.

These benefits are also offset by some disadvantages:

  • Setting up and implementing DevOps can be complex, especially for organisations that are new to the approach.
  • DevOps requires specialised skills, such as experience with automation tools or cloud computing.
  • Implementing the approach can be expensive, especially if companies need to invest in new tools and technologies.
  • DevOps can increase the number of potential attack vectors, so companies should pay special attention to security throughout the development process.
  • The approach is constantly evolving, so companies that follow it need to keep up with the latest tools and best practices.

Remark: DevOps is a one-size-fits-all solution but, as described, encompasses a range of practices that need to be tailored to a company’s specific needs and goals. Consequently, the pros and cons depend heavily on the needs, culture and environment of the company.

Challenges in the introduction of DevOps

Adopting DevOps can be challenging for many organisations as it means a significant change in the way teams work together and the technologies they use. Some common challenges include:

DevOps requires a culture change where development and operations teams work closely together towards a common goal. This can be difficult for companies that have traditionally worked in silos. In addition, the approach requires a high level of communication and collaboration between development and operations teams. If teams are not used to working together, this can be a significant barrier to adoption.

Time and again it happens in practice that teams need to change the way they work, but some team members are latently or even openly opposed to these changes. Combined with a lack of qualified staff with, for example, extensive experience with automation tools, this can be a very big obstacle.

Fundamentally, automation is a key aspect of DevOps, and companies that do not have the necessary tools and technology often struggle to implement it. The high initial costs to implement the approach also often turn out to be an obstacle.

Last but not least, measuring success is difficult, especially when organisations have little experience in quantifying faster software delivery or higher reliability.

To overcome these challenges, many organisations are taking a step-by-step approach and starting small by focusing on specific projects and areas where DevOps can have a big impact. It’s important to communicate the benefits and goals of the integrated approach to all stakeholders and get buy-in from the entire organisation. And it is also important to provide training and support for the teams and staff involved so that they can acquire necessary skills and knowledge.

Impulse to discuss:

How can the internal approach of combining software development and IT operations also be used as a selling point towards the market?

Notes:

[1] The life cycle shown is highly simplified.
[2] DASA

And here you will find additional information from our t2informatik Blog:

t2informatik Blog: DevGreenOps - Climate change meets DevOps

DevGreenOps – Climate change meets DevOps

t2informatik Blog: DevOps and microservices architectures closely scrutinised

DevOps and microservices architectures closely scrutinised

t2informatik Blog: Value streams in DevOps

Value streams in DevOps