DevOps Introduction

  • TODO: DEVOPS OVERVIEW GRAPHIC

What is DevOps

The DevOps cycle is an agile, iterative approach to creating and maintaining software.

DevOps is not about creating a team. DevOps is about bringing different teams of people together, but it is best thought of as a set of practices, and, perhaps more importantly, a culture built around collaboration between development, quality assurance, and operations teams.

This brings us back to our definition of what DevOps is. When you define something using values, principles, and practices, the definition of what that thing is and the perception of what something means will have variability.

In other words to define what DevOps is, an organization needs to look at the values and principles and make a determination which of those values and principles is most important to them. That definition might change over time as the organization evolves and matures.

DevOps evolved as a set of principles. Since then, it has lost some of it's original meaning; it no longer means just the principles; it now includes practices, technologies, and tools. A purist (like myself perhaps!) would argue that this is somewhat problematic, or even detrimental. However, groups and cultures often appropriate something to the extent that you no longer have much real choice but to accept the revised definition.

Isn't DevOps a Methodology?

DevOps is commonly understand as a software development approach that emphasizes collaboration and communication between software developers and IT operations professionals. As a methodology, the goal of DevOps is to reduce silos between these two teams and to enable them to work together more effectively in order to deliver software faster and more reliably. This is typically achieved by implementing agile practices, automating processes, and using tools and technologies that enable collaboration and continuous delivery. DevOps also seeks to improve the overall quality of software by encouraging practices such as testing, monitoring, and infrastructure as code. By doing so, organizations can improve the speed and reliability of their software development process, resulting in faster time-to-market and better customer satisfaction.

Why is it important to define DevOps?

DevOps helps organizations to improve the speed and reliability of their software development process, which can result in faster time-to-market and better customer satisfaction. By breaking down silos between development and operations teams and promoting collaboration and communication, DevOps enables organizations to deliver software faster and more reliably.

Because of this, it's important to define DevOps so that all of the stakeholders understand the goals and objectives. Without understanding what DevOps is, it's possibly for organizations to think that by automating processes and using tools and technologies that enable continuous delivery, magically they have "achieved DevOps" and they are done.

Rather, by encouraging practices such as testing, monitoring, and infrastructure as code, DevOps needs to be understood as a way to achieve continual improvements to the overall quality of software and improved collaboration and communication between teams. The end result is fewer defects, decreased outages or downtime, and improved user satisfaction.

DevOps Principles

DevOps has a number of principles at its core:

  • Foster a Collaborative Environment
  • Impose End-to-End Responsibility
  • Encourage Continuous Improvement
  • Automate (Almost) Everything
  • Focus on the Customer's Needs
  • Embrace Failure and Learn from it
  • Unite Teams and Expertise

DevOps Practices

  • DevOps culture is about cross-functional collaboration between Dev, Ops, and QA roles.
  • The DevOps technical environment is created, reviewed, and agreed upon by stakeholders including Dev, Ops, and QA.
  • Change to DevOps technical environment follow a phased approach; the same approach that other apps and systems follow, going through Proof-of-Concept (PoC), testing, and production phases. This is done to ensure changes do not impact DevOps operations.
  • Continuous Integration (CI). Code check-ins trigger automated software build and test.
  • Errors and failures are logged and dev staff is notified.
  • Elastic infrastructure.
  • Continuous monitoring and automated alerting.
  • Automated Dev and Ops KPIs (Key Performance Indicators).
  • Dev and Ops responsible for security. Cybersecurity accountable.

DevOps Cycle

References