DevOps

DevOps is a set of software development practices that combine software development (Dev) and information-technology operations (Ops) to shorten the systems-development life cycle while delivering features, fixes, and updates frequently in close alignment with business objectives.

Includes the cultural and professional movement that stresses communication, collaboration, integration and automation in order to improve the flow of work between software developers and IT operations professionals.

What is DevOps?

DevOps is a set of practices that combines software development (Dev) and IT operations (Ops) to shorten the software development life cycle while delivering high-quality software releases. The goal of DevOps is to provide a culture of collaboration and communication between development and operations teams to improve the speed and reliability of software delivery.

DevOps emphasizes automation and monitoring at all stages of the software development life cycle, from planning and coding to testing and deployment. It involves the use of tools and techniques to automate the software development process, including continuous integration (CI), continuous delivery (CD), and continuous deployment (CD).

DevOps also focuses on creating a culture of collaboration and communication between development and operations teams. This involves breaking down traditional silos between these teams and promoting a shared responsibility for the success of the software release.

DevOps definition

DevOps is the union of people, process, and products to enable continuous delivery of value to our end users
Donovan Brown

Azure DevOps

DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes. This speed enables organizations to better serve their customers and compete more effectively in the market. — Amazon Web Services (AWS)


DevOps represents a change in IT culture, focusing on rapid IT service delivery through the adoption of agile, lean practices in the context of a system-oriented approach. DevOps emphasizes people (and culture), and seeks to improve collaboration between operations and development teams. DevOps implementations utilize technology— especially automation tools that can leverage an increasingly programmable and dynamic infrastructure from a life cycle perspective. — Gartner

New Relic - What is DevOps?

Measure what matters and do DevOps right with New Relic …

New Relic DevOps

What is DevOps?

DevOps is a software development methodology that combines software development and IT operations to improve the efficiency and speed of software delivery. It emphasizes collaboration, automation, and continuous improvement.

What are the key principles of DevOps?

The key principles of DevOps include collaboration and communication between development and operations teams, automation of the software delivery pipeline, continuous integration and delivery, and a focus on monitoring and feedback.

What are some benefits of DevOps?

DevOps can help to improve the speed and quality of software delivery, reduce costs, increase collaboration between teams, and improve the reliability and scalability of software systems.

What is Continuous Integration (CI)?

Continuous Integration is a practice in DevOps where developers regularly merge their code changes into a shared repository and run automated tests to ensure that the code is working correctly.

What is Continuous Delivery (CD)?

Continuous Delivery is a practice in DevOps where code changes are automatically built, tested, and deployed to production environments. It ensures that code changes can be released quickly and with minimal risk.

What is Infrastructure as Code (IaC)?

Infrastructure as Code is a practice in DevOps where infrastructure configurations are defined in code and managed in a version control system. It allows for the automated creation and management of infrastructure and helps to improve consistency and reliability.

What is a DevOps toolchain?

A DevOps toolchain is a set of tools and technologies that are used to support DevOps practices. It includes tools for continuous integration, continuous delivery, infrastructure automation, monitoring, and feedback.

What is a DevOps culture?

A DevOps culture is one that emphasizes collaboration, communication, and shared responsibility between development and operations teams. It encourages a focus on delivering value to customers quickly and continuously improving processes.

90 Days Of DevOps

This repository is used to document my (Michael Cade's) journey on getting a better foundational knowledge of DevOps. I will be starting this journey on the 1st January 2022 but the idea is that we take 90 days which just so happens to be January 1st to March 31st.

The reason for documenting these days is so that others can take something from it and also hopefully enhance the resources.

The goal is to take 90 days, 1 hour a day, to tackle over 13 areas of DevOps to a foundational knowledge.

This will not cover all things DevOps but it will cover the areas that I feel will benefit my learning and understanding overall.

90 Days Of DevOps

GitHub Collections

These tools help you manage servers and deploy happier and more often with more confidence.

Snippet from Wikipedia: DevOps

DevOps is a methodology in the software development and IT industry. Used as a set of practices and tools, DevOps integrates and automates the work of software development (Dev) and IT operations (Ops) as a means for improving and shortening the systems development life cycle. DevOps is complementary to agile software development; several DevOps aspects came from the agile way of working.

Automation is an important part of DevOps. Software programmers and architects should use "fitness functions" to keep their software in check.

Other than it being a cross-functional combination (and a portmanteau) of the terms and concepts for "development" and "operations", academics and practitioners have not developed a universal definition for the term "DevOps". Most often, DevOps is characterized by key principles: shared ownership, workflow automation, and rapid feedback. From an academic perspective, Len Bass, Ingo Weber, and Liming Zhu—three computer science researchers from the CSIRO and the Software Engineering Institute—suggested defining DevOps as "a set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality". However, the term is used in multiple contexts. At its most successful, DevOps is a combination of specific practices, culture change, and tools.

Proposals to combine software development methodologies with deployment and operations concepts began to appear in the late 80s and early 90s.

Around 2007 and 2008, concerns were raised by those within the software development and IT communities that the separation between the two industries, where one wrote and created software entirely separate from those that deploy and support the software was creating a fatal level of dysfunction within the industry.

In 2009, the first conference named DevOps Days was held in Ghent, Belgium. The conference was founded by Belgian consultant, project manager and agile practitioner Patrick Debois. The conference has now spread to other countries.

In 2012, a report called "State of DevOps" was first published by Alanna Brown at Puppet Labs.

As of 2014, the annual State of DevOps report was published by Nicole Forsgren, Gene Kim, Jez Humble and others. They stated that the adoption of DevOps was accelerating. Also in 2014, Lisa Crispin and Janet Gregory wrote the book More Agile Testing, containing a chapter on testing and DevOps.

In 2016, the DORA metrics for throughput (deployment frequency, lead time for changes), and stability (mean time to recover, change failure rate) were published in the State of DevOps report. However, the research methodology and metrics were criticized by experts. In response to these criticisms, the 2023 State of DevOps report published changes that updated the stability metric "mean time to recover" to "failed deployment recovery time" acknowledging the confusion the former metric has caused.

Many of the ideas fundamental to DevOps practices are inspired by, or mirror, other well known practices such as Lean and Deming's Plan-Do-Check-Act cycle, through to The Toyota Way and the Agile approach of breaking down components and batch sizes. Contrary to the "top-down" prescriptive approach and rigid framework of ITIL in the 1990s, DevOps is "bottom-up" and flexible, having been created by software engineers for their own needs.

The motivations for what has become modern DevOps and several standard DevOps practices such as automated build and test, continuous integration, and continuous delivery originated in the Agile world, which dates (informally) to the 1990s, and formally to 2001. Agile development teams using methods such as extreme programming couldn't "satisfy the customer through early and continuous delivery of valuable software" unless they took responsibility for operations and infrastructure for their applications, automating much of that work. Because Scrum emerged as the dominant Agile framework in the early 2000s and it omitted the engineering practices that were part of many Agile teams, the movement to automate operations and infrastructure functions splintered from Agile and expanded into what has become modern DevOps. Today, DevOps focuses on the deployment of developed software, whether it is developed using Agile oriented methodologies or other methodologies.

ArchOps presents an extension for DevOps practice, starting from software architecture artifacts, instead of source code, for operation deployment. ArchOps states that architectural models are first-class entities in software development, deployment, and operations.

Automation is a core principle for achieving DevOps success and CI/CD is a critical component. Plus, improved collaboration and communication between and within teams helps achieve faster time to market, with reduced risks.

Mobile DevOps is a set of practices that applies the principles of DevOps specifically to the development of mobile applications. Traditional DevOps focuses on streamlining the software development process in general, but mobile development has its own unique challenges that require a tailored approach. Mobile DevOps is not simply as a branch of DevOps specific to mobile app development, instead an extension and reinterpretation of the DevOps philosophy due to very specific requirements of the mobile world.

In 2003, Google developed site reliability engineering (SRE), an approach for releasing new features continuously into large-scale high-availability systems while maintaining high-quality end-user experience. While SRE predates the development of DevOps, they are generally viewed as being related to each other. Some of the original authors of the discipline consider SRE as an implementation of DevOps.

Toyota production system, also known under the acronym TPS, was the inspiration for lean thinking with its focus on continuous improvement, kaizen, flow and small batches. The andon cord principle to create fast feedback, swarm and solve problems stems from TPS.

DevSecOps is an augmentation of DevOps to allow for security practices to be integrated into the DevOps approach. Contrary to a traditional centralized security team model, each delivery team is empowered to factor in the correct security controls into their software delivery. Security practices and testing are performed earlier in the development lifecycle, hence the term "shift left". Security is tested in three main areas: static, software composition, and dynamic.

Checking software statically via static application security testing (SAST) is white-box testing with special focus on security. Depending on the programming language, different tools are needed to do such static code analysis. The software composition is analyzed, especially libraries, and the version of each component is checked against vulnerability lists published by CERT and other expert groups. When giving software to clients, library licenses and their match to the license of the software distributed are in focus, especially copyleft licenses.

In dynamic testing, also called black-box testing, software is tested without knowing its inner functions. In DevSecOps this practice may be referred to as dynamic application security testing (DAST) or penetration testing. The goal is early detection of defects including cross-site scripting and SQL injection vulnerabilities. Threat types are published by the open web application security project, e.g. its TOP10, and by other bodies.

DevSecOps has also been described as a cultural shift involving a holistic approach to producing secure software by integrating security education, security by design, and security automation.

DevOps initiatives can create cultural changes in companies by transforming the way operations, developers, and testers collaborate during the development and delivery processes. Getting these groups to work cohesively is a critical challenge in enterprise DevOps adoption. DevOps is as much about culture as it is about the toolchain.

Although in principle it is possible to practice DevOps with any architectural style, the microservices architectural style is becoming the standard for building continuously deployed systems. Small size service allows the architecture of an individual service to emerge through continuous refactoring.

It also supports consistency, reliability, and efficiency within the organization, and is usually enabled by a shared code repository or version control. As DevOps researcher Ravi Teja Yarlagadda hypothesizes, "Through DevOps, there is an assumption that all functions can be carried out, controlled, and managed in a central place using a simple code."

Many organizations use version control to power DevOps automation technologies like virtual machines, containerization (or OS-level virtualization), and CI/CD. The paper "DevOps: development of a toolchain in the banking domain" notes that with teams of developers working on the same project, "All developers need to make changes to the same codebase and sometimes edit even the same files. For efficient working, there has to be a system that helps engineers avoid conflicts and retain the codebase history," with the Git version control system and the GitHub platform referenced as examples.

GitOps evolved from DevOps. The specific state of deployment configuration is version-controlled. Because the most popular version-control is Git, GitOps' approach has been named after Git. Changes to configuration can be managed using code review practices, and can be rolled back using version-controlling. Essentially, all of the changes to a code are tracked, bookmarked, and making any updates to the history can be made easier. As explained by Red Hat, "visibility to change means the ability to trace and reproduce issues quickly, improving overall security."

  • DataOps
  • DevOps toolchain
  • Twelve-factor app
  • Infrastructure as code
  • Lean software development
  • Site reliability engineering
  • Value stream
  • List of build automation software
  • Davis, Jennifer; Daniels, Ryn (2016-05-30). Effective DevOps : building a culture of collaboration, affinity, and tooling at scale. Sebastopol, CA: O'Reilly. ISBN 9781491926437. OCLC 951434424.
  • Kim, Gene; Debois, Patrick; Willis, John; Humble, Jez; Allspaw, John (2015-10-07). The DevOps handbook : how to create world-class agility, reliability, and security in technology organizations (First ed.). Portland, OR. ISBN 9781942788003. OCLC 907166314.{{cite book}}: CS1 maint: location missing publisher (link)
  • Forsgren, Nicole; Humble, Jez; Kim, Gene (27 March 2018). Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations (First ed.). IT Revolution Press. ISBN 9781942788331.

Source: YouTube

What is ALM?

ALM vs DevOps?

DevOps is a set of practices that combines software development (Dev) and IT operations (Ops) to shorten the development lifecycle while improving software quality and reliability. It emphasizes collaboration, communication, automation, and measurement of the entire application lifecycle, from development and testing to deployment and operation.

DevOps is closely related to ALM (Application Lifecycle Management) because it focuses on streamlining the application lifecycle by bridging the gap between development and operations teams. DevOps provides a framework for automating the deployment and operation of software applications, while ALM provides a framework for managing the entire lifecycle of the application, including development, testing, deployment, and maintenance.

In other words, DevOps is a methodology that emphasizes collaboration and automation across the entire application lifecycle, and ALM provides a framework for managing the application lifecycle from inception to retirement. Both DevOps and ALM are focused on optimizing the application lifecycle, and together they provide a comprehensive approach to software development and deployment.

Various Tools depending of the DevOps steps:

FIXME – Figure out this Matrix.

  1. Coding – code development and review, source code management tools, code merging
  2. Building – continuous integration tools, build status
  3. Testing – continuous testing tools that provide quick and timely feedback on business risks
  4. Packaging – artifact repository, application pre-deployment staging
  5. Releasing – change management, release approvals, release automation
  6. Configuring – infrastructure configuration and management, infrastructure as code tools
  7. Monitoring – applications performance monitoring, end-user experience

The 2015 State of DevOps Report discovered that the top seven measures with the strongest correlation to organizational culture are:

  1. Organizational investment in DevOps
  2. Team leaders' experience and effectiveness
  3. Continuous delivery.
  4. The ability of different disciplines (development, operations, and infosec) to achieve win-win outcomes
  5. Organizational performance
  6. Deployment pain
  7. Lean management practices.

Adoption of DevOps success factors include:

  • Use of agile and other development processes and methods
  • Demand for an increased rate of production releases – from application and business unit stakeholders
  • Wide availability of virtualized and cloud infrastructure – from internal and external providers
  • Increased usage of data center automation and configuration management tools;
  • Increased focus on test automation and continuous integration methods
  • A critical mass of publicly available best practices.

## ToDo ##

  • Continuous Integration/Continuous Delivery (CI/CD)
  • Infrastructure as Code (IaC)
  • Configuration Management
  • Automated Testing
  • Continuous Monitoring and Feedback
  • Deployment Pipelines
  • Version Control and Source Code Management (SCM)
  • DevOps Culture and Collaboration
  • Agile Development and Scrum Methodology
  • Cloud Computing and Multi-Cloud Strategy
  • Containerization and Orchestration (Docker, Kubernetes)
  • Microservices Architecture
  • Serverless Computing
  • DevOps Tools (Jenkins, GitLab, Ansible, Chef, Puppet, etc.)
  • Security and Compliance in DevOps
  • Site Reliability Engineering (SRE)
  • Observability and Monitoring Tools
  • DevOps Metrics and Performance Optimization
  • DevOps Automation and Scripting (Bash, Python, etc.)
  • method/devops.txt
  • Last modified: 2023/08/17 08:20
  • by Henrik Yllemo