Observability-Driven Development

Table of content

Get started with Tracetest today

Get started with Tracetest today

What is Observability-Driven Development (ODD)?

Observability-Driven Development (ODD) involves the practice of concurrently developing software and its associated observability mechanisms. This approach consists of deploying backend services while simultaneously monitoring the system's behavior over time. By doing so, developers gain insights into the system's vulnerabilities, providing guidance for subsequent development stages.

In contrast to exhaustive fault coverage, ODD ensures that weaknesses are observable in the production environment rather than preemptively addressed during development.

ODD's core lies in distributed tracing, which traces the journey of an HTTP request as it traverses applications and APIs within a cloud-native infrastructure. Each step in this trace is represented as a "span," with the option to include assertions, testable values that ascertain the success or failure of each span. Unlike conventional API tools, trace-based testing assesses the system response alongside trace outcomes.

Leveraging distributed tracing within ODD yields substantial advantages, empowering you and your team to:

  • Easily understand the entire lifecycle of an HTTP request as it navigates your distributed infrastructure, pinpointing points of success or failure.
  • Uncover new issues or formulate new tests without prior system knowledge or the need for additional code deployment.
  • Address performance concerns at the code level.
  • Execute trace-based tests directly within the production environment.
  • Identify and troubleshoot "unknown unknowns," issues that might elude even a sophisticated Test-Driven Development (TDD) process.

Why is Observability-Driven Development Important?

Focusing on Observability from the very beginning gives you several advantages, including distributed tracing. This proactive approach ensures that the foundation for wholistic insights and streamlined troubleshooting is established from the beginning, yielding efficiencies and foresight throughout the development lifecycle.

Related articles on Observability-Driven Development